ORD旗舰版中, 怎么把Element元素转为CIM元素? 请各位老师多多指点

ORD旗舰版中, 怎么把Element元素转为CIM元素? 请各位老师多多指点

Parents
  • CIM元素也是MS Element元素的一种,您说的转CIM元素,是有哪方面的需求?

  • 老师, 我是想用shape求交集, 然后做CIM注释单元, 但是现在求完交集后, 不知道怎么转为CIM元素了

  • 老师, Assert是哪个引用里的, 麻烦提供一下, 谢谢

  • 符老师, 我试了下, 您这个方法绘制出来的不是我想要的, 不知道是不是我的代码有问题, 请老师帮忙看看

            //形状
            public void ShapeAndComplexShape()
            {
                DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
                DPoint3d[] ptArr = new DPoint3d[6];
                ptArr[0] = new DPoint3d(0 * UOR, -6 * UOR, 0 * UOR);
                ptArr[1] = new DPoint3d(0 * UOR, -2 * UOR, 0 * UOR);
                ptArr[2] = new DPoint3d(2 * UOR, -2 * UOR, 0 * UOR);
                ptArr[3] = new DPoint3d(2 * UOR, -4 * UOR, 0 * UOR);
                ptArr[4] = new DPoint3d(4 * UOR, -4 * UOR, 0 * UOR);
                ptArr[5] = new DPoint3d(4 * UOR, -6 * UOR, 0 * UOR);
                ShapeElement shapeEle = new ShapeElement(dgnModel, null, ptArr);
    
                // 元素属性设定器
                ElementPropertiesSetter elePropSet = new ElementPropertiesSetter();
                elePropSet.SetColor(0);
                elePropSet.SetWeight(2);
                elePropSet.Apply(shapeEle); //应用到元素上
                //把元素添加到模型
                shapeEle.AddToModel();
    
                for (int i = 0; i < 6; i++)
                    ptArr[i].X += 5 * UOR;
                CurvePrimitive curvePri = CurvePrimitive.CreateLineString(ptArr);
                //曲线向量                       Create(边界类型)
                CurveVector curVec = CurveVector.Create(CurveVector.BoundaryType.Outer);
                curVec.Add(curvePri);
                ptArr[2].Y = -8;
                DEllipse3d ellipse = new DEllipse3d();
    
                //试着从中心开始绘制圆弧
                //TryCircularArcFromCenterStartEnd(DPoint3d centerPoint, DPoint3d startPoint, DPoint3d endPoint, out DEllipse3d result);
                if (DEllipse3d.TryCircularArcFromCenterStartEnd(ptArr[2], ptArr[5], ptArr[0], out ellipse))
                {
                    curvePri = CurvePrimitive.CreateArc(ellipse);
                    curVec.Add(curvePri);
                    //DraftingElementSchema:绘图元素架构
                    Element eleTemp = DraftingElementSchema.ToElement(dgnModel, curVec, null);
    
                    List<DPoint3d> ptt = new List<DPoint3d>();
                    //resultCV.GetPrimitive(0).TryGetLineString(pts);
                    foreach (CurvePrimitive cp in curVec)
                    {
                        List<DPoint3d> pts = new List<DPoint3d>();
                        cp.TryGetLineString(pts);
                        ptt.AddRange(pts);
                    }
    
                    CimShapeElement sha = new CimShapeElement(ptt, modelRef);
                    sha.SaveToModel();
    
                    //CimCurveElement element = new CimCurveElement(ptt, modelRef);
                    //element.SaveToModel();
    
                    //////eleTemp.AddToModel();
                    //elePropSet.SetColor(1);
                    //elePropSet.SetWeight(2);
                    //elePropSet.Apply(eleTemp); //应用到元素上
                    //eleTemp.AddToModel();
                }
    
                //resultCV.GetPrimitive(0).TryGetLineString(pts);
            }

  • 宁工:您好!

    DGN中的ShapeElement(或CimShapeElement)都是用来表达只有直线段边的封闭形状的,不能用来表达带有弧段边的。要表达带有弧段边的,需要改用ComplexShapeElement(或CimComplexShapeElement)

    那么如何构造一个CimComplexShapeElement呢?可以:

    ①new CimComplexShapeElement

    ②构造单段的CimLineElement、CimArcElement或CimLineStringElement

    ③调用CimComplexShapeElement下的AddComponentElement将该单段Cim元素添加到①中创建的ComplexShape中

    ④重复②和③这两个步骤添加多段边,直到复杂形元素封闭为止

    ⑤调用CimComplexShapeElement下的AddComponentComplete结束子元素的添加。

    ⑥将该CimComplexShapeElement添加到模型中



  • Assert是哪个引用里的, 麻烦提供一下, 谢谢

    这个不是Bentley的东西,是标准C# 中的。

    用VS中的Object Browser(对象浏览器)可查询任何不了解的函数的情况。如下图所示:

    百度这个Assert也能找到很多介绍性的文章:



Reply Children
No Data