1. 简介
在特定应用场景下,需要对于一个拓扑面(TopoDS_Face)其进行补洞或打洞操作,如下图所示。补洞或打洞过程中需要获取面的环线(TopoDS_Wire),本文即介绍如何获取拓扑面的环线及其基本原理。
2. 获取内外环方法
OCC提供直接获取外环线的方法:
但并未提供直接获取内环线的方法,当然可以根据已获得外环线简介得到所有的内环线。一个思路是:首先获取面上的所有环线的集合以及 “外环线”,然后从所有所有环线集合中去除 “外环线” 即可得到所有的内环线。获取拓扑面内环线方法参考代码如下:
其中用到拓扑模型遍历时常用的方法 TopExp::MapShapes,遍历拓扑模型中指定类型的子拓扑类型,并将其存储在关联容器 M 中,如下所示。
3. OCC获取外环线基本原理
3.1. 如何区分内外环
对于拓扑面而言,在计算几何以及OCC的拓扑表达中,定义面的内部、外部以及环线的方向是有一定准则的,即在面的参数域内,沿着环线正方向前进左侧为面内、右侧为面外。如下示意图所示:
逆时针方向的环线为外环线,顺时针方向的环线为内环线。
3.2. 算法流程
浏览OCC源码,探究获取模型外环的原理。
其中的 “计算多边形有向面积totcross” 以及判断 “totcross>0”,其原理是:基于向量叉乘算法可得,在平面上,逆时针方向的多边形面积为正、顺时针方向的多边形面积为负。可参考博文
对应的OCC算法调用步骤为:
以上主要针对一个合法有效的拓扑面模型而言,实际算法中还包括特殊异常处理,感兴趣可进一步深挖。
4. 参考资料
1. Open Cascade 7.7.0 Beta:
2. 多边形面积计算:
原文地址:http://www.cnblogs.com/mechanicoder/p/16878903.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性