通常创建一个板后
板的所有端点已经固定
如果想改变形状只能删了重新造
使用Tekla二次开发
可以在不删除原板的情况下
动态的增加删除端点
再配合端点的移动可以任意改变板的形状!
一、代码
Picker 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()获得轮廓板(ContourPlate)和轮廓点(ContourPoint)数据 。
如果拾取的轮廓点在轮廓板的点列表中,说明是板的一个端点,使用函数 Remove 删除它。
02 增加板端点
一、代码
Picker 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) //暂时将精度设为0.001
{
listPTs.Insert(i, contourPt);
break;
}
ptPre = ptPost;
}
二、主要逻辑说明
通过拾取函数Picker()获得轮廓板(ContourPlate)和拾取点(ContourPoint)数据 。
遍历板轮廓的所有的线,根据点到线的距离判断拾取点是否在轮廓上,最后使用 Insert 函数完成点的插入工作。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删