C#中繪製三維模型的方法——面面拉伸
阿新 • • 發佈:2021-01-16
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);//新增形體