• OpenCASCADE 布尔运算之元件重构


    OpenCASCADE 布尔运算之元件重构

    eryar@163.com

    布尔运算(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更多的例子可以参考文档:

  • 相关阅读:
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
  • 原文地址:https://www.cnblogs.com/opencascade/p/BOPAlgo_CellsBuilder.html
Copyright © 2020-2023  润新知