[OPM CE C#]圆形扫描成体,BodyFromSweep函数的使用限制。

创建的圆形只要圆心不在(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函数创建扫描体时,使用的轮廓和路径有些什么限制。

Parents Reply Children
No Data