OCCT培训笔记(刘星讲)--第1天

  • 七大模块概述
  • 1、各个package的内容记录
    • Module FoundationClasses
      • Toolkit TKernel
      • Toolkit TKMath
    • Module ModelingData
    • Module ModelingAlgorithms
    • Module Visualization
    • Module DataExchange
  • 2、造型数据结构 ModelingData Geometry
    • 2.1、曲线
    • 2.2、曲面
    • 2.3、Draw.bat的使用
    • 2.4、插值和拟合
  • 3、造型数据 ModelingData Topology
    • 3.1、两个概念
    • 3.2、为什么使用边界表示法?
    • 3.3、边界表示法的具体内容
    • 3.4、强制类型转换
    • 3.5、容器工具(实例代码略)
    • 3.6、 遍历工具(实例代码略)
    • 3.7、B-Rep实体,即实现类型
      • 1、BRep_TVertex 类的几何
      • 2、BRep_TEdge 类的几何
      • 3、BRep_TFace 类的几何
    • 3.8、B-Rep实体的精度问题
    • 3.9、BRepAdaptor包(略)
    • 3.10、BRep_Tool类
    • 3.11、特殊情况

七大模块概述

  • Foundation Classes 基础模块。被其它模块引用功能。
  • Modeling Data 建模数据。
  • Modeling Algorithm 建模算法。
  • Mesh 网格化。
  • Visualization 显示模块。
  • OCAF:Open CADCADE Application Framwork 应用程序框架。
  • Development Tool 开发工具。
  • Standardized Data Exchange 数据交换。
  • Draw Test Harness 是一个用于测试OCCT库的功能工具。

1、各个package的内容记录

  • FoundationClasses–基础类
  • Modeling Data --数据结构

Module FoundationClasses

基础模块

Toolkit TKernel

一些基本功能,包括容器,定义一下数组,没有用STL的数组。

  • Package NCollection 容器

  • Package OSD 文件读写相关
  • Package Quantity 自己重定义的量。
  • Package Units 单位转换相关
  • Package UnitsAPI 单位转换相关
  • Package Standard 类型管理
  • 其他 类型管理,智能指针,内存池,并行库的封装。

Toolkit TKMath

曲线曲面问题的求解,最底层的功能。

  • Package BSplCLib B样条曲线
  • Package BSplSLib B样条曲面
  • Package BVH 包围盒算法,加速拾取,求交点。
  • Package Bnd 包围盒相关算法。
  • Package CSLib 简单封装的曲线曲面的算法
  • Package Convert 把基本的曲线曲面转换成B样条的曲线曲面。
  • Package ElCLib 基础的曲线,直线,圆,椭圆,抛物线,双曲线。
  • Package ElSLib 基础的曲面,平面,圆柱面,圆锥面。
  • Package Expr 数学表达式求解。
  • Package ExprIntrp 数学表达式求解。
  • Package PLib 多项式的计算。
  • Package Poly 网格数据的存储。多段线的存储。三角剖分。
  • Package Precision 精度。
  • Package TColgp 各种容器类。
  • Package TopLoc 多次连续变换后,都会记录下来。
  • Package gp 常见的点、向量、圆、椭圆、圆锥面、球面,变换矩阵,四元数。
  • Package math 这个模块最核心的包。各种计算。实现各种数值算法的功能。
    • math_FunctionRoot 解一个方程的根。
    • math_BFGS 多元函数的最小化。
    • math_FunctionSet 方程组相关问题的基类。
    • math_Function 方程的基类。
      一元函数:

多元函数:

方程组:

Module ModelingData

Modeling Data为边界表示法(BRep)的3D模型提供数据结构。BRep模型是由拓扑(Topology)和几何(Geometry)来表示的。
边界表示法(Boundary Representation)也称为BRep表示。它是几何造型中最成熟、无二义性的表示法。
边界表示法详解(略,后面再详细说明)

  • Toolkit TKG2D 二维曲线曲面,表示参数空间。
  • Toolkit TKG3D 三维曲线曲面
  • Toolkit TKBRep 边界表示法
  • Toolkit TKGeomBase 对于曲线曲面的基本算法。
    • Package Extrema 求极值
    • Package Geom2dConvert 转换到B样条的曲线曲面
    • Package GeomConvert 转换
    • Package GeomProjLib 投影
    • Package IntAna 曲线曲面的求交计算。
    • Package IntAna2d 曲线曲面的求交计算。

