OpenCASCADE 布尔运算之元件重构
OpenCASCADE 布尔运算之元件重构
布尔运算(Boolean Operations)的元件重构(Cells Builder)算法是通用合并算法(General Fuse Algorithm)的一个扩充。通用合并算法的结果包含输入Objects所有的分割部件。元件重构算法(Cells Builder Algorithm)通过指定输入Objects中分割部件的保留/去除来重构模型。实现元件重构算法的类是BOPAlgo_CellsBuilder。
为了便于快速测试元件重构算法,在DRAW Test Harness中提供了以下命令:
下面我们在Draw Test Harness中测试这个类的用法:
psphere s1 15
psphere s2 15
psphere s3 15
ttranslate s1 0 0 10
ttranslate s2 20 0 10
ttranslate s3 10 0 0
上述命令创建了三个球体:
bclearobjects
bcleartools
baddobjects s1 s2 s3
bfillds
# rx will contain all split parts
bcbuild rx
其中命令bcbuild会得到分割的所有元件,在DRAW中线框显示如下:
# add to result the part that is common for all three spheres
bcadd res s1 1 s2 1 s3 1 -m 1
命令bcadd 是用来将所有分割元件指定归属关系,从而进行模型重构,最终得到重构结果res。其中s1 1表示分割元件中属于s1,s2 1表示分割元件属于s2,s3 1表示分割元件属于s3。通过这个命令同时加入的这些归属关系表示分割元件中同时属于s1, s2和s3的部分。最终结果就是三个球体s1, s2和s3的公共部分:
# add to result the part that is common only for first and third spheres
bcadd res s1 1 s2 0 s3 1 -m 1
因为s2的后面是0,这个命令表示所有分割元件中同时属于s1和s3但不属于s2的部分:
在线框模式下,可以看到内部的一些边界:
# remove internal boundaries
bcremoveint res
bcremoveint命令可以用来去除内部边界,在线框显示模式下可以看到内部的一些边界线已经去掉:
布尔运算经过General Fuse Algorithm后,通过求交计算出所有的分割元件,经过定位分类算法Classification Algorithm得到分割元件的归属关系,最后通过元件重构算法Cells Builder Algorithm可以得到布尔运算后的结果。关于Cells Builder更多的例子可以参考文档: