zoukankan      html  css  js  c++  java
  • OpenCASCADE STEP Color

    OpenCASCADE STEP Color

    eryar@163.com

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

    Key Words. OCCT, STEP, Color

    1. Introduction

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

    应用协议(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中读取AP214STEP中的颜色信息。

    2. STEP in Draw

    Draw Test Harnes中对应AP203AP214分别有两个命令来读取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中的数据结构,对装配结构进行遍历,还要处理子节点的模型变换。既然OCCTDRAW中可以显示出带颜色的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中测试,若满足需求,进而可以找到官方的源码实现。

  • 相关阅读:
    Channel使用技巧
    Flask开发技巧之异常处理
    后端开发使用pycharm的技巧
    python单元测试
    Docker入门介绍
    python高阶函数的使用
    python内置模块collections介绍
    python中@property装饰器的使用
    三次握手四次挥手
    python类方法@classmethod与@staticmethod
  • 原文地址:https://www.cnblogs.com/opencascade/p/OCCT_STEP_COLOR.html
Copyright © 2011-2022 走看看