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

Open CASCADE:模型带颜色导出至 STEP / IGES 文件

目录

  • 1、引言
  • 2、核心原理解析:XDE 与 OCAF 的协作原理
    • 2.1、OCAF
    • 2.2、XDE
    • 2.3、TDF
  • 3、案例
    • Step 1:指定 XDE 驱动器的路径
    • Step2:初始化 XCAF 文档并加载模型
    • Step3:获取各类数据管理工具
    • Step4:创建模型
    • Step5:向文档添加模型并绑定颜色
    • Step6:文件导出
  • 4、总结
  • 5、引用

1、引言

Open CASCADE 支持读写带颜色、图层、标注等信息的模型文件。模型颜色是不同CAD软件数据交换时最常用到的信息,本文给出一个带颜色模型导出为 STEP / IGES 文件的例子。

2、核心原理解析:XDE 与 OCAF 的协作原理

2.1、OCAF

OCAF,即OCC应用程序框架(Open CASCADE Application Framework,详细参考官网),是 “文档管家”,支持各类复杂2D、3D场景CAD/CAM/CAE等应用开发,属于即用型应用程序框架。如下图所示的应用程序文档-属性模型:
在这里插入图片描述
OCAF 文档数据通过树形结构管理(若考虑属性的引用关系,则是图形结构),文档结构可以通过官方工具 DFInspector 查看[github:Inspector]。如下图所示的一个带红、绿、蓝三色的模型:
在这里插入图片描述
使用 DFInspector 工具打开后,将呈现OCAF的文档数据,如下图所示:
在这里插入图片描述
该文件包括三个带颜色的模型,模型名称分别是 Test_RedBox、Test_GreenSphere、Test_BlueCylinder,对应的颜色分别是 RED、GREEN、BLUE

2.2、XDE

XDE,即OCC中的扩展数据交换(eXtended Data Exchange,详细参考官网),以CAF为基础——即XCAF,支持颜色、图层、材料等非几何属性的读写。

在 XCAF 数据中,XCAFDoc_DocumentTool负责总体数据管理,各种具体类型数据由特定的工具类 xxTool 负责读写,这些工具集合也是OCC支持PMI信息的关键。工具类见下表:

序号数据类型类名说明
1模型XCAFDoc_ShapeTool模型管理
2装配数据XCAFDoc_AssemblyTool仅提供遍历装配树/图的方法
3颜色XCAFDoc_ColorTool关联模型及其子模型的颜色,增、删、改、查;模型和其子模型有不同的颜色属性
4图层XCAFDoc_LayerTool关联模型及其子模型的图层,增、删、改、查;模型和其子模型可从属于不同的图层
5材料XCAFDoc_MaterialTool关联模型及其子模型的材料,增、删、改、查;模型和其子模型可以是不同的材料
6GD&TXCAFDoc_DimTolToolGD&T的增、删、改、查
7剖视图XCAFDoc_ClippingPlaneTool剖视图的增、删、改、查
8注释XCAFDoc_NotesTool为一个模型或子模型添加注释,及其关联的对象
9视图XCAFDoc_ViewTool视图的增删,一个视图包括相机视角、显示的模型、GD&T数据及标签
10渲染材料XCAFDoc_VisMaterialTool为模型单独设置用于渲染的材料

获取各工具类的方法形如:

Handle(TDocStd_Document) doc = ...;
Handle(XCAFDoc_ShapeTool) shape_tool = XCAFDoc_DocumentTool::ShapeTool(doc ->Main()); // 模型管理工具
Handle(XCAFDoc_LayerTool) layer_tool =  XCAFDoc_DocumentTool::LayersLabel(doc->Main()); // 图层管理工具

XDE 直接支持 IGES、STEP文件的读写的工具类如下表所示:

类名说明是否支持图层颜色等信息
STEPControl_Writer, IGESControl_WriterSTEP, IGES 文件标准导出,仅模型不支持
STEPControl_Reader, IGESControl_ReaderSTEP, IGES 文件标准导入,仅模型不支持
STEPCAFControl_Writer, IGESCAFControl_WriterSTEP, IGES 文件 CAF 数据完整导出支持
STEPCAFControl_Reader, IGESCAFControl_ReaderSTEP, IGES 文件 CAF 数据完整导出支持

