【问题标题】:How to get all the DB-IDs in Autodesk Forge如何在 Autodesk Forge 中获取所有 DB-ID
【发布时间】:2018-01-14 10:06:51
【问题描述】:

我需要从 Autodesk forge 模型中获取所有 DB-Id。我已经参考了https://forge.autodesk.com/cloud_and_mobile/2015/12/select-all-elements-in-the-viewer-with-view-and-data-api-with-javascript.html的代码

我在自己的扩展中也试过,代码如下。

AutodeskNamespace("Autodesk.ADN.Viewing.Extension");
Autodesk.ADN.Viewing.Extension.Color = function(viewer, options) {

  Autodesk.Viewing.Extension.call(this, viewer, options);
  var _self = this;

  var _viewer = viewer;
  var instanceTree = viewer.model.getData().instanceTree;

  var rootId = this.rootId = instanceTree.getRootId();
  _self.load = function() {
    getgetAlldbIds(rootId);
  };

  function getAlldbIds(rootId) {
    var alldbId = [];
    if (!rootId) {
      return alldbId;
    }
    var queue = [];
    queue.push(rootId);
    while (queue.length > 0) {
      var node = queue.shift();
      alldbId.push(node);
      instanceTree.enumNodeChildren(node, function(childrenIds) {
        queue.push(childrenIds);
      });
    }
    console.log(alldbId);
  }
};

但我在开发者工具中遇到错误cannot read property 'getData' of null,你认为我哪里出错了。提前致谢。

【问题讨论】:

    标签: javascript autodesk-forge


    【解决方案1】:

    问题一定是模型没有完全加载,所以你应该等待那个事件(Autodesk.Viewing.GEOMETRY_LOADED_EVENT)。最好也等待对象树创建事件 (Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT) - 请参阅此处的讨论:How to Retrieve Forge Viewer objectTree?

    顺便说一句,现在有一个更简单的方法来获取所有的 dbId:Get all database id's in the model

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-29
      • 2022-11-18
      • 2020-06-07
      • 2018-05-06
      • 1970-01-01
      • 2017-05-05
      • 2020-06-17
      • 2020-11-18
      相关资源
      最近更新 更多