Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Autodesk forge 无法在forge viewer中完全隐藏模型_Autodesk Forge_Autodesk Viewer_Autodesk - Fatal编程技术网

Autodesk forge 无法在forge viewer中完全隐藏模型

Autodesk forge 无法在forge viewer中完全隐藏模型,autodesk-forge,autodesk-viewer,autodesk,Autodesk Forge,Autodesk Viewer,Autodesk,我试图在forge viewer中隐藏完整的模型,为此我调用forge可见性API,如下所示: viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true) 其中,查看器是GUIViewer3D的对象 但这并不是隐藏整个模型,模型中的某些组件仍然可见 我认为这是forge viewer中的一个bug,因为如果我将模型的根节点传递给setNodeOff()API,它必须隐藏整个模型。我确信我的查看器会话中只加载了一

我试图在forge viewer中隐藏完整的模型,为此我调用forge可见性API,如下所示:

viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)

其中,查看器是
GUIViewer3D
的对象

但这并不是隐藏整个模型,模型中的某些组件仍然可见

我认为这是forge viewer中的一个bug,因为如果我将模型的根节点传递给
setNodeOff()
API,它必须隐藏整个模型。我确信我的查看器会话中只加载了一个模型

对于调用
viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)后仍然可见的元素
getModelId()
返回模型ID,可见性API需要节点ID。为了隐藏整个模型,考虑以下内容:

viewer.hide(model.getRootId());

你能帮我试一下吗

转换.RVT文件时,是否可以尝试将标题“x-ads-force”:“true”添加到POST作业请求中

这是关于API请求的文档。。。

然后,检索URN并将其提供给Forge Viewer,如前所示,如下例:

所以。。。发生了什么事?

当您将RVT转换为SVF(用于Forge Viewer)时,它会生成一组随机的DBID

调用GetProperties API时,它使用缓存的SVF提取DBID并提供结果

早在8月份,GetProperty API引擎就已经更新。与旧的转换SVF相比,它生成的DBID顺序不同

因为旧的SVF是缓存的,所以即使您提交了一个新作业,它也会使用旧的SVF

为了避免旧的SVF,我们需要“强制转换”RVT到SVF的转换,以刷新该缓存,以便新的SVF可见,Forge Viewer可以检索它

一旦Forge Viewer可以看到新的SVF,它应该与GetProperties API的DBID匹配

复杂啊


让我知道这是否解决了问题。

由于我的目标是对查看器完全隐藏模型,我通过以下方式实现了这一点:

viewer.hide(model.getRootId());
viewer.clearSelection();
viewer.model.setAllVisibility(0);
viewer.impl.toggleGhosting(false);
viewer.impl.toggleGroundShadow(false)


这给了我所需的行为。我无法隐藏的元素现在通过这种方法隐藏。

要完全隐藏模型,可以隔离一个空列表,该列表将显示整个模型的重影,然后可以全局关闭重影

viewer.isolate([]);
viewer.setGhosting(false);

我尝试过建议的解决方案,但没有看到效果。元素(如图中所示)仍然可见
viewer.model.getModelId()
viewer.model.getRootId()
返回相同的值(在我的例子中)。有几个问题:(1)您使用的是什么版本的查看器?(2) 你的应用程序是否公开运行?(3) 你能用其他模型重现这个问题吗?还是仅仅用这个模型。我使用的是forge viewer 4.2.*2。不,该应用程序正在开发中,目前尚未公开运行。3.是的,其他一些模型(revit模型)存在问题。我已尝试逐个隐藏每个元素,如下所示:
var instanceTree=viewer.model.getInstanceTree();forEach(dbId=>{viewer.impl.visibilityManager.setNodeOff(instanceTree.nodeAccess.dbIdToIndex[dbId],true);})
但是我没有获得附加图像中可见元素的
dbId
,这就是为什么我无法隐藏它们或使它们消失。感谢@PraviNShinde的信息,这听起来像是从RVT文件转换为内部查看格式的问题。有没有可能通过电子邮件与我共享一个有问题的Revit文件
forge.help[at]autodesk.com
。感谢您为调查此问题而付出的努力,我理解了您试图解释的内容。在将模型转换为svf格式时,我尝试添加了
'x-ads-force':'true'
标题,但问题仍然存在,更改后没有效果。OIC。。。您正在Forge Viewer中查找渲染首选项。我认为这与Forge Viewer(缓存的SVF)和GET properties API调用之间的DBID不匹配有关。我错了!是的,
dbIds
仍然存在问题,但是我通过一些不同的方法实现了我的需求。如果调用
viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)
,很明显,有些元素没有分配DBID,因此我无法关闭/隐藏。甚至无法选择或隔离它们(如附图所示的元素)。顺便说一句@PravinShinde,您可能不需要太长时间的解决方案,开发团队已经在暂存中修复了dbID问题,并将很快将其部署到生产中。太好了@PetrBroz,一旦它投入生产,你能给我发封邮件或邮件吗?谢谢。我会做@PravinShinde。干杯