我试图使用查看器中的搜索功能搜索元素,然后对元素执行fitToView。该函数返回了dbId,但是fitToView不适用于它。经过研究,并从以下问题得到了一些帮助:Autodesk Forge Viewer - Getting different values dbId from "viewer.model.search" and "viewer.getSelection()",我向返回的dbId添加了1,然后fitToView起作用了!
我要搜索的元素在链接模型中-我上载了Revit模型的ZIP文件-该元素不在主模型中。这是链接模型的已知行为吗?我可以安全地将1添加到从搜索返回的所有dbId中,以获取正确的元素吗?还是有什么方法可以获取正确的dbId?
我已经下载了model.sdb,并意识到正确的dbId带有一个名为“ instanceof_objid”的属性,其值是从搜索函数返回的dbId。 Viewer API是否有任何函数可以获取该属性?
希望这很明显……预先感谢您的帮助!
更新: 使用一个简单的模型,我在链接文件中搜索了一个元素-
thisViewer.search('testing', function(c)
{
thisViewer.utilities.fitToView(c);
thisViewer.select(c);
console.log(c);
})
返回的dbId为6388,而fitToView实际上会缩放到整个模型,而不是缩放到该元素。选择也没有突出显示该元素。当我在查看器中选择元素并执行getProperties时:
var ids = thisViewer.getSelection();
for (let id of ids) {
thisViewer.getProperties(id, retrieveProps, retrievePropsError);
}
function retrieveProps(data) {
console.log(data.name);
console.log("dbId = " + data.dbId);}
该元素的dbId为6389。它是从搜索函数返回的dbId的+1。
然后我尝试对主文件(而不是链接文件)中的元素运行相同的代码,返回的dbId相同!选择功能也确实在查看器上突出显示了该元素。使用链接文件中的元素时,这是正常现象吗?