创建的圆形只要圆心不在(0,0,0),就无法扫描成体?
double UorPerMas = Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster; //创建 List<Element> listEle = new List<Element>(); Bentley.GeometryNET.CurveVector curve = Bentley.GeometryNET.CurveVector.Create(Bentley.GeometryNET.CurveVector.BoundaryType.Outer); DgnModel dgnModel = Session.Instance.GetActiveDgnModel(); //轮廓 Bentley.GeometryNET.DPoint3d ptCenter = new Bentley.GeometryNET.DPoint3d(0, -30 * UorPerMas, 0); //圆心三维坐标 Bentley.GeometryNET.DEllipse3d de = new Bentley.GeometryNET.DEllipse3d(ptCenter, new Bentley.GeometryNET.DVector3d(0, 0, 0), new Bentley.GeometryNET.DVector3d(0, -30 * UorPerMas, 30 * UorPerMas), Bentley.GeometryNET.Angle.Zero, Bentley.GeometryNET.Angle.FromRadians(System.Math.PI * 2)); CurvePrimitive lk = CurvePrimitive.CreateArc(de); curve.Add(lk); //拉伸路径 Bentley.GeometryNET.DSegment3d ds = new Bentley.GeometryNET.DSegment3d(new Bentley.GeometryNET.DPoint3d(0, -30 * UorPerMas, 0), new Bentley.GeometryNET.DPoint3d(100 * UorPerMas, -30 * UorPerMas, 0)); Bentley.GeometryNET.CurvePrimitive cp = Bentley.GeometryNET.CurvePrimitive.CreateLine(ds); Bentley.GeometryNET.CurveVector path = Bentley.GeometryNET.CurveVector.Create(Bentley.GeometryNET.CurveVector.BoundaryType.Open); path.Add(cp); //扫描成体 Bentley.DgnPlatformNET.SolidKernelEntity resultske = null; Bentley.DgnPlatformNET.Create.BodyFromSweep(out resultske, curve, path, Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModelRef(), true, true, false, null, null, null, null); Bentley.DgnPlatformNET.Elements.Element solid = Bentley.DgnPlatformNET.Elements.DraftingElementSchema.ToElement(Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModel(), resultske, null); Bentley.DgnPlatformNET.ElementPropertiesSetter elePropSet = new Bentley.DgnPlatformNET.ElementPropertiesSetter(); elePropSet.SetColor(nColorIndex); elePropSet.Apply(solid); listEle.Add(solid); //创建Cell Bentley.GeometryNET.DPoint3d ptOri = new Bentley.GeometryNET.DPoint3d(); Bentley.GeometryNET.DMatrix3d rMatrix = Bentley.GeometryNET.DMatrix3d.Identity; Bentley.GeometryNET.DPoint3d ptScale = new Bentley.GeometryNET.DPoint3d(1, 1, 1); Bentley.DgnPlatformNET.Elements.CellHeaderElement cellHeaderEle = new Bentley.DgnPlatformNET.Elements.CellHeaderElement(dgnModel, "test", ptOri, rMatrix, listEle); cellHeaderEle.AddToModel();
想知道用BodyFromSweep函数创建扫描体时,使用的轮廓和路径有些什么限制。
轮廓要位于路径的起点且其法向和路径起点的切方向一致。
请问付老师,我的代码满足要求为什么还是无法生成呢?
我们查找问题的基本方法是要保证每一步结果的正确性。我将你代码中生成的profile和path作为元素添加到模型中后,这个圆是一条直线,非法的。请再仔细查看一下你的代码。
Answer Verified By: Dongyu Zhao