Module ModelingAlgorithms

  • Toolkit TKBool 布尔运算
  • Toolkit TKFeat 针对机械的运算,比如倒角
  • Toolkit TKFillet 倒圆角
  • Toolkit TKGeomAlgo 几何相关的,拟合、投影、求交。
  • Toolkit TKHLR 隐藏线的消除。主要用于自动生成过程。
  • Toolkit TKMesh 用来生成显示用的网格。比如三角网格
  • Toolkit TKOffset 扫掠放样功能。
  • Toolkit TKBRepPrimAPI 常见基本形状的生成。
  • Toolkit TKShHealing 对模型的检查修复。
  • Toolkit TKTopAlog 拓扑的生成
    • Package BRepClass3d 模型的定位,是在模型内、外,还是边界上面。
  • Toolkit TKXMesh 简单的封装,可能是付费接口的兼容。

Module Visualization

用于显示和交互的模块。显示中的缩放、平移和旋转。交互中点线面的选择。模型的颜色材质和透明度等。

Module DataExchange

用于数据交互,可以看到它支持的文件格式。

  • Toolkit TKBinXCAF ocaf格式
  • Toolkit TKIGES iges格式,gltf格式
  • Toolkit TKSTEP step格式
  • Toolkit TKSTL stl格式
  • Toolkit TKVRML vrml格式

2、造型数据结构 ModelingData Geometry

非参数化几何:解析几何。不使用Handle化。对应Module FoundationClasses中的ToolKit TKMath中的几何。gp_开头的类都是非参数的几何。
参数化几何:使用Handle来处理的。对应到 Module ModelingData中的 ToolKit TKG2d和ToolKit TKG3d中的内容。
例如,Package Geom中的类对应的参数几何。根据step标准。
非参数有一些局限性,所以用参数几何。

2.1、曲线

下面是参数几何的类继承关系:

trimmed curve(裁剪曲线):就是给曲线的定义域加范围,是有界的,比如直线给范围变成线段。
offset curve(偏移曲线) :是基线加上偏移方向和距离。曲线上的每个点都有一个固定的偏移。
曲线可以得到参数对应的点和一阶导数、二阶导数和三阶导数,以及曲线连续性的类型。

2.2、曲面


Geom_SweptSurface类简单扫掠曲面,比如拉伸和选中。
不支持T样条曲面,需要基础Geom_ElementarySurface类派生后自己实现。

2.3、Draw.bat的使用

  • 调用draw.bat文件,不要用.exe文件,会自动配置环境遍历。我的没有安装好,用了exe文件,可用。
pload All //加载所有命令
help //帮着命令
cls //清空命令行
clear //清空二维显示窗口
fit //适应显示
2dfit //适应显示二维窗口。
axo //显示二维窗口
vinit //显示三维窗口
vzb //显示三维窗口中的指示轴
vdisplay //在三维中显示
vhelp //交互命令帮助
vclear //清空三维显示窗口
explode //
dump //显示数据信息,显示曲线或曲面中保存的数据
whatis //显示的是什么,shape的一句话显示。
getsourcefile //获得命令的源码文件位置
//二维窗口的绘制命令
line //画直线,有方向箭头
circle //画圆
ellipse //画椭圆
parabola //画抛物线,箭头有方向
hyperbola //双曲线
beziercurve //贝塞尔曲线
bsplinecurve //B样条曲线,OCCT算法最高支持25次,理解节点矢量的表达方式
whatis //显示类型
pcurve //在二维空间中显示曲线。
translate //移动模型

曲面的参数空间是UV。

plane //画平面
cylinder //画圆柱
trimv //裁剪v方向上的作用域
cone //圆锥面
sphere //球面
torus //圆环面
extsurf //线性拉伸曲线得到曲面
revsurf //旋转曲线得到曲面
beziersurf //贝塞尔曲面
bsplinesurf //B样条曲面
trim //矩形裁剪曲面
offset //偏移曲面

2.4、插值和拟合

插值:是通过所有的得到的曲线。
拟合:是所有点到达线距离和最小的曲线。
Module ModelingAlgorithms 中 ToolKit TKGeomAlgo中PackageGeomAPI中的类:
GeomAPI_Interpolate 类是插值类。
GeomAPI_PointToBSpline类是拟合。用最小二乘法之类的算法做的。

判断点在线或面的内或外,都在拓扑里面。
Module ModelingAlgorithms 中 ToolKit TKTopAlgo中Package BRepClass中。

3、造型数据 ModelingData Topology

为了表示任意的一个边界范围。

