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

Posted

技术标签:

【中文标题】如何在 Javascript AutoDesk 中获取模型对象元数据属性【英文标题】:How to get Model object metadata properties in Javascript AutoDesk 【发布时间】:2018-11-17 01:01:23 【问题描述】:

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

如何像使用 api "https://developer.api.autodesk.com/modelderivative/v2/designdata/urn/metadata/guid/properties" 一样在 Javascript 中获取模型对象元数据属性?

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

请帮我解决这个问题。

【问题讨论】:

【参考方案1】:

首先,另一个博客讨论了模型导数如何提取属性。理论上,如果你得到 'aka json (json.gz)' 或 'sqlLite (sdb/db)',你就可以通过其他工具提取自己。 How properties.db is used in Forge Viewer?.

我相信你已经知道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

【讨论】:

感谢这对我有帮助。还有一件事要问,Javascript 中有什么方法可以像我们在 api "developer.api.autodesk.com/modelderivative/v2/designdataurn/metadata/guid" 中获取分层对象数据。请帮助我。 @Gaurav,模型的 InstanceTree 包含枚举树的方法。这是一个供您参考的博客:forge.autodesk.com/blog/enumerating-leaf-nodes-viewer

以上是关于如何在 Javascript AutoDesk 中获取模型对象元数据属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Autodesk Viewer 中设置性能和外观设置?

如何使用 Autodesk Forge 查看器离线查看模型?

如何在 Forge Viewer 中激活“Autodesk.MemoryLimited”扩展?

处理 Autodesk Forge 查看器的错误

Autodesk Forge 三个 JS 版本支持 ShapeBufferGeometry

在 Autodesk Forge 查看器中的元素下拾取