首页 > 系统相关 >OpenCASCADE-Glue Faces to Shell

OpenCASCADE-Glue Faces to Shell

时间:2022-12-05 12:32:38浏览次数:39  
标签:Shell FACE Face Edge OpenCASCADE Glue 生成


OpenCASCADE-Glue Faces to Shell_新版本

BRep边界表示法通过对几何曲面加上边界Wire限定得到有界的曲面片后,如何将曲面片连接起来生成一个闭合的Shell,进而得到一个Solid实体?以前写过如何将无序的Edge连接起来生成Wire的方法,今天介绍一下OpenCASCADE中如何将Face连接起来生成Shell。这也是我们要手工通过Vertex, Edge, Face来构造BRep的Solid必须思考和解决的问题。

OpenCASCADE-Glue Faces to Shell

1 Introduction

BRep边界表示法通过对几何曲面加上边界Wire限定得到有界的曲面片后,如何将曲面片连接起来生成一个闭合的Shell,进而得到一个Solid实体?以前写过如何将无序的Edge连接起来生成Wire的方法,今天介绍一下OpenCASCADE中如何将Face连接起来生成Shell。这也是我们要手工通过Vertex, Edge, Face来构造BRep的Solid必须思考和解决的问题。

 

2 BRepTools_Quilt

OpenCASCADE-Glue Faces to Shell_新版本_02

从类BRepTools_Quilt的注释可以看出,如果面有共用的Edge,可以使用此类来生成Shell。如何来理解共用的Edge(common edges),下面我们通过使用Draw Test Harness的Tcl脚本来进行说明。

OpenCASCADE-Glue Faces to Shell_OpenCascade_03

如上图所示的右边为Draw的Tcl脚本。先生成一个圆柱面aCylinderFace;再通过命令explode得到这个圆柱面的边Edge,分别为顶部边aCylinderFace_3和底部的边aCylinderFace_2;再分别生成顶面和底面。最后使用quilt生成了Shell,使用命令ssolid生成了Solid体。为了验证生成的BRep体是不是正确的,通过一个和一个box布尔运算来检验,结果显示正常。从这个脚本可以看出,使用类BRepTools_Quilt连接的面Face必须有共用边,上面的例子中顶面和底面的边是和圆柱面的边共用的。

3 BRepBuilderAPI_Sewing

有的情况下想要缝合成Shell的面Face并没有共用边,这时可以使用类BRepBuilderAPI_Sewing。这个类的注释中有华天软件的梅博士的名字:

OpenCASCADE-Glue Faces to Shell_边界表示_04

这个类也可以用来缝合面,大家可以在源码中搜索一下这个类名看看哪里有用到。目前看主要用到了对导入的STL文件中的三角形面进行缝合。这也是导入STL文件生成TopoDS_Shape时默认的操作,所以有很多人反应导入大一点的STL文件有点慢。目前OpenCASCADE最新版本中对于导入的STL模型也只能是显示,所以可以使用选项只生成网格模型,而不是每个三角形生成一个TopoDS_Face后再调用缝合,这样性能上要好很多。

OpenCASCADE-Glue Faces to Shell_Shell_05

这段Tcl脚本代码演示的就是没有公用边的面FACE如何生成Shell。如果这时使用quilt是得不到一个闭合的Shell的,只能使用sewing命令来缝合这三个面来生成Shell。

4 Conclusion

当我们手工从边EDGE,面FACE来构造一个BRep体时,需要考虑如何将无序的边EDGE生成WIRE,如何将无序的FACE缝合成SHELL。

在OpenCASCADE中提供了两种方式缝合面FACE生成SEHLL:如果这些面FACE有共用边EDGE,可以使用类BRepTools_Quilt;如果这些FACE没有共用边EDGE,只能使用类BRepBuilderAPI_Sewing。


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。

OpenCASCADE-Glue Faces to Shell_新版本_06




标签:Shell,FACE,Face,Edge,OpenCASCADE,Glue,生成
From: https://blog.51cto.com/eryar/5911895

相关文章

  • TinyShell(CSAPP实验)
    简介CSAPP实验介绍学生实现他们自己的带有作业控制的UnixShell程序,包括Ctrl+C和Ctrl+Z按键,fg,bg,和jobs命令。这是学生第一次接触并发,并且让他们对Unix的进程控制、......
  • MeterSphere BeanShell 前置脚本拦截请求,获取请求参数,修改后放回请求体
    在BeanShell前置脚本中拦截请求,获取请求参数,修改后放回请求体背景在测试项目时,需要对接口请求中的参数值进行首字母排序后,拼成字符串,进行md5加密,然后将加密好的字符串,......
  • MeterSphere BeanShell 前后置脚本如何引用自定义 Jar 包
    需求接口测试中需要对post请求的body参数进行排序后,进行md5加密,生成sign字符串,放入请求体中提交。思路:在前置脚本中自动获取请求参数中的值,进行sign加密,生......
  • 通过Shell脚本自动安装Hive&JDBC测试&提供CDH5网盘地址
    〇、参考地址1、Linux下编写脚本自动安装hivehttps://blog.csdn.net/weixin_44911081/article/details/121227024?ops_request_misc=%257B%2522request%255Fid%2522%253A......
  • 5.shell命令及权限理解
    Shell及权限理解本文将介绍Shell是什么以及Linux中的权限。可以想一想在我们使用计算机的过程中,我们使用图形化界面或者命令行操作与计算机进行交互,是直接与内核进行交互......
  • 如何使用PowerShell批量删除注册表项
    问题描述卸载了可牛压缩软件以后,发现右键菜单中仍然有可牛压缩的选项。不用想就知道是注册表中有该软件的残留。打开注册表,进行搜索发现在计算机\HKEY_USERS\S-1-5-21-36......
  • 手写shell脚本批量修改文件名
    作为前端开发,还原设计稿的同时,还要经常导出素材。某次活动需求上线前需要替换素材30张,导出时文件名如图,上传cdn时,需要重命名。如果一张张手动重命名,麻烦又耗时。于是想到......
  • Shell 获取指定日期的前N个季度的起止日期
    date_before_seasons.sh#!/usr/bin/envbash:<<describledesc:获取指定日期的前N个季度的日期author:Answer.AI.Ldatetime:2019-09-1116:17:39params:report......
  • shell编写循环检查脚本
    背景:如下脚本实现当微服务重启后,检查微服务的启动端口正常,可通过轮询的方式来实现所需要用到配置文件config.properties信息如下:onlineService:8001algorthService:......
  • shell读取配置文件中的参数
    shell读取配置文件中的参数配置文件配置文件config.properties如下:user=bkage=25ip=192.168.37.1 一、使用cat+awk语句过滤并赋值变量user=`catconfig.proper......