3.1、两个概念

1、抽象拓扑(TopoDS):只是描述边界之间的关系。
(对应Module ModelingData中ToolKit TKBRep中Package TopoDS包中的类)
2、拓扑的几何边界表示(BRep):

  • BRepBuilderAPI类,BRepPRimAPI类,BRepOffsetAPI类,BRepFilletAPI类,用于之间构造拓扑体。
  • BRepAlgoAPI类,用于几何的布尔运算。
  • TopExp类,用于遍历拓扑体中的数据。
  • BRepTools类,访问各类的数据,类型转换,用于访问对应类的数据和函数。
  • BRepFeat类,高级特征??

3.2、为什么使用边界表示法?

其他几个模型表示法的比较:

  1. 构造、实体、建模(CSG):不能对任意模型建模。
  2. 图纸:是二维的。
  3. 线框表示:出现二义性。
  4. mesh文件,多用于动画模型,里面没有精确的数学表达。

边界表示法(BRep表示:Boundary Representation):
优点:几何造型中最成熟,且没有二义性,可以表达任意模型,有几何信息的表示法。
缺点:不稳定,比较复杂。

3.3、边界表示法的具体内容

体—面—环—边—点 的层次记录几何信息。
OCCT的拓扑结构只能从上往下,不能从下往上查找。
edge和curve的关系,用点去限定curve得到edge。
face和surface的关系,用edge去限定surface的一部分,得到face。

  1. TopoDS_TShape :TopoDS的handle。只能指针。
  2. 本地坐标系统。矩阵变换。gp_Trsf类。
  3. 朝向,forward和reverse。edge朝向一致就是forward,相反是reverse。face的法线朝里是forward,朝外是reverse。 朝向只有放到具体的拓扑体中才有意义。

IsPartner()-比较TShape一样,为true。
IsSame()-比较TShape和坐标一样,为true。
IsEqual()-比较TShape、坐标和朝向都一样,为true。

3.4、强制类型转换

TopoDS_Shape 类型——转——
——TopoDS_Vertex 类型:TopoDS::Vertex() 函数。
——TopoDS_Edge 类型:TopoDS::Edge() 函数。
——TopoDS_Wire 类型:TopoDS::Wire() 函数。
——TopoDS_Face 类型:TopoDS::Face() 函数。
——TopoDS_Shell 类型:TopoDS::Shell() 函数。
——TopoDS_Solid 类型:TopoDS::Solid() 函数。
——TopoDS_CompSolid 类型:TopoDS::CompSolid() 函数。

3.5、容器工具(实例代码略)

TopTools_MapOfShape类和TopTools_ListIteratorOfShape类是TopoDS_Shape 类型的容器。

3.6、 遍历工具(实例代码略)

  • TopoDS_Iterator类:遍历所有子模型。
  • TopExp_Explorer类:遍历制定类型。
  • TopExp::MapShapes() 方法:遍历制定的类型放到map里面。
  • TopExp::MapShapesAndAncestors()方法:遍历得到指定类型的所有父类型。

3.7、B-Rep实体,即实现类型

BRep_TVertex类,BRep_TEdge类和BRep_TFace类,定义了点,边和面,其中包含了限定的几何信息。

1、BRep_TVertex 类的几何

记录三维坐标点。
记录点的相关几何信息表示:BRep_PointOnCurve曲线上的点,BRep_PointsOnSurface曲面上的点等。

2、BRep_TEdge 类的几何

  • 三维曲线和曲线上的2个参数定义一条边。
  • 需要元素比较多列在下面:
    曲面上的曲线(Geom2d_Curve(二维曲线PCurve));曲线上的两个参数;曲面上的2对参数。

3、BRep_TFace 类的几何

wir在surface上面限定一部分,就是face。BRep_TFace 类中只保存了Geom_Surface的几何信息。

3.8、B-Rep实体的精度问题

  • 点的精度是半径r的球的范围
  • 边就是一个半径的管道
  • 面就是一个曲面的上下厚度

3.9、BRepAdaptor包(略)

让拓扑的线、面以几何的形式来使用。

3.10、BRep_Tool类

很多静态函数用于获得点、线和面的几何信息。

3.11、特殊情况

特殊类型边:退化边和缝合边。

  • 退化边的情况如下图:

  • 缝合边的情况如下图:

    BRep_Tool类中Degenerated()函数,判断边是否是退化的。

Geometry Surface 里面的求导函数,可以计算曲面上一点的法线。