2.3、TDF

TDF,即拓扑数据框架(Topological Data Framework),提供了一种层次化的数据组织方式,将模型的各种信息以树形结构进行存储,使得不同类型的数据能够有序地关联起来。

具体来说,TDF_Label是该框架中至关重要的一个工具,它本身不包括任何数据,而是以TDF_Label为索引实现TDF中各类数据的增删改查,起标签作用。例如,一个TDF_Label关联一个模型(或子模型),使用特定的工具通过TDF_Label为其关联的模型设置颜色、材料、图层等属性。同时TDF_Label还可用于关联任何用户自定义的数据。

前一节表中所列的各类 xxTool均以 TDF_Label为输入进行操作。

关于 OCAF 的详细解释和用法说明,将在后续文章中给出。

使用 XCAF 即可实现带颜色模型的导出。

3、案例

以下通过实际案例,实践导出三个不同颜色模型的 STEP/IGES 文件。

Step 1:指定 XDE 驱动器的路径

使用 XDE 读写内置文件格式类型(XML)时,需要指定驱动器路径,文件路径包括以下两个文件:

XCAF
Plugin

两个文件名称不能修改。OCC 安装之后,这两个文件在 $CASROOT/src/StdResource 路径下。

有两种方式指定驱动器路径:
①:设置环境变量 CSF_XCAFDefaults=以上文件所在路径
②:通过代码设置环境变量

OSD_Environment env("CSF_XCAFDefaults", "以上文件路径"); // 指定XDE驱动路径
env.Build();

OCC 为何如此处理格式的读写,这一问题将在后续的文章中详述。

当然,若仅需要完成 IGES/STEP 文件格式转换,则不需要该步骤。

Step2:初始化 XCAF 文档并加载模型

在开始导出带颜色的模型文件之前,首先要初始化 XCAF 文档。这一步就像是搭建一个舞台,为后续的模型展示和操作做好准备。通过创建 TDocStd_Document对象,来构建 XCAF 文档的基础框架。例如:

Handle(XCAFApp_Application) app = XCAFApp_Application::GetApplication();
XmlXCAFDrivers::DefineFormat(app);
Handle(TDocStd_Document) doc;
app->NewDocument(TCollection_ExtendedString("XmlXCAF"), doc);

Step3:获取各类数据管理工具

使用前述的XCAFDoc_DocumentTool获取各类数据管理工具。

Handle(XCAFDoc_ShapeTool) shape_tool = XCAFDoc_DocumentTool::ShapeTool(doc->Main());
Handle(XCAFDoc_ColorTool) color_tool = XCAFDoc_DocumentTool::ColorTool(doc->Main());
Handle(XCAFDoc_MaterialTool) material_tool = XCAFDoc_DocumentTool::MaterialTool(doc->Main());

Step4:创建模型

分别创建立方体、球体、圆柱体。

// 创建红色盒子
TopoDS_Shape red_box = CreateRedBox();
// 创建绿色球体
TopoDS_Shape green_sphere = CreateGreenSphere();
// 创建蓝色圆柱体
TopoDS_Shape blue_cylinder = CreateBlueCylinder();

Step5:向文档添加模型并绑定颜色

使用模型工具 shape_tool向文档中添加模型

TDF_Label box_label = shape_tool->AddShape(red_box);
TDataStd_Name::Set(box_label, "Test_RedBox");
TDF_Label sphere_label = shape_tool->AddShape(green_sphere);
TDataStd_Name::Set(sphere_label, "Test_GreenSphere");
TDF_Label cylinder_label = shape_tool->AddShape(blue_cylinder);
TDataStd_Name::Set(cylinder_label, "Test_BlueCylinder");

TDF_Label为索引、使用颜色工具 color_tool设置模型的颜色

// 设置红色盒子的颜色
Quantity_Color red(Quantity_NOC_RED);
SetShapeColor(color_tool, box_label, red);
// 设置绿色球体的颜色
Quantity_Color green(Quantity_NOC_GREEN);
SetShapeColor(color_tool, sphere_label, green);
// 设置蓝色圆柱体的颜色
Quantity_Color blue(Quantity_NOC_BLUE);
SetShapeColor(color_tool, cylinder_label, blue);

