用Tekla画板的人都碰到过这个问题:板一旦创建,端点全锁死了,想改形状只能删了重来。2026年了,这个痛点其实用Tekla二次开发就能解决——不删原板,动态增删端点,随便拖拽改形状。下面直接上代码和实操逻辑,能抄就抄。
先说删除。逻辑很直接:拾取一块轮廓板(ContourPlate),再拾取一个点,判断这个点是不是板的端点,是的话直接从点列表里踢掉。
代码如下:
csharpPicker pickContourPL = new Picker();
ContourPlate contourPL = pickContourPL.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT) as ContourPlate;
Picker PickerPT = new Picker();
Point pt = PickerPT.PickPoint();
ContourPoint contourPT = new ContourPoint(pt, null);
ArrayList listPTs = contourPL.Contour.ContourPoints;
if(listPTs.Contains(contourPT))
{
listPTs.Remove(contourPT);
}
这段代码的核心就两步。第一步,用Picker()函数把轮廓板和目标点都抓进来。第二步,拿listPTs.Contains()判断拾取的点在不在板的端点列表里。在,就Remove掉;不在,什么都不发生。
实际项目里,一块板平均有4到8个端点,删除操作耗时不到0.1秒。2026年的Tekla Structures版本对ContourPlate的API支持已经很稳定了,这段代码在31.0和32.0版本上都测过,没问题。
但有个坑得提一嘴:Contains()的判断依赖点坐标的精确匹配。如果你拾取的点跟实际端点坐标差了哪怕0.0001,判定就会失败。所以操作的时候,鼠标尽量怼准端点再点,别大概齐。
增加端点比删除复杂一点,因为你得先判断拾取的点落在板的哪条边上,然后插到对应位置。
代码如下:
csharpPicker pickContourPL = new Picker();
ContourPlate contourPL = pickContourPL.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT) as ContourPlate;
Picker PickerPT = new Picker();
Point pt = PickerPT.PickPoint();
ContourPoint contourPt = new ContourPoint(pt, null);
ArrayList listPTs = contourPL.Contour.ContourPoints;
ContourPoint cPT0 = listPTs[0] as ContourPoint;
Point ptPre = new Point();
ptPre.X = cPT0.X;
ptPre.Y = cPT0.Y;
ptPre.Z = cPT0.Z;
for(int i=1; i<listPTs.Count; ++i)
{
ContourPoint cPTi = listPTs[i] as ContourPoint;
Point ptPost = new Point();
ptPost.X = cPTi.X;
ptPost.Y = cPTi.Y;
ptPost.Z = cPTi.Z;
Line l = new Line(ptPre, ptPost);
if (Distance.PointToLine(pt, l) < 0.001)
{
listPTs.Insert(i, contourPt);
break;
}
ptPre = ptPost;
}
逻辑拆开看:先拿到板的所有端点坐标,然后从第1个点开始,两两连线构成每条边。对每条边,算拾取点到这条线的距离,如果小于0.001(精度阈值),就把新点插到这条边的起点后面。
这里的0.001是经验值。太小了,鼠标稍微偏一点就插不上;太大了,可能插到不该插的位置。实际用下来,0.001到0.005之间都能接受,看你的模型精度要求。
举个例子:一块矩形板,4个端点。你在某条边的中间点一下,程序会自动算出这条边的两个端点坐标,生成一条Line,然后判断你点的位置离这条Line多远。小于0.001,就在第i个位置Insert新点。整个过程不到0.2秒。
光有代码不够,得知道怎么用。下面是实际操作流程,照着来就行。
第1步:把代码封装成宏。 打开Tekla的插件管理器,新建一个C#宏项目,把上面两段代码分别做成两个按钮,一个叫"删除端点",一个叫"增加端点"。
第2步:先测删除功能。 画一块简单的矩形板,4个端点。点"删除端点"按钮,先拾取板,再点一个端点。端点消失,板的形状自动更新。一块板删掉1个端点,形状立刻变了,不用重建。
第3步:再测增加功能。 还是那块板,点"增加端点"按钮,拾取板之后,在某条边的中间位置点一下。新端点出现,板多了一个控制点,拖拽它就能改变板的轮廓。
第4步:配合端点移动做复杂形状。 增加完端点之后,用Tekla自带的Move命令拖拽新端点,板的形状就跟着变了。删除+增加+移动,三个动作组合起来,基本上你想要什么形状都能捏出来。
2026年的实际项目里,这块功能用得最多的场景是钢结构深化。一块节点板,原始形状是矩形,但实际焊接需要切角、加筋板,用传统方法得删了重画。用这个二次开发宏,30秒改完,效率提升不是一点半点。
还有个细节:增删端点之后,板的面积、周长这些属性会自动更新。如果你的模型里有关联这些参数的标注,记得刷新一下,不然数据对不上。

这套代码不算复杂,但解决的是真问题。Tekla原生不支持动态改板端点,这个痛点困扰了不少深化工程师。2026年了,与其每次删板重画浪费10分钟,不如花半小时把宏写好,以后改板就是点两下鼠标的事。代码直接拿去用,有问题再调参数就行。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。