在链接模型中的元素上使用Autodesk Forge Viewer的搜索功能时,返回的dbId无法执行fitToView,但是dbId + 1是否有效?

时间:2019-05-15 11:51:41

标签: autodesk-forge autodesk-viewer

我试图使用查看器中的搜索功能搜索元素,然后对元素执行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相同!选择功能也确实在查看器上突出显示了该元素。使用链接文件中的元素时,这是正常现象吗?

1 个答案:

答案 0 :(得分:0)

在这里,您可以使用Viewer v6在链接的Revit模型中很好地搜索AutodeskForge

search/fitToView

viewer.search('AutodeskForge', function(e)
{
   viewer.utilities.fitToView(e);
   viewer.select(e);
   console.log(e);
})