ORD旗舰版中, 怎么把Element元素转为CIM元素? 请各位老师多多指点
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添加到模型中
宁小雨 said:Assert是哪个引用里的, 麻烦提供一下, 谢谢
这个不是Bentley的东西,是标准C# 中的。
用VS中的Object Browser(对象浏览器)可查询任何不了解的函数的情况。如下图所示:
百度这个Assert也能找到很多介绍性的文章:
收到, 谢谢符老师