Module ModelingData ->ToolKit TKBRep ->Package BRep中:BRep_Builder类。
用MakeFace函数去构造一个Face;MakeEdge()、MakeVertex()等。

——第一天完结——

OCCT培训笔记(刘星讲)--第1天相关推荐

  1. 二级VB培训笔记10:知识点串讲

    二级VB培训笔记10:知识点串讲 一.对象概述 1.三大特性:封装性.继承性.多态性 参看<VB讲课笔记1202. 二级公共基础 - 程序设计基础> 2.对象的属性 了解VB对象的常用属性 ...

  2. 《时间管理》培训笔记

    本文最初发表于恋花蝶的博客(赖勇浩的博客_CSDN博客-Python,Misc,Culture领域博主)如蒙转载,敬请保留全文完整,和保留本声明. <时间管理>培训笔记 缘起 上个月的时候 ...

  3. 《时间管理》培训笔记---转载

    本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanphaday)如蒙转载,敬请保留全文完整,和保留本声明. <时间管理>培训笔记 缘起 上个月的时候,参加了公司组 ...

  4. 【转】《时间管理》培训笔记

    本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanphaday)如蒙转载,敬请保留全文完整,和保留本声明. <时间管理>培训笔记 缘起 上个月的时候,参加了公司组 ...

  5. 《Linux就该这么学》培训笔记_ch01_部署虚拟环境安装Linux系统

    <Linux就该这么学>培训笔记_ch01_部署虚拟环境安装Linux系统 文章最后会post上书本的笔记照片. 文章主要内容: 在虚拟机中安装红帽RHEL7系统 在Linux系统中找回r ...

  6. 《Linux就该这么学》培训笔记_ch06_存储结构与磁盘划分

    <Linux就该这么学>培训笔记_ch06_存储结构与磁盘划分 文章最后会post上书本的笔记照片. 文章主要内容: Linux系统的文件存储结构(FHS标准) 物理设备命名规则(udev ...

  7. 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 ​​​​​​​ lin ...

  8. 视觉SLAM十四讲学习笔记-第二讲-初识SLAM

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...

  9. 二级VB培训笔记11:培训答疑集

    二级VB培训笔记11:培训答疑集 1.数组作为过程的参数,采用地址传递,形参发生 变化,实参也随之变化 2.嵌套循环 No.1 k=num=20, n=2 No.1 20 mod 2 = 0 循环 输 ...

  10. 二级VB培训笔记09:真考题库试卷75演练

    二级VB培训笔记09:真题演练

最新文章

  1. Spark UDF用户自定义函数
  2. 《iOS 6核心开发手册(第4版)》——2.1节UIControl类
  3. Mybatis执行过程源码分析
  4. 北斗导航 | 卫星导航基础知识(卫星轨道及卫星在轨运动)
  5. 两顶点的路径长度为k_计算两个顶点之间的所有可能路径
  6. 至读博客朋友的一封信
  7. 初试 Git hooks 自动部署
  8. epoll原理_彻底搞懂epoll高效运行的原理
  9. Kubernetes学习指南,轻松拥抱云原生
  10. 如何选择和部署长尾关键词
  11. 字符串的unicode java_Java把字符串转Unicode
  12. UML 类图画法规则
  13. 手把手教你把Python代码转成exe
  14. 谷歌浏览器无法调用java_怎么才能正常使用谷歌浏览器
  15. 论坛——迪文屏常用操作
  16. 招商银行笔试题之员工考勤记录
  17. 重装系统后计算机无法联网,韩博士重装系统后电脑无法上网怎么办?
  18. AdxMenu真的不错!我写了个中文的使用说明如下,希望大家用得着
  19. 编译原理:LL(1)文法 语法分析器(预测分析表法)
  20. 微信小程序做一个调查问卷(二)

热门文章

  1. 消防工程师 第一篇 消防基础知识 3.爆炸 4.易燃易爆危险品
  2. ASP.NET显示农历时间
  3. Mongodb数据丢失解决办法
  4. 小米组织架构调整:雷军兼任中国区总裁,王川组建大家电部发力白电市场
  5. 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
  6. 解决“双系统删除其中一个,BIOS仍然有其启动项”问题
  7. Vue+Less换肤方案
  8. Android 关于微信分享提示签名不对的问题
  9. 计算机表格简单教程视频教程,电脑如何制作表格步骤 教你制作简单的excel表格...
  10. 安装python3.8出现ModuleNotFoundError: No module named ‘_ctypes’解决办法