C#中绘制三维模型的方法——面面拉伸
绘制三维模型时,先根据点画出面,通过面与面之间的连接绘制出形体。适用于一些不规则的形体绘制,比如四棱锥,先计算出上下底面点的坐标,即可以使用面面拉伸绘制出四棱锥。
//初始化面容器
List<CurveVector> curves = new List<CurveVector>();
//初始化点容器并定义连接点
List<DPoint3d> points1 = new List<DPoint3d>() { pnt1, pnt2, pnt3, pnt4, pnt5, pnt6, pnt7, pnt8 };
List<DPoint3d> points2 = new List<DPoint3d>() { pnt1_, pnt2_, pnt3_, pnt4_, pnt5_, pnt6_, pnt7_, pnt8_ };
//根据连接点绘制第一个面
CurveVector curve1 = CurveVector.CreateLinear(points1, CurveVector.BoundaryType.Outer, false);
//根据连接点绘制第二个面
CurveVector curve2 = CurveVector.CreateLinear(points2, CurveVector.BoundaryType.Outer, false);
//将绘制的面放到面容器里
curves.Add(curve1);
curves.Add(curve2);
//转换为拉伸工具需要的类型
DgnRuledSweepDetail date = new DgnRuledSweepDetail(curves, true);
//拉伸形体
SolidPrimitive sweepsolid = SolidPrimitive.CreateDgnRuledSweep(date);
//将类型转化为Element
Bentley.DgnPlatformNET.Elements.Element sweepelement = Bentley.DgnPlatformNET.Elements.DraftingElementSchema.ToElement(Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModel(), sweepsolid, null);
//将element类型转化为elementholder
//elementholder sweepelementholder = jyx_zyjc_clr.publicmethod.converttoelementholder(sweepelement.elementhandle);
//holder.add(sweepelementholder);//添加形体