目录
- 概述
- 读取文件
- 增量加载
- 写入文件
- 格式特定的详细信息
- 进度状态支持
- 例子
读取和写入多种 CAD 和 BIM 文件格式。
概述
读取(导入)和写入(导出)文件是使用 CAD Exchanger SDK 时的主流场景。支持的格式列表可在此处获取。
读取文件时,结果会转换为通用数据模型,该模型提供通用格式中立的数据表示和访问 API。同样,要写入文件,此通用表示形式将用作源。
如果您的应用程序已经可以读取某些(简单)文件格式,例如 STL 或 FBX,那么集成 CAD Exchanger SDK 的最快(尽管不是最佳)方法是添加其支持的任何格式的简单转换,包括读取文件,然后以您的应用程序可以读取的格式保存结果,如下所示:
尽管上述方法需要最少的实现工作,但它涉及使用中间文件并承担数据质量恶化的风险(由于使用临时格式)。
另一种更可靠(因此推荐)的解决方案是使用数据模型API 访问内存中的数据,而不是将其转储到磁盘上。例如,最佳方法不是编写 STL 文件,而是查阅内存中的多边形表示(包含三角形网格)来访问网格节点坐标、法线和连接信息。
在 CAD Exchanger 中处理读写的主要方法有两种:
- 使用通用API。ModelData_ModelReader和ModelData_ModelWriter类可用作单一入口点,能够处理 CAD Exchanger 支持的每种格式。
- 使用特定于格式的 API。特定格式的读取器和写入器可用于更好地控制导入和导出过程。每种格式的类别均由相应的前缀指定,例如 JT_、ACIS_、IGES_ 等。
文件由磁盘上的(绝对)文件名来标识。许多转换器还支持任意 (C++) 流。
有关每种格式支持范围的详细信息,请参阅支持的格式。
读取文件
ModelData_ModelReader是读取文件的主要类,尤其是需要导入多种格式时。使用方法很简单,只需调用一个函数,其中包含应读取的文件的路径和目标ModelData_Model(对于 MCAD 格式)或ModelData_BIMModel(对于 BIM 格式)实例,该读取器本身确定文件的格式并执行相应的导入。
数据模型对象由从正在读取的文件导入的内容填充。转换前模型不会被清理,因此同一模型中可能会积累一些文件。
或者,如果客户端应用程序需要对读取过程进行更严格的控制,则可以使用单独格式的读取器,如下所示:
请注意,以这种方式读取文件需要调用两个函数:
- Base_Reader::ReadFile()解析文件并在内存中构造内部特定格式的文件表示形式;
- Base_Reader::Transfer()将内部特定于格式的文件表示转换为中性的与格式无关的数据模型。
增量加载
巨大的程序集可能需要大量时间来加载。您可以在根据请求加载单个零件或子组件时实现增量加载,而不是让最终用户等待整个读取阶段完成(例如,通过单击 UI 中与组件树视图中的节点相对应的复选框) )。
在这种情况下,可以非常快速地导入整个装配层次结构,并且可以推迟重要的几何图形。CAD Exchanger Lab 有一个选项可以激活此延迟模式,因此您可能需要检查它。
有关详细信息,请参阅延迟转换。
写入文件
ModelData_ModelWriter将 3D 数据写入各种格式的主要方式。与导入类似,只需调用指定文件路径的单个函数,编写器会根据文件扩展名自动确定如何导出模型。再次强调,如果在同一工作流程中使用导出为多种格式,这将特别有用。
与导入类似,也可以使用每种格式的编写器类将模型导出为特定格式:
与读取文件对称,写入文件也包含两个步骤:
- Base_Writer::Transfer()将内部数据模型转换为内存中特定格式的文件表示形式;
- Base_Writer::WriteFile()根据内部格式特定的文件表示形式格式化文件。
格式特定的详细信息
有关每种格式的详细信息,包括支持的格式版本、范围、参数等,请参阅转换器详细信息。
进度状态支持
通用和特定格式的读取器和写入器都支持进度状态更新。下面的示例演示了如何将观察者添加到内部进度状态对象:
当使用特定于格式的读取器和写入器时,需要将进度状态分为多个范围,以确保在导入的两个阶段中连续填充状态:
有关详细信息,请参阅进度状态支持和进度栏示例。