[返回博客](/cn/blog) # 使用 ODA Drawings SDK 导出为 JSON 格式

Vadim Asandiy 十二月 13, 2018 [\#getting started](/cn/blog/tag/getting-started) [\#Example](/cn/blog/tag/example)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

需要 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 对象：

![image1](/files/inline-images/2d_at_tv.png)Threejs JSON 中的 2D 对象：

![image2](/files/inline-images/2d_at_json.png)ODA Viewer 中的 3D 对象：

![image3](/files/inline-images/3d_at_tv.png)Threejs JSON 中的 3D 对象：

![image4](/files/inline-images/3d_at_json.png)

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
