Hello
I returned to your suggestion. I couldn’t safely use @ sajesh_pj solution because I don’t quite understand it 
The implementation of your variant turned out to be not very complicated and it is easy to transfer it between different types of elements. In the example below, I create a weld for a 4-plate beam.
Additional useful example
Also I used this to create steel plates (added chamfer editing).
In the code example, I delete the element, then create a new one, maybe in the future I will make it editable, but at this stage it is simpler.
Code

Usefull link:
using System;
using System.Collections;
using System.Collections.Generic;
using Rhino;
using Rhino.Geometry;
using Grasshopper;
using Grasshopper.Kernel;
using Grasshopper.Kernel.Data;
using Grasshopper.Kernel.Types;
using System.Linq;
using System.IO;
//You need to add this files to references in the c# node
using Tekla.Structures;
using Tekla.Structures.Model;
using Tekla.Structures.Geometry3d;
private void RunScript(List<System.Object> BottomBeamIn, List<System.Object> SideBeamIn1, List<System.Object> SideBeamIn2, List<System.Object> TopBeamIn, List<int> Position, int size, ref object WeldOut)
{
var Filepath = @"C:\WeldOuterRingGUID.txt";
var GUIdList = new List<string>();
var WeldList = new List<Weld>();
//GUID from file to list in script and clear file
var sr = new StreamReader(Filepath);
GUIdList.Add(sr.ReadLine());
var m = 0;
while (GUIdList[m] != null)
{
GUIdList.Add(sr.ReadLine());
m++;
}
sr.Close();
File.WriteAllText(Filepath, String.Empty);
//Choose all WELD
Model Model = new Model();
ModelObjectEnumerator Objects = Model.GetModelObjectSelector().
GetAllObjectsWithType(ModelObject.ModelObjectEnum.WELD);
// Here just change to another type
//Comparison all weld to GUID and choose it, save it to weldList
var counter = 0;
foreach (Weld obj in Objects)
{
for (var i = 0; i < GUIdList.Count - 1;i++)
{
bool a = obj.Identifier.GUID.ToString() == GUIdList[i];
if(obj != null && a)
{
WeldList.Add(obj);
counter += 1;
break;
}
}
if (counter == (GUIdList.Count - 1))
break;
}
//Delete old weld
foreach (var obj in WeldList)
{
obj.Delete();
}
var SideBeamList1 = new List<Beam>();
Changer(SideBeamIn1, SideBeamList1);
var SideBeamList2 = new List<Beam>();
Changer(SideBeamIn2, SideBeamList2);
var TopBeamList = new List<Beam>();
Changer(TopBeamIn, TopBeamList);
var BottomBeamList = new List<Beam>();
Changer(BottomBeamIn, BottomBeamList);
Welder(TopBeamList, SideBeamList1, WeldList, Position, false, size);
Welder(TopBeamList, SideBeamList2, WeldList, Position, true, size);
Welder(SideBeamList1, BottomBeamList, WeldList, Position, false, size);
Welder(SideBeamList2, BottomBeamList, WeldList, Position, true, size);
//GUID to file
StreamWriter sw = new StreamWriter(Filepath, true);
foreach (var obj in WeldList)
{
sw.WriteLine(obj.Identifier.GUID);
}
sw.Close();
//Update model and send plates out of script
WeldOut = WeldList;
new Tekla.Structures.Model.Model().CommitChanges();
}
// <Custom additional code>
private void Changer (List<object> listA, List<Beam> listB)
{
foreach (var e in listA)
listB.Add(e as Tekla.Structures.Model.Beam);
}
private void Changer (List<object> listA, List<ContourPlate> listB)
{
foreach (var e in listA)
listB.Add(e as Tekla.Structures.Model.ContourPlate);
}
private void Changer (List<object> listA, List<Weld> listB)
{
foreach (var e in listA)
listB.Add(e as Tekla.Structures.Model.Weld);
}
private void Welder (List<Beam> MainPartList, List<Beam> SecPartList, List<Weld> WeldList, List<int>Position, bool mirorPos, int size)
{
for (int i = 0; i < MainPartList.Count;i++)
{
int posLocal = 0;
var Weld = new Weld();
Weld.MainObject = MainPartList[i];
Weld.SecondaryObject = SecPartList[i];
Weld.ShopWeld = true;
Weld.AroundWeld = false;
if (mirorPos)
{
if (Position[i] == 1 || Position[i] == 3)
posLocal = Position[i] + 1;
else if (Position[i] == 2 || Position[i] == 4)
posLocal = Position[i] - 1;
else posLocal = Position[i];
Weld.Position = (Weld.WeldPositionEnum) posLocal;
}
else
{
Weld.Position = (Weld.WeldPositionEnum) Position[i];
}
Weld.TypeAbove = BaseWeld.WeldTypeEnum.WELD_TYPE_FILLET;
Weld.TypeBelow = BaseWeld.WeldTypeEnum.WELD_TYPE_NONE;
Weld.SizeAbove = size;
Weld.SizeBelow = 0;
Weld.Insert();
WeldList.Add(Weld);
}
}
I hope it can help for other people. This forum is so helpful, thanks everybody 