初探基于OSG+OCC的CAD之任意多个子模型进行netgen以及gmsh网格划分

此功能是对之前的网格交互操作的扩充,并无实时性的创新,此次修改是根据用于选中任意的模型树节点,通过找到该节点的所有shape后,对这些shape进行网格划分。修改实现了任意节点的隐藏、显示、高亮、消隐功能以及任意节点的网格划分功能。以网格划分为例:

核心思想是对查找到的所有的shape合并为一个新的shape,核心代码如下:

TopoDS_Shape  QFormDoc::makeOneShape(Handle(TopTools_HSequenceOfShape) theShapes)
{
    TopoDS_Shape res;
    Standard_Integer nb = theShapes->Length();
    if (nb == 0)
        return res;
    else if (nb == 1) 
        return theShapes->Value(1);
    else 
    {
        TopoDS_Compound C;
        BRep_Builder B;
        B.MakeCompound(C);
        for (Standard_Integer i = 1; i <= nb; i++)
        {
            B.Add(C, theShapes->Value(i));
        }
        return C;
    }
}

其他接口不需要变化,直接把新的shape传给netgen或者gmsh就行了,显示这些也是一样的,直接来先看下效果:

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片