需要 JSON 格式的数据?ODA Drawing SDK 可以将数据库视图中的数据导出为 JSON 格式。该格式是使用名为 Three.js 的 JavaScript 库应用的。
使用命名空间 TD_THREEJSJSON_EXPORT 中的 Drawings SDK 的 ThreejsJSONModule 类:
OdResult exportThreejsJSON(OdDbBaseDatabase *pDb, OdStreamBuf *pOutStream, const ODCOLORREF &background, bool bFacesEnabled = false);
输入参数:
- background – 场景背景颜色。
- bFacesEnabled – 如果为 true,pDb 将以面导出到 JSON,否则仅以线和点导出。
输出参数:
- pOutStream – 输出流(文件流、内存流)。
返回值:
- eOk 表示成功,或 OdResult 错误代码。
如果方法结果为 eOk,pOutStream 将包含 JSON 格式的文本,其中包含四个对象:
- 元数据的 JSON 对象。
- 点、线和网格材质的 JSON 数组。
- 包含数据数组的几何体 JSON 数组。点和线的几何体包含顶点和空面数组;网格的几何体包含顶点、法线、颜色和面数组(数组的数量取决于面元素的第一个索引,其中包含位掩码)。
- 对象(例如场景图)的 JSON 数组,根节点处有一个场景对象。此树的第二层包含具有默认类型 Object3D 的相机和图层。相机对象可能包含一个灯光对象。图层可能包含具有默认类型 Object3D 的点、线、网格或图元文件对象,Object3D 是原始类型对象的根节点。
转换为 Threejs JSON 格式的缺点是,如果原始对象有多个相机对象,则无法使用相机的矩阵更改对象的坐标。
请记住,在 JSON 格式中,数据集与场景图以及几何体和材质数组一起存储。在 JavaScript 中必须配置在图层上显示和禁用对象类型(例如,将面显示为网格或等值线)。
以下示例显示了在 ODA Viewer 中打开并转换为 Threejs JSON 格式的 2D 和 3D 对象。
ODA Viewer 中的 2D 对象:
Threejs JSON 中的 2D 对象:
ODA Viewer 中的 3D 对象:
Threejs JSON 中的 3D 对象: