初探OSG+OpenCascade(简称:OCC)在QT上的实践之尝试集成Gmsh4.8网格划分程序

上次编译了下gmsh的VS2015 X64版本库,并进行了简单的测试,初步划分结果还是可以的。于是想利用gmesh的库集成到自己的日常程序中,关于gmsh网格参数的设置,极力推荐gmsh的PDF文件,解释非常明白,当然也可以查看源码中的commandline.cpp文件,PDF的部分截图说明如下:

 

 关于简单实用gmesh进行网格划分,上篇博客已经写了,我们只要设置一些参数选项,然后把参数传过去即可。这里,我做了简单测试,挑选了部分设置参数并集成到我的程序中,参数大致如下(并不完整):

假设网格已经划分完成,我们只需要把网格显示出来就行了,基本的思路就是获取网格单元,获取单元的坐标,最后组装下就成了。

**获取网格的所有坐标点数据:gmsh::model::mesh::getNodes(nodeTags, coord, parametricCoord, dim, tag, includeBoundary, true);

**获取网格是所有单元:gmsh::model::mesh::getElements(elementTypes, elementTags, nodeTagss, dim, tag);

部分代码参考如下:

//Gmsh网格划分,获取部分属性

//1.先获取坐标数据
    int dim = -1;
    int tag = -1;
    bool includeBoundary = false;
    vector<double> coord, parametricCoord;//coord是坐标
    vector<size_t> nodeTags;//顶点数目
    gmsh::model::mesh::getNodes(nodeTags, coord, parametricCoord, dim, tag, includeBoundary, true);
    //2.单元数据
    vector<int> elementTypes;
    vector<vector<size_t> > elementTags, nodeTagss;//nodetagss是单元ID
    gmsh::model::mesh::getElements(elementTypes, elementTags, nodeTagss, dim, tag);
    //
    gmsh::finalize();
    //
    osg::ref_ptr<osg::Geode> geode = new osg::Geode();
    osg::ref_ptr<osg::Geode> linegeode = new osg::Geode();
    //
    for (int i = 0; i < nodeTagss[1].size(); i += 3)
    {
       ................................................
        //三角形的三个点
        int id1 = nodeTagss[1][i];
        int id2 = nodeTagss[1][i + 1];
        int id3 = nodeTagss[1][i + 2];

       .............................................................

   }

使用OSG做了简单的显示,测试如下:

1.首先是step模型,显示如下:

2.简单划分下效果:

3.修改参数进行划分

总结:使用gmsh的lib库调用,能够得到划分的网格,在OSG中显示效果较好,下一步是继续理解gmesh网格参数设置的功能,进一步完善。博文如有任何问题,请您加我QQ:1623451686。恳请指正和交流。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值