老师好:
在布尔运算的时候遇到了以下问题:
有元素Ele1,Ele2,Ele3,先用Ele1和Ele2做布尔运算,结果为res1,用res1.replace ele1。
此时MS显示Ele没有布尔运算的痕迹,只显示智能实体。而且再次用Ele1和Ele3做布尔运算的时候提示不在工作区域。
三个Ele的大小都不超过100米,所以元素没有问题。想知道是不是布尔运算的问题。
请问这是什么问题呢?
Bentley.DgnPlatformNE.SolidUtil接口创建的实体都是您图中看到的智能实体(SmartSolid),智能实体不会保存创建过程,您说的创建痕迹指的是参数化实体(ParametricSolid),参数化实体有另外一套编程接口,不过c#的接口封装的不全,c/c++的接口相对完整一些,具体如何使用可参考SDK带的这个例子:C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\Elements\exampleSolids,不过使用起来比SmartSolid的接口要复杂一些。至于检查实体工作区域的问题,请提供一下相应的dgn文件供我们分析。
郭老师,我可以用邮箱把dgn文件连同插件一起发给您吗
您是不是弄错顺序了,从长方体上减去球体是可以的,但是从球体上减去长方体是不行的,因为结果是一个非法体。
老师,为什么时非法体呢?
请看这篇wiki:三维实体建模的限制中的第三条。
Answer Verified By: 居凯 张
我明白了,是因为长方体和球存在一个共同边,但是这个是不能避免的,因为我需要实现的功能就是逐步从球体中挖掘,所以一定会存在共同边,请问这种有办法解决吗
这个不太好处理,如果对精度没太高要求的话可以换成Mesh元素,Mesh没有像SmartSolid那样那么多要求。或者就是把体分成若干个部分去处理。