开发者问题收集

如何在 Javascript AutoDesk 中获取模型对象元数据属性

2018-06-07
2098

我正在使用 Javascript 中的 AutoDesk Forge Viewer (2D) 处理离线 svf 文件。 我已将 .dwg 文件转换为 svf 文件。

如何在 Javascript 中获取模型对象元数据属性,就像我们使用 api“ https://developer.api.autodesk.com/modelderivative/v2/designdata/ {urn}/metadata/{guid}/properties”获取的一样?

我尝试使用 viewer.model.getProperties(dbId,function,funtion),但这只提供了特定于该 dbId 的详细信息,但我想要的是属性列表。

请帮我。

1个回答

首先,另一篇博客讲的是 Model Derivative 如何提取属性。理论上,如果你得到 'aka json (json.gz)' 或 'sqlLite (sdb/db)',你就可以用其他工具自己提取。 Forge Viewer 中如何使用 properties.db?

我相信你已经知道 http://extract.autodesk.io/ ,因为你说你已经下载了 SVF。 http://extract.autodesk.io/ 为您提供了下载翻译数据的逻辑,包括 json.gz 和 sqlLite db。

而如果您更喜欢通过 Forge Viewer 转储浏览器中的所有属性,我能想到的唯一方法如下:

 function getAllDbIds(viewer) {
   var instanceTree = viewer.model.getData().instanceTree;

   var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex);

  return allDbIdsStr.map(function(id) { return parseInt(id)});
}

var AllDbIds = getAllDbIds(myViewer);
myViewer.model.getBulkProperties(AllDbIds, null,
   function(elements){
    console.log(elements);//this includes all properties of a node.
 })

实际上,我结合了两个博客: https://forge.autodesk.com/cloud_and_mobile/2016/10/get-all-database-ids-in-the-model.html

https://forge.autodesk.com/blog/getbulkproperties-method

Xiaodong Liang
2018-06-07