欢迎光临散文网 会员登陆 & 注册

使用OpenCASACDE库实现HyperMesh中的toggle edge功能

2023-04-21 18:30 作者:NagahashiKout  | 我要投稿

概述

在HyperMesh的几何清理模块中,Quick Edit面板下的toggle edge功能非常强大,在HyperMesh帮助文档中的解释如下:

Use the lines selector to select line(s).

  • Left-click a free edge (red) to make it shared (green), or a shared edge to make it suppressed (blue).

  • Right-click a suppressed edge to make it shared, or a shared edge to make it free.

In either case, the edge must meet the criteria for the type of edge you wish to change it to. For example, toggling a free edge to a shared edge requires the presence of a similar edge within the distance you specify in the tolerance field.

其主要作用就是在容差参数的控制下,实现free edge、shared edge 和 suppressed edge之间的正向或逆向转换,逻辑非常清晰、易懂。其中shared edge还分为共享边和T型边,这里不做讨论。

  • OpenCASCADE版本:OpenCASCADE-7.4.0-vc14-64

  • Visual Studio版本:Visual Studio Community 2017

  • HyperMesh版本:Altair HyperWorks Version 2020


1. HyperMesh中的toggle edge功能


OpenCASCADE中的free edge和shared edge

从free edge和shared edge的定义可知,free edge只和一个面相关,而shared edge则由两个面共享。因此在OpenCASCADE中我们只需要知道这个edge和几个面相关就可以对它进行判断。示例代码如下:

2. OpenCASCADE中的free edge


shared edge 到 free edge的转换

想要实现从shared edge 到 free edge的转换可以借助OpenCASACDE中的BRepBuilderAPI_Copy 和 BRepTools_ReShape 两个类,主要思路是复制这个shared edge,并使用这个复制出来的edge去替代与这个shared edge相关的两个surface其中之一的对应的edge,这样这个原来的shared edge就变成了两个free edge。代码如下:

这里的关键点在于使用复制出来的edge去替换时应该只应用于其中一个Face,把得到的新的Face再次进行替换之后再应用到整个模型。


从free edge 到 shared edge的转换

把两个 free edge 转换为 shared edge,即把两个有重合edge的TopoDS_Face通过某种方式转化为TopoDS_Shell,在OpenCASCADE中已经提供了这样的类:BRepBuilderAPI_Sewing,使用方法如下:


3. OpenCASCADE中的shared edge


总结

借助BRepBuilderAPI_Copy 和 BRepTools_ReShape我们可以实现从shared edge 到 free edge的转换,而使用BRepBuilderAPI_Sewing可以使两个 free edge 转换为 shared edge。对 suppress 和 unsuppress 两个功能的实现还需要进一步探究。


参考

  1. https://dev.opencascade.org/content/sewing-faces-keep-track-sewed-faces

  2. https://dev.opencascade.org/content/local-sewing-opencascade


使用OpenCASACDE库实现HyperMesh中的toggle edge功能的评论 (共 条)

分享到微博请遵守国家法律