OpenCASCADE STEP Color

2023-05-16

感谢原作者的分享,原文地址:https://www.cnblogs.com/eryar/p/Step_Color.html

Abstract. STEP AP214的STEP中是带有颜色信息的,OCCT可以读取其中的颜色信息。本文介绍一种比官方XCAFDoc_ColorTool更方便的获取方法。

Key Words. OCCT, STEP, Color

1. Introduction

STEP是通用格式,常用的3D软件都可以打开,用于不同的软件之间相互交流之用。OCCT的Data Exchange模块支持STEP格式的读写功能,其中支持STEP的AP203和AP214版本,这两者有什么区别呢?下面从网上摘取如下解释:

应用协议(APs: Application Protocol)是用来交换数据。每种应用协议属于一个不同的应用领域。例如,AP227属于空间装置技术和包含几个实体属于这个区域,如管道Pipe或弯头Elbow。此外,这些APs使用某些公共实体称为通用资源,如几何和拓扑结构,定义实体模型。

AP203适用于机械零件和组件的表示。AP214适用于数据的表示有关汽车设计。今天AP203文件通常包含边界表示模型、装配数据和数量有限的其他产品信息。

AP214文件通常包含颜色,层,和通用资源。边界表示法的模型是一个CAD模型代表它的边界。例如,一个表面模型由只有表面使用,使模型。固体模型包括几何信息,如表面,曲线,并指出,和拓扑信息,比如边缘,顶点,面临着。几何信息提供了数据模型的形式,和拓扑信息提供这些几何元素之间的连接性和几何元素的程度。

相同点:AP214 AP203均支持的实体、面的输入和输出。

区别是:STEP AP203 标准不具有任何颜色,AP214标准具有颜色的。

缩上所述,当以AP203应用协议保存STEP后,只保存了几何模型,没有颜色数据。当需要在STEP中体现颜色,就需要以AP214来保存。

为了更好的显示STEP模型或者需要将STEP中的模型及颜色转换到其他格式,需要获取STEP中的颜色信息。本文主要介绍如何在OCCT中读取AP214的STEP中的颜色信息。

2. STEP in Draw

在Draw Test Harnes中对应AP203和AP214分别有两个命令来读取STEP文件:

l stepread:对应AP203协议,只读取STEP中的模型;

l ReadStep:对应AP214协议,能读取STEP中的模型、颜色、组装结构等;

通过命令ReadStep读取进来的模型,可以显示颜色:

 

从ReadStep命令提示中可以看出,读取AP214的STEP需要用到OCCT的应用程序框架中的文档。即需要使用Extended Data Exchange(XDE)来读取。

3. Access STEP Color

在XDE中可以读写模型的颜色信息,支持的三种颜色类型为:

l Generic Color (XCAFDoc_ColorGen) 通用颜色

l Surface Color (XCAFDoc_ColorSurf) 曲面颜色

l Curve Color (XCAFDoc_ColorCurv)  曲线颜色

在XDE文档中,颜色是通过类XCAFDoc_ColorTool来管理的,即通过这个类可以来设置、获取每个Label的颜色,包括Label的子Label。可以通过类的函数IsSet()来检查一个节点是否设置了指定类型的颜色:

 

获取一个节点或模型颜色的方法如下:

 

使用这些函数当然可以获得STEP中模型的颜色信息,但当模型很大,而且还带有复杂的装配结构时要求就高了,需要你了解CAF中的数据结构,对装配结构进行遍历,还要处理子节点的模型变换。既然OCCT的DRAW中可以显示出带颜色的STEP模型,说明OCCT中有现成的功能。怎么找到这个功能呢?还是要从DRAW中去找。

4. OCCT Solution

对于有一定开发经验的OCCT开发者,我建议使用或开发OCCT的流程是:首先在DRAW中,利用Tcl脚本来实现原型或检验一些功能。其次才是写C++代码。虽然OCCT面向对象做得很好,但是有些类的参数设置不当,得到的结果也并非所愿。而在DRAW中就可以很容易地来调整一些参数,方便查看结果。如果在DRAW中的结果与期望一致,还可以查看DRAW中相关命令的源码,看官方的使用方法。

在DRAW模块中找到XDE读取STEP的命令实现源码:ReadStep

 

可以看官方使用类STEPCAFControl_Reader来读取STEP文件。而显示XDE的文档使用命令XShow,实现源码如下:

 

从上图可以看到,官方在这里已经不用XCAFDoc_ColorTool来处理其中的颜色了!将其注释掉啦。那么官方是怎么处理其中的颜色呢?通过Debug跟踪源码,可以发现是使用了类XCAFPrs_AISObject,核心算法实现是在类的函数void XCAFPrs_AISObject::DispatchStyles (const Standard_Boolean theToSyncStyles)中,如下图所示:

 

XCAFPrs::CollectStyleSettings()函数是个递归函数,用来处理STEP中装配结构中的颜色及模型变换。

5. Conclusion

综上所述,若想获取STEP中模型对应的颜色,只需要用类XCAFPrs_AISObject即可,也不需要考虑子节点的模型变换问题,OCCT已经为你考虑并处理好了。

Draw的源码是个藏宝库和百科书,若有问题可以先在Draw中测试,若满足需求,进而可以找到官方的源码实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCASCADE STEP Color 的相关文章

