【CAD】Parasolid:CAD的os

🐼认识Parasolid

Parasolid是闭源的,我们也看不到具体的API,不过在这里有一份别人整理API文档可以参考,不过不是最新的:ParasolidAPI文档

所以什么是Parasolid呢?我们可以把他理解为CAD应用层的OS,不过这份os是闭源的,是由Siemens 维护的。不过这里也可以参考一下其他几何内核,比如OCCT,这里有源码压缩包地址:OCCT源码在下方,可以直接使用官方编译好的跑一个.step文件。同时,在python生态,也封装了OCC的API。

特此了解一下Parasolid 的架构和 API,进行CAD的二次开发。

Parasolid怎么跑起来的呢?

这里绘制了一张图:

Parasolid通过在启动一个session,即Parasolid 内核的运行环境,通过Frustrum向我们的文件系统,内存管理注册回调接口,最后由go进行渲染。

所以我们的所有Parasolid 操作都必须在这个session上下文中执行。


同时,Parasolid的类设计也是比较巧妙的,通过两套主要的设计方式,拓扑和几何,而**Entity(实体)**是一切可操作对象的基类,我们操作所有对象都可以遵循对扩展开放,对修改关闭,遵循里氏替换原则。

这里有几个资源句柄:TAG是运行时的内存标签,不可跨会话,session内存级别的

Identifier是实体的持久化标识符,所以可以跨会话,如果向快速查找标识,可以将Identifier考虑放到热缓存,进行命中。


🐼Parasolid的B-Rep结构

三维实体通过 B-Rep(边界表示法) 来描述。B-Rep 的核心思想是:用实体的边界来完整定义实体本身。其从上到下的的关系是,Body,Region,Shell,Face,Loop,Edge,Vertex,Fin。

B-Rep将其分离为拓扑和几何,方便解耦。拓扑描述的连接关系,几何描述的具体形状,二者通过实体:Face↔Surface, Edge↔Curve, Vertex↔Point进行关联。

而如果验证B-Rep,通过欧拉公式V - E + F = 2。

所以B-Rep这种结构,通过拓扑结构描述面相邻、边围成了面、顶点构成了边等,通过几何结构,描述了在三维空间中的精准位置,他们既是解耦合的,又是密不可分的。

OCCT关于B-Rep的一些代码目录:

我们从OCCT源码中可以看到最基础的一些数学几何运算,底层就是一些浮点数的几何运算法则,我们的点,线,面,坐标轴,向量,翻转,平移,代码中都有体现:

因此,数学的图形学要牢牢掌握。


然后看到了一个有意思的关于Parasolid 中的过程化几何,这种惰性求值的思想,可以避免大量不必要的计算。

相关推荐
不会代码的小猴8 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
青瓦梦滋8 小时前
传输层UDP/TCP协议
linux·网络·c++·网络协议·tcp/ip·udp
一只旭宝9 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
Lhan.zzZ11 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
zh路西法13 小时前
【3D SLAM源码解读系列】(二)Small_gicp——5 个积木搭出最优点云配准
c++·pcl·icp·fastgicp·smallgicp·gicp
fpcc14 小时前
ubuntu26环境下的开发环境安装处理
c++·并行编程
charlie11451419116 小时前
Cinux · 第一次跳进 Ring 3:用户态与特权隔离
开发语言·c++·操作系统·开源项目
别动我齐刘海16 小时前
机器学习基础2——C++、OpenCV、点云、Open3D
c++·人工智能·opencv·机器学习·计算机视觉·机器人·ros2
躺不平的理查德17 小时前
Windows C++ 第三方库使用流程备忘录--OpenCV
开发语言·c++
余额瞒着我当琳17 小时前
C++STL容器string--迭代器,string的接口,string的遍历,访问方式
c++