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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/354949.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[论文笔记]Are Large Language Models All You Need for Task-Oriented Dialogue?

引言 今天带来论文Are Large Language Models All You Need for Task-Oriented Dialogue?的笔记。 主要评估了LLM在完成多轮对话任务以及同外部数据库进行交互的能力。在明确的信念状态跟踪方面,LLMs的表现不及专门的任务特定模型。然而,如果为它们提…

【机器学习】基于稀疏识别方法的洛伦兹混沌系统预测

1. 引言 1.1. DNN模型的来由 从数据中识别非线性动态学意味着什么? 假设我们有时间序列数据,这些数据来自一个(非线性)动态学系统。 识别一个系统意味着基于数据推断该系统的控制方程。换句话说,就是找到动态系统方…

[创业之路-120] :全程图解:软件研发人员如何从企业的顶层看软件产品研发?

目录 一、企业全局 二、供应链 三、团队管理 四、研发流程IPD 五、软件开发流程 六、项目管理 七、研发管理者的自我修炼 一、企业全局 二、供应链 三、团队管理 四、研发流程IPD 五、软件开发流程 六、项目管理 七、研发管理者的自我修炼

系统架构设计师 - 数据库系统(1)

数据库系统 数据库系统数据库模式 ★分布式数据库 ★★★数据库设计阶段 ★★ER模型 ★关系模型 ★ ★结构约束条件完整性约束 关系代数 ★ ★ ★ ★概述自然连接 大家好呀!我是小笙,本章我主要分享系统架构设计师 - 数据库系统(1)知识,希望内…

idea插件开发之在项目右键添加菜单

写在前面 本文看下如何在右键列表中增加菜单。 正戏 首先创建一个Action,要显示的menu选择ProjectViewPopupMenu,如下: action public class CAction extends AnAction {Overridepublic void actionPerformed(AnActionEvent e) { // …

OSPF 动态路由协议(思科、华为)

#交换设备 OSPF 动态路由协议 一、基本概念 1.中文翻译:开放式最短路径优先路由协议(open shortest path first),是一个内部网关路由协议(一个自治系统内)2.也称为:链路状态路由协议&#xf…

火爆全网 LLM大模型教程:从零开始构建大语言模型,git突破18K标星

什么!一本书的Github仓库居然有18.5k的星标!(这含金量不必多说) 对GPT大模型感兴趣的有福了!这本书的名字叫 《Build a Large Language Model (From Scratch)》 也就是 从零开始构建大语言模型! 虽然这是一…

常说的云VR是什么意思?与传统vr的区别

虚拟现实(Virtual Reality,简称VR)是一种利用计算机技术模拟产生一个三维空间的虚拟世界,让用户通过视觉、听觉、触觉等感官,获得与现实世界类似或超越的体验。VR技术发展历程可追溯至上世纪,经历概念提出、…

鸿蒙 Web组件的生命周期(api10、11、12)

概述 开发者可以使用Web组件加载本地或者在线网页。 Web组件提供了丰富的组件生命周期回调接口,通过这些回调接口,开发者可以感知Web组件的生命周期状态变化,进行相关的业务处理。 Web组件的状态主要包括:Controller绑定到Web组…

两行css 实现瀑布流

html <ul ><li><a href"" ><img src"05094532gc6w.jpg" alt"111" /><p>传奇</p></a></li><li><a href"" ><img src"05094532gc6w.jpg" alt"111"…

文件防篡改监控工具 - WGCLOUD全面介绍

WGCLOUD是一款优秀的运维监控软件&#xff0c;免费、轻量、高效&#xff0c;部署容易&#xff0c;上手简单&#xff0c;对新手非常友好 WGCLOUD部署完成后&#xff0c;点击菜单【文件防篡改】&#xff0c;可以看到如下页面 我们点击【添加】按钮&#xff0c;输入监控文件的信息…

深圳比创达EMC|EMC与EMI测试整改:保障电子设备电磁兼容性步骤

随着电子技术的迅猛发展&#xff0c;电子设备在我们的日常生活中扮演着越来越重要的角色。然而&#xff0c;这些设备在运行时产生的电磁干扰&#xff08;EMI&#xff09;以及对外界电磁干扰的敏感性&#xff08;EMC&#xff09;问题&#xff0c;不仅影响着设备本身的性能&#…

Windows电脑部署Jellyfin服务端并进行远程访问配置详细教程

文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…

代理模式(静态代理/动态代理)

代理模式&#xff08;Proxy Pattern&#xff09; 一 定义 为其他对象提供一种代理&#xff0c;以控制对这个对象的访问。 代理对象在客户端和目标对象之间起到了中介作用&#xff0c;起到保护或增强目标对象的作用。 属于结构型设计模式。 代理模式分为静态代理和动态代理。…

[Mysql] 的基础知识和sql 语句.教你速成(上)——逻辑清晰,涵盖完整

目录 前言 上篇的内容概况 下篇的内容概况 数据库的分类 关系型数据库 常见的关系型数据库系统 非关系型数据库 1. 键值对数据库&#xff08;Key-Value Stores&#xff09; 特点&#xff1a; 常见的键值对数据库&#xff1a; 2. 文档数据库&#xff08;Document Store…

好用的linux一键换源脚本

最近发现一个好用的linux一键换源脚本&#xff0c;记录一下 官方链接 大陆使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh)# github地址 bash <(curl -sSL https://raw.githubusercontent.com/SuperManito/LinuxMirrors/main/ChangeMirrors.sh) # gitee地址 …

Redis 网络模型

一、用户空间和内核空间 1.1 linux 简介 服务器大多采用 Linux 系统&#xff0c;这里我们以 Linux 为例来讲解&#xff0c;下面有两个不同的 linux 发行版&#xff0c;分别位 ubuntu 和 centos&#xff0c;其实发行版就是在 Linux 系统上包了一层壳。 任何 Linux 发行版&#…

RS-232协议详解:深入理解与实际应用

RS-232协议详解 RS-232协议&#xff0c;也称为推荐标准232&#xff0c;是一种用于串行通信的标准协议。它在计算机和外围设备之间的通信中广泛应用。本文将详细介绍RS-232协议的各个方面&#xff0c;包括其历史、工作原理、信号类型、连接方式、应用场景等。希望通过这篇文章&a…

如何使用React的lazy和Suspense来实现代码分割?

在React中&#xff0c;使用React.lazy和Suspense可以方便地实现组件的代码分割。代码分割是一种优化技术&#xff0c;它将代码拆分成多个包&#xff0c;然后按需加载这些包&#xff0c;从而加快应用的初始加载时间。下面是如何使用这两个API的基本步骤&#xff1a; 使用React.l…

软考初级网络管理员__网络单选题

1.某人的电子邮箱为 Rjspks163.com,对于Rjspks和163.com的正确理解为(2)&#xff0c;在发送电子邮件时&#xff0c;常用关键词使用中&#xff0c;(3)是错误的&#xff0c;采用的协议是(4)。若电子邮件出现字符乱码现象&#xff0c;以下方法中(5)一定不能解决该问题。 SNMP SM…