当前位置: 首页 > news >正文

OCC介绍及框架分析

1.OCC介绍

Open CASCADE (简称OCC)是一开源的几何造型引擎,OCCT库是由Open CASCADE公司开发和市场运作的。它是为开源社区比较成熟的基于BREP结构的建模引擎,能够满足二维三维实体造型和曲面造型,国内研究和使用它的单位也越来越多。基于该建模引擎发展了若干CAD/CAE/CAM软件,如国外的FreeCAD、HeeksCAD,国内的AnyCAD。OCC可以分为建模、可视化和数据管理(OCAF)三大模块。其中建模为核心组件;可视化组件基于OpenGL库被设计。设计成模块化和易扩展。将C++类与以下内容分离:

  • 定义数据结构(几何建模、显示和交互选择);
  • 实现复杂算法;
  • 提供编程接口;

优势:

  • 开源、免费,所以开发成本较低。
  • 支持跨平台
  • 支持STEP\IGES\STL等文件格式
  • 有个OCAF框架,简化开发。

不足:

  • 部分算法效率低下,例如布尔运算。
  • 显示效果很差,只用到了OpenGL1.2的API。相对其他的三维可视化OpenGL平台(如Coin4d,OpenInventor, Ogre,OSG,Blender,VTK等),功能简单,并且显示效果比较差,不能充分利用GPU硬件加速,,跟HOOPS没得比。
  • OCAF采用树的方式管理数据,使用比较复杂,效率比较低,并且不适合自定义扩展。

因此,不推荐使用OCC的可视化和数据管理组件.

1.1 技术架构:

1.2 OCAF框架

1.3 模块介绍:

OCCT库分组成六个模块,最小的模块Foundation Classes包含两个库,最大的模块Modeling Algorithms,包含八个库。(可能是早期版本,最新版本的库的数量有变化。)

这些模块如下图所示:

Foundation Classes基础类

Modeling Data

建模数据

Modeling Algorithms

建模算法

Visualization

可视化

Data Exchange

数据交换

Application Framework

程序框架

Kernel Classes

核心类

2D Geometry

二维几何体

Primitives

基本实体

2D和3D通用功能

IGES

STEP

Data Framework

Math Utilities

数学工具

3D Geometry

三维几何体

Boolean Operations

布尔操作

2D Visualization

2D 可视化

AP203

AP214

Data Storage

Geometry Utilities

几何工具

Fillets and Chamfers

倒圆和倒角

3D Visualization

3D 可视化

Extended data Exchange

(XDE)

Application Desktop

Topology

拓朴结构

Offsets, Drafts, Sewing,

Sweeps,

Hidden Line Removal

消隐

Geometric Tools

几何工具

Topological Tools

拓朴工具

1.4 OCCT已有功能

(1)模型几何建模引擎
(2)显示渲染引擎
(3)基本交互:
  • 背景网格
  • ViewCube视图向导
  • 拾取选择
  • 基本对象的拾取选择-选择点,线,面,体等
(4)模型持久化框架
  • 文件保存
  • 文件打开
  • 基于TK_Model,TDF_Label,TDF_Attribute的树状对象模型

      (5)支持事务框架

  •  Redo/Undo

相关文章:

  • 在vue和uniapp中使用 websocket并封装js
  • Android GLES渲染——渲染回读
  • MFC序列号输入框
  • 一套轻量、安全的问卷系统基座,提供面向个人和企业的一站式产品级解决方案
  • K-Means 算法详解
  • 游戏中的寻路算法研究
  • 解决内核模块加载使用-f参数无法加载的问题
  • 为什么要学Java?
  • Linux驱动开发(二)--字符设备驱动开发提升 LED驱动开发实验
  • 18个机器学习核心算法模型总结
  • 2025计算机毕业设计选题题目推荐-毕设题目汇总大全
  • 智慧校园综合管理系统:打造高效智慧的学校管理平台
  • 契约锁电子签章平台 add 远程命令执行漏洞复现(XVE-2023-23720)
  • 关于面试被面试官暴怼:“几年研究生白读” 的前因后果
  • React获取DOM节点
  • @jsonView过滤属性
  • 《剑指offer》分解让复杂问题更简单
  • 【css3】浏览器内核及其兼容性
  • laravel 用artisan创建自己的模板
  • mongo索引构建
  • Promise初体验
  • scrapy学习之路4(itemloder的使用)
  • Vue.js-Day01
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 老板让我十分钟上手nx-admin
  • 力扣(LeetCode)357
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)svelte 教程:hello world
  • (2022 CVPR) Unbiased Teacher v2
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (回溯) LeetCode 46. 全排列
  • (十七)Flink 容错机制
  • (转) ns2/nam与nam实现相关的文件
  • (转)我也是一只IT小小鸟
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .apk文件,IIS不支持下载解决
  • .gitignore
  • .NET MVC之AOP
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .Net小白的大学四年,内含面经
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [Android Studio 权威教程]断点调试和高级调试