5756.存在问题的模型.dgn
文件中的3D4模型中存在如图所示的两个图形,白色部分是盖在蓝色部分上的。
是采用不同方式绘制的。当我采用GetCurveVector()方法,均可以获取到蓝色部分和白色部分的CurveVector,然后当我尝试采用如下代码
CurveVector curves = CurveVector.AreaIntersection(currentCurves, curvesInJustAddedList);
对蓝色和白色元素求交时,左下角的两个图形得到的curves!=null,而右上角的两个图形得到的curves确是null。
两组图形的尺寸和元素类型均一致,还请分析一下是什么原因造成的右上角的图形求交失败?
此外针对右上角的图形,采用CurveVector下的所有方法求并、差之类的都得到的是null。
为什么同样是区域联合,有的缺不能进行平面的布尔运算呢?
因为这是不同人做的,我的程序需要处理所有类似的情况,判断两个可以转成CurveVector的元素是否有任意部分相交。
右边图形在下图所示的位置有一小段长度几乎为0的线段,应该是这个原因造成的。
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
问题不在这,您可以尝试手动把句柄拖动开,让这段直线距离不接近于零,变成了下图的样式
还是不能够求交,但是可以求Union了。之前连Union都求不了。
另外这段长度本来是0.00048m,有4.8个UorPerMaster那么长,应该不会出现问题的。
或者说,我该如何解决这样的问题,图形提供过来就是这个样子的,我该如何处理呢?
好的~我也早就遇到这种问题,但是一直不知道怎么处理~看着太难受了,都不知道是代码写错了还是提示错误
郭老师~关于这个mdlRegion_intersection函数,还有点问题,我原来用的C#函数是针对CurveVector类型进行求交,那这个mdlRegion相关的函数对入参只要求是Element,没有其他要求。请问这些相关的求交求并的函数对元素的要求是什么呢?总不能是三维的也能求交吧?
其实您用CurveVector进行求交,从程序接口方面来说也没什么要求,CurveVector也可以是三维的,如果想求朝某一个方向的投影后的区域布尔运算结果的话,也是要将参与运算的CurveVector变换一下才可以。而且还不能是仅仅变换到投影平面就行,如果投影平面跟xoy面不平行的话,还得变换到xoy平面上。所以mdlRegion_XXX函数使用时也是要注意这些问题。
嗯……我的意思,在C#代码下,调用CurveVector.AreaIntersection方法需要传入两个CurveVector类型的参数嘛,但是mdlRegion_XXX函数只要求传入Element元素就行啊,但应该不是所有的元素都能获取到CurveVector的吧?所以不知道mdlRegion_XXX对所传入的Element有什么要求呢?
有要求,线型元素(Line,Arc,ComplexChain等)围成的封闭区域,而且还必须是共面才行。