Step6:文件导出

导出为 XDE XML 格式:

app->SaveAs(doc, "colored_models_xbf.xml");

导出为标准 IGES 格式,仅沿模型信息、无颜色数据:

IGESControl_Writer iges_writer;
iges_writer.AddShape(red_box);
iges_writer.AddShape(blue_cylinder);
iges_writer.Write("colored_models_standard.igs");

导出为带颜色数据的 IGES:

IGESCAFControl_Writer xde_iges_writer;
xde_iges_writer.SetColorMode(Standard_True);
xde_iges_writer.SetNameMode(Standard_True);
xde_iges_writer.SetLayerMode(Standard_True);
if (xde_iges_writer.Transfer(doc) == IFSelect_RetDone)
{xde_iges_writer.Write("colored_models_xde.igs");cout << "XDE IGES文件导出成功: colored_models_xde.igs" << endl;
}
else
{cout << "XDE IGES文件导出失败!" << endl;
}

导出为带颜色数据的 STEP:

STEPCAFControl_Writer xde_step_writer;
xde_step_writer.SetColorMode(Standard_True);
xde_step_writer.SetNameMode(Standard_True);
xde_step_writer.SetLayerMode(Standard_True);
if (xde_step_writer.Transfer(doc) == IFSelect_RetDone)
{xde_step_writer.Write("colored_models_xde.stp");cout << "XDE STEP文件导出成功: colored_models_xde.stp" << endl;
}
else
{cout << "XDE STEP文件导出失败!" << endl;
}

4、总结

本文通过 XDE 模块,实现了模型几何与非几何属性颜色的一体化导出。

进一步地,XDE的能力还可以满足以下场景的使用:

  1. 可实现 STEP AP214/AP242 文件完整数据的导入,进而可遍历获取子模型颜色、图层、GD&T等完整信息。

  2. 对于CAx 类应用程序,除了模型及其关联数据之外,还可以基于 XDE 管理应用程序数据,通过 TDF_Label文档中添加用户自定义数据以及自定义数据的关联引用。

  3. 文件级引用,就像 CAD 软件中的装配体那样,一个装配体文件可以引用外部若干个零件或组件的独立文件。

5、引用

  1. OCC 官方文档:Extended Data Exchange (XDE)
  2. OCC API手册:Package XCAFDoc

转载请著名链接:https://blog.csdn.net/Mechanicoder/article/details/151651814

http://www.dtcms.com/a/475710.html

相关文章:

  • 电力建设监理招聘网站网站模板套餐
  • 东莞网站高端建设WordPress万级数据优化
  • 网站内容资源建设ps设计师网站
  • 源代码建网站如何用wordpress盈利
  • 销售型企业网站建设营销网站的目的
  • 网站开发有什么软件做网站会被捉吗
  • Controller中常见的一些注解
  • 中职网站建设与管理达州注册公司
  • 手机网站开发 视频wordpress 导出html5
  • 江西省网站建设公司网站排名首页前三位
  • 进程 线程八股思考
  • 网站添加百度地图标注个人网页制作教程代码
  • 网站设计答辩ppt高端网站建设哪家公司好
  • Java数据结构 - 优先级队列的模拟实现与使用
  • WordPress部署商城如何给网站做排名优化
  • 完美解决Windows聚焦失效的办法,畅用Windows聚焦锁屏壁纸和桌面壁纸
  • 校园旅游网站建设方案策划书云南网站seo服务
  • 江门做网站设计百度惠生活
  • 学做游戏 网站深圳建设工程交易服务网站
  • 大型网站开发公司网站工商网监标
  • asp网站图片如何做微信朋友圈网站
  • 威海做网站多少钱南京江宁区住房建设局网站
  • 网站建设或网站优化排名dede 后门暴网站
  • 原创音乐网站源码新闻摘抄四年级下册
  • 网站架构设计图东莞做网站的公司
  • 栈和队列的学习
  • 怎么样做网站页面wordpress短代码参数值带
  • 网站建设 会计分录wordpress 性能怎么样
  • Go语言技术与应用(四):网络编程之TCP端口扫描器实现
  • 济南正规网站制作怎么选择兰州做网站哪家专业