随机推荐

  • Getting Exception org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.l

    把下面的依赖去掉即可 xff01 log4j to slf4j 2 0 2 jar log4j to slf4j 2 0 2 sources jar log4j slf4j impl 2 0 2 jar log4j slf4j impl 2
  • C# 条件编译 (#if 和 Conditional)

    本文转载自 xff1a C 条件编译 xff08 if 和 Conditional xff09 腾讯云开发者社区 腾讯云 本文主要讲述C 中 xff0c 使用 if 和 Conditional 特性来按条件编译代码的不同原理和适用场景 本文
  • 网络时延的几个概念

    假设一个数据包X从路由器A到路由器B xff0c 我们来分析下 xff0c 在这种情况下 xff0c 数据包X从A到B的总时延 xff1a 当A接收到数据包时 xff0c 会检测数据包的首部 xff0c 决定将该数据包导向哪一个链路上 xf
  • C#自动引用Debug | Release版本的dll

    1 其它模块的的dll路径 存放路径 解决方案 43 lib 文件夹下 xff0c Debug存放Debug文件 xff0c Release目录存放Release文件 2 其他项目中如何自动加载对应版本的dll文件 文本格式打开 cspro
  • Visual Studio 远程调试

    条件 xff1a 应用程序和本机调试机器需在同一局域网内 1 找vs里面的远程工具文件夹 xff0c 复制到目标电脑 2 然后点进去进行对应的位数 xff0c 找下图此文件 xff0c 右键管理员运行 xff0c 并设置选项 xff08 部
  • c#离线安装NuGet包

    1 前言 在开发c 程序时 xff0c 有时会用到第三方库 xff0c 可以在VS中从NuGet直接下载 xff0c 但是这是在开发环境联网的情况下 xff0c 如果开发环境处于无网络连接的时候 xff0c 那应该如何安装NuGet包呢 x
  • C#如何实现读写ini文件

    本文转载自 xff1a https www jb51 net article 235534 htm 一 c 读写Ini操作类 using System using System Collections Generic using Syste
  • C#Office.Interop.Excel.dll读写表格

    本文摘自 xff1a C Office Interop Excel dll读写表格 笨鸟未必先飞的博客 CSDN博客 c microsoft office interop excel 一 写入excel lt summary gt 创建一个
  • C#组件系列——又一款Excel处理神器Spire.XLS(二)

    阅读目录 一 基础入门 1 新建Workbook2 读写Workbook3 保存Workbook二 样式 1 文本样式2 单元格样式3 表格样式4 富文本编辑框三 冻结行列 1 冻结行2 冻结列四 合并单元格五 选项过滤功能六 下拉框七 显
  • C#组件系列——又一款Excel处理神器Spire.XLS(一)

    阅读目录 一 组件介绍二 组件安装使用 1 官方下载安装2 Nuget安装三 组件功能介绍 1 Excel转PDF2 Excel生成图表3 其他功能介绍四 总结 正文 前言 xff1a 最近项目里面有一些对Excel操作的需求 xff0c
  • 小米蓝牙耳机airdots青春版双耳模式

  • 用c#在excel中插入图片和设置表格宽度

    问题的由来是我想在excel中自动插入图片 xff0c 插入图片后我想根据图片的大小调整cell的大小 xff0c 于是不经意间就来到了一个坑的面前 Range对象有ColumnWidth属性和RowHeight属性 xff0c 这两个属性
  • c# log4日志配置文件

    lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt log4net outdate days 61 34 10 34 gt lt Debug 将日志以回滚文件的形式写到文件中
  • 解决crontab 中conda: command not found

    目录 问题 解决办法 1 查询conda的路径 xff0c 然后在运行脚本中指定conda命令的路径 xff08 失败 xff09 2 搜索网上的解决办法 xff0c 在crontab e 文件中加入 conda 的安装路径 3 放弃使用c
  • C#操作SQLite数据库

    C 操作 SQLite 数据库 1 SQLite介绍 2 C 操作SQLite Database 2 1 C 下SQLite操作驱动dll下载 2 2 C 使用SQLite步骤 xff08 1 xff09 新建一个project xff08
  • OpenCasCade批处理简介

    一 前言 OpenCasCade库目录下面包含各种文件 xff0c 对于编译批处理文件以前也用过很多次 xff0c 老是忘记里面的一些问题 xff0c 在此记录一下 二 如何快速编译属于自己的开发版本 本次使用vs2017为例 xff0c
  • C#实现定时器的几种方案

    在C 里关于定时器类就有三个 1 System Windows Forms Timer 2 System Threading Timer 3 定义在System Timers Timer 下面对这三个类进行讲解 System Windows
  • Win11系统软件无法拖拽发送文件的解决方法

    1 按下快捷键 win 43 r xff0c 输入 xff1a regedit 2 打开注册表之后依次展开 xff1a HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion
  • GLTF文件格式详解

    GLTF数据格式规范 GLTF文件格式 glTF 导出格式有两种后缀格式可供选择 xff1a gltf 和 glb xff1a gltf 文件导出时一般会输出两种文件类型 xff0c 一是 bin 文件 xff0c 以二进制流的方式存储顶点
  • OpenCASCADE STEP Color

    感谢原作者的分享 xff0c 原文地址 https www cnblogs com eryar p Step Color html Abstract STEP AP214的STEP中是带有颜色信息的 xff0c OCCT可以读取其中的颜色信