OpenCascade及资源汇总

前言


OpenCascade,简称OCCT,是一个开源的3D几何内核开发平台库,Wiki上这样论述OCCT

Open Cascade Technology (OCCT), formerly called CAS.CADE, is an open-source software development platform for 3D CAD, CAM, CAE, etc.
that is developed and supported by Open Cascade SAS. 
OCCT is a full-scale B-Rep (Boundary representation) modeling toolkit. 
OCCT is available under the LGPL-2.1-only license permitting its usage in open source and proprietary applications

OCCT 前称 CAS.CADE,是一个开源的3D计算机辅助设计,辅助制造,辅助功能等的软件开发平台,由 Open Cascade SAS这家机构开发和支持。OCCT是一个BRep模型工具包,在LGPL-2.1的开源许可证下使用。

几何内核平台

除了OCCT作为数不多的开源几何内核平台外,还有其他的商业几何平台,常见的应用和内核如下表所示:

Kernel Application Country
ShapeManager AutoCAD USA
Parasolid Siemens NX USA,Germany
Parasolid SolidWorks USA,France
C3D KOMPAS Russia
ACIS ArchiCAD Hungary
CGM CATIA France
ACIS Cimatron Israel
OpenCascade FreeCAD France
ACIS SpaceClaim USA

几何内核平台基本上被Siemens公司的Parasolid和Dassault公司的ACIS垄断,常用的UG,SolidWorks软件都是基于这些内核开发的,而本文介绍的OCCT开源内核比较出名的也是开源的FreeCAD软件

OCCT概况

OCCT功能

OCCT提供了3D表面和实体建模,CAD数据交换,可视化等基本功能,主要是以C++库的形式提供,包括以下功能:

  1. 基本的数据结构,包括几何模型,可视化,交互式选择及特定应用服务接口
  2. 模型算法
  3. Mesh数据
  4. 和标准数据格式(IGES,STEP)交互

OCCT模块

OCCT以C++库形式组合成模块,主要包括以下模块:

  1. Foundation Classse: 其他OCCT类依赖的基本类库,包括基本类,内存分配器,OS抽象层,集合数据结构,BVH树,向量,矩阵等基本数学运算类库
  2. Modeling Data: 提供表达2D/3D几何基本元素及其组合的CAD模型数据结构,集合图元包括分析曲线如直线,圆,椭圆,双曲线,抛物线,Bezier曲线,B样条曲线,偏移等;分析曲面如平面,圆柱面,圆锥面,圆环面,球面,Bezier,B样条,旋转,拉伸,偏移等,这些基本的图元模型定义及Brep表达实现
  3. Modeling Algorithm: 提供Mesh和各种几何和拓扑相关算法,如交集,布尔运算,网格划分,倒角,修复等等
  4. Visualiztion: 提供数据可视化显示的复杂机制,实现了一个紧凑的OpenGL/OpenGL ES渲染器,支持常用的着色模型和光线跟踪路径跟踪算法,除了OCCT自己提供AIS模块可视化显示外还支持第三方的如VTK库的集成显示
  5. Data Exchange: 提供与主流数据格式的互操作性和依赖Shape Healing提高不同CAD系统的兼容性
  6. Application Framework: 提供开箱即可用的开发上层应用的基本框架
    模块功能如下图所示:
    occt-modular

OCCT资源

本人在使用OCCT平台时候,主要参考了以下几种资源,现在罗列如下:

官方资源

  1. 最权威齐全的说明文档地址:Full Online Documentation

    里面包含了OCCT大部分的说明包括模块介绍,每个模块的具体详细部分原理和代码说明,源码和第三方库各个平台编译OCCT的方法,官方自带的各种例子,算法测试命令行,一些标准说明比如Brep格式等等,算是比较权威和齐全的说明

  2. 开发API查询地址:Reference Manual

    根据OCCT源代码文档注释通过Doxygen文档生成工具生成的文档,实时更新的文档,对查询OCCT各个模块,类,函数,变量,常量等各种类型的定义和使用说明很有帮助

  3. 付费的E-Training: E-Training

    付费的官方培训或电子视频资源

  4. 官方论坛: Forums

    遇到问题可以在上面进行提问,里面包含了OCCT实时的release和announcement信息及分模块讨论板块

  5. 技术博客:Blog

    官方的版本发布信息及一些技术原理分享

  6. 视频资源:Youtube

    需要科学上网,官方的Youtube视频,主要包括一些OCCT产品应用和部分特性讲解,相对而言技术干货比较少些

  7. 源码:
    OCCT-GitHub
    pythonOCC-Github

其他第三方资源

  1. 技术博客
    国内的为数不多的OCCT技术相关个人博客:
    eryar
    国外OCCT技术相关个人博客(可能需要科学上网):
    Unlimited 3D
    OpenCascade Notes
    Manifold Geometry

  2. 视频资源:Quaoar’s Workshop

    需要科学上网,俄罗斯OCCT资深开发者的Youtube频道,讲解了很多关于OCCT的方面的技术和教程,很详细很难得的免费视频资源

参考


OpenCascade Technology wikipedia

OpenCascade Official

OpenCascade Dev Doc

OpenCascade -GitHub