循环遍历所有ID时获取ID属性的问题

时间:2016-12-14 17:04:45

标签: autodesk-forge autodesk-viewer

我有兴趣获取所有dbId元素的属性。为此,我只是循环遍历我的dbIds数组并使用Forge Viewer提供的getProperties函数。

  someFunction() {

    const instanceTree = this.viewer.model.getData().instanceTree;

    const allDbIds = Object.keys(instanceTree.nodeAccess.dbIdToIndex);

    console.log('all DbIds');
    console.log(allDbIds);

    // This will give the correct Properties
    // this.viewer.getProperties(5, (result) => {
    //   console.log(result)
    // })

    allDbIds.forEach((dbId) => {

      this.viewer.getProperties(dbId, (result) => {
        console.log('result:');
        console.log(result);

      }, (err) => {
        console.log('err');
        console.log(err);
      });
    });
  }

当我直接访问特定的dbId时,我得到了正确的属性数组。但是,当循环遍历所有dbId并调用getProperties函数时,前两个dbId只返回属性,而其他所有dbId只返回空数组。另外,前两个数组是大的,似乎包含其他属性。 - > Link to console output

有人知道我在这里做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

不是在客户端页面上迭代属性,更好的方法可能是通过Model Derivative API一次查询所有属性。请参阅以下参考资料:

https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-GET/

https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-guid-properties-GET/