gpt4 book ai didi

javascript - 如何获取 Autodesk Forge 中的所有 DB-ID

转载 作者:行者123 更新时间:2023-11-30 15:07:25 27 4
gpt4 key购买 nike

我需要从 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);
}
};

但我在开发人员工具中遇到错误,因为 无法读取 null 的属性“getData” 您认为我哪里出错了。提前致谢。

最佳答案

问题一定是模型没有完全加载,因此您应该等待该事件 (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

关于javascript - 如何获取 Autodesk Forge 中的所有 DB-ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com