使用ORD打开CAD的平面图以后,发现CAD里面的线元素在ORD里面会有两种类型:
一种是Line,另一种是Complex Chain。
因为我需要根据获取的元素类型来进行下一步的操作,请问这两种类型有什么区别?Complex Chain可以认为是多段线么?
fanghua wei said:我尝试用如下方法去获取,但是获取不到线段信息: CurveVector cveVec = CurvePathQuery.ElementToCurveVector(element); cveVec.GetStartEnd(out DPoint3d sP, out DPoint3d eP); List<DPoint3d> ptList = new List<DPoint3d>(); if (cveVec.GetPrimitive(0).TryGetLineString(ptList)) // ptList长度为零 { }
我尝试用如下方法去获取,但是获取不到线段信息:
CurveVector cveVec = CurvePathQuery.ElementToCurveVector(element); cveVec.GetStartEnd(out DPoint3d sP, out DPoint3d eP); List<DPoint3d> ptList = new List<DPoint3d>(); if (cveVec.GetPrimitive(0).TryGetLineString(ptList)) // ptList长度为零 {
}
您获取的起点和终点应该是对的吧?只是说ptList长度为零了,这是因为您这条复杂链的第一段是一条Line,而不是LineString,您换成TryGetLine试试。
好的,我试试。我还有一个问题,我的dwg里面还有这两种元素:
他们的类型分别是Ellipse和SharedCellInstance
我想要分别获取他们的中心点,请问要怎么做?
对于Ellipse(椭圆)这种元素类型,可以从CurveVector获得其第一个元素CurvePrimitive,进而再从CurvePrimitive调用GetArc得到一个DEllipse对象,这个里面就有圆心点了。
而对于SharedCellInstance,它是共享单元的实例,直接从SharedCellElement对象下调用GetSnapOrigin和GetTransformOrigin看看获得的点是否是您想要的。
好的,感谢付老师,我去试试。
付老师,我试了下您说的GetArc方法,却是能获取到中心点,但是存在一个问题。
我通过DEllipse3d获取到的中心点的坐标值与屏幕上拾取的中心点坐标值不一致,好像正好大了十倍:
请问这可能是什么问题呢?