我的目标是根据我在 Revit 中创建的线条向查看器添加新的几何图形,以突出显示房间,就像他们在此处所做的那样Link
但我不知道如何访问这些线路 ID。
我知道它们在 Revit 中是什么(元素 id),但不知道它们如何映射为 dbid。
按照此博客文章
我想访问扩展中的 objectTree 来找出答案,但它总是返回为未定义。
var tree;
//old way - viewer is your viewer object - undefined
viewer.getObjectTree(function (objTree) {
tree = objTree;
});
//2.5 - 未定义
var instanceTree = viewer.model.getData().instanceTree;
var rootId = this.rootId = instanceTree.getRootId();
//- 不明确的
var objectTree = viewer.getObjectTree();
谁能告诉我它是否仍然适用于他们我正在使用 API 的 v2 来将 rvt 转换为 svf 和viewer3D.js 的 2.9
注意如果我调用它,我可以看到 dbid 列表
var model = viewer.impl.model;
var data = model.getData();
var fragId2dbIdArray = data.fragments.fragId2dbId ;
但无法映射回 Revit element_id
As of version 2.9 this is still working. Here's my console:
您可以尝试以下几件事:
- Is
viewer
不明确的?抓取时您是否处于正确的范围内viewer
?
- 必须先加载文档,然后才能获取实例树。当文档加载时,会发生一个名为
Autodesk.Viewing.GEOMETRY_LOADED_EVENT
将被解雇,然后您可以开始操作实例树。
只需这样做:
viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () {
var instanceTree = viewer.model.getData().instanceTree;
});
对于更结构化的代码,请遵循本指南添加扩展名。
有一个更详细的博客文章要监听哪个事件。不过,它仍然使用旧的方法来获取实例树。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)