【毕业设计】02-OpenCASCADE源码初步分析

268 阅读1分钟

1 部分资料

官方文档: Open CASCADE Technology Documentation

官方Git仓库:OCCT Git

PythonOcc:GitHub - tpaviot/pythonocc: 3D CAD/CAM package for python OCCT的python封装,可以用python语言调用全部OCCT接口,用SWIG包装器编译的。

PyOCCT: github.com/trelau/pyOC… 相同的python OCCT封装,区别是它用pybind11包装器。

2 OCCT 核心功能模块

2.1 几何建模(Geometry & Topology)

  • 几何体创建

BRepPrimAPI_MakeBox:创建立方体

BRepPrimAPI_MakeSphere:创建球体

BRepBuilderAPI_MakeEdge:创建边(基于曲线)

TopoDS_Shape box = BRepPrimAPI_MakeBox(10.0, 20.0, 30.0).Shape();
  • 布尔运算

BRepAlgoAPI_Fuse:并集

BRepAlgoAPI_Cut:差集

BRepAlgoAPI_Common:交集

TopoDS_Shape fused = BRepAlgoAPI_Fuse(box1, box2).Shape();
  • 曲面建模

Geom_BSplineSurface:NURBS 曲面

BRepOffsetAPI_MakeThickSolid:抽壳操作

2.2 数据交换(Data Exchange)

  • 文件导入/导出

STEPControl_Reader:读取 STEP 文件

IGESControl_Writer:导出 IGES 文件

StlAPI_Writer:导出 STL 文件

STEPControl_Reader reader;
reader.ReadFile("model.step");
reader.TransferRoots();
TopoDS_Shape shape = reader.Shape();

2.3 可视化(Visualization)

  • 3D 显示

AIS_InteractiveContext:交互式显示

V3d_Viewer:视图管理

Handle(AIS_InteractiveContext) context = new AIS_InteractiveContext(viewer);
context->Display(box, Standard_True);

2.4 几何算法(Algorithms)

  • 计算属性

GProp_GProps:计算体积、质量

BRepGProp::VolumeProperties

GProp_GProps props;
BRepGProp::VolumeProperties(box, props);
Standard_Real volume = props.Mass();
  • 网格化(Meshing)

BRepMesh_IncrementalMesh:生成三角网格

BRepMesh_IncrementalMesh mesher(shape, 0.1); // 三角化精度 0.1
mesher.Perform();

3 OCCT功能的具体实现形式

形式描述示例
类(Class)封装几何对象和算法(如 TopoDS_Shape 表示几何体)TopoDS_Shape shape;
函数(Function)全局工具函数(如计算距离、法向量)BRepExtrema_DistShapeShape dist(shape1, shape2);
工具类(Toolkit)提供复杂操作的封装(如 BRepAlgoAPI 布尔运算工具)BRepAlgoAPI_Fuse fuseTool(shape1, shape2);