初探QT+OSG+OCC的CAD平台之GMSH划分后以按面获取相应的点与单元

19 篇文章 31 订阅
18 篇文章 9 订阅

之前集成gmsh的过程中,采用的方式是直接获取划分网格后的所有的点以及单元ID,然后根据这些点信息组装起来,这样处理没有也是正常的,但是没法找到面对应的点与单元,因此,我花了一个晚上的时间重新看了gmsh的文档,修改了原来获取总点数和总单元的方式,采用按面来获取,然后逐个面渲染处理,话不多说,直接介绍核心代码:

第一是获取所有的实体:

std::vector<std::pair<int, int> > entities;
 gmsh::model::getEntities(entities);

第二是遍历entities,得到它的点和单元信息“

int dim = entities[i].first, tag = entities[i].second;
 gmsh::model::mesh::getNodes(nodeTags, nodeCoords, nodeParams, dim, tag);gmsh::model::mesh::getElements(elemTypes, elemTags, elemNodeTags, dim, tag);

第三步就是渲染了,可以参考我之前的博客,写了具体代码,如此就能按面显示出来了,看下OSG中的显示效果吧(每个面着色处理用于区分):

先来看下原模型显示:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16 

 

 划分下效果如下(参数随意设置效果):

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5r2H5rmY5pWj5a6i,size_20,color_FFFFFF,t_70,g_se,x_16 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值