Autodesk forge 屏幕截图管理器中的选择问题

Autodesk forge 屏幕截图管理器中的选择问题,autodesk-forge,autodesk-viewer,Autodesk Forge,Autodesk Viewer,我们在web应用程序中构建了自定义状态保存功能,主要基于Philippe创建的“屏幕截图管理器”扩展。我们在选择方面遇到了一个问题,其中一些在保存状态时隐藏的组件在加载状态时显示。我已经在viewer.autodesk.io上用vanilla states manager代码复制了它 准确地说,通过在模型浏览器上按住CTRL键单击已在查看器中可见的零部件而隐藏的零部件最初会在查看器中消失。但是,当您保存此状态,然后在以后调用该状态时,以这种方式隐藏的组件将重新显示 你能调查一下吗?这是状态管理器

我们在web应用程序中构建了自定义状态保存功能,主要基于Philippe创建的“屏幕截图管理器”扩展。我们在选择方面遇到了一个问题,其中一些在保存状态时隐藏的组件在加载状态时显示。我已经在viewer.autodesk.io上用vanilla states manager代码复制了它

准确地说,通过在模型浏览器上按住CTRL键单击已在查看器中可见的零部件而隐藏的零部件最初会在查看器中消失。但是,当您保存此状态,然后在以后调用该状态时,以这种方式隐藏的组件将重新显示

你能调查一下吗?这是状态管理器代码中的一个bug(我们查看了一下,但找不到它-隐藏的组件正在状态中记录)还是查看器本身中的bug

谢谢,
Chris

我检查选择组件时发生的情况,这两种状态不兼容:子级隐藏,而父级隔离,因此它显示其所有子级并隐藏模型中的其余组件

为了获得您“将”期望的行为,您需要隐藏所有组件而不隔离父组件,然后创建第一个状态,然后隐藏子组件,创建第二个状态。您可以通过在单击浏览器节点时编写处理程序来实现这一点。为此,您需要实现自己的ModelStructurePanel

我有一个基本的例子可以帮助您开始:

我将查看一下click处理程序,并在其中添加一个示例。目前,您可以在viewer3D.js的源代码中签入需要覆盖哪些方法


希望这对“屏幕截图管理者”有所帮助,我想你实际上指的是“状态管理者”,否则这个问题会很混乱。。。到目前为止,我并没有重复你所描述的问题。你能看看我最新的样品吗。我创建了两种状态“直接隐藏”和“浏览器隐藏”,这两种状态对我来说都很好。此外,保存的状态只是一个json对象,因此您可以轻松查看保存的状态,并查看选定的隐藏DBID是否已正确保存在状态中。您还可以使用viewer3D.js的非精简版本,并在“restoreState”函数中放置断点,以检查发生了什么。您好,Philippe。抱歉-我指的是“状态管理器”,我可以通过执行以下操作复制您的最新代码:在模型浏览器中选择子部件D-400687:1。然后按CTRL键单击零件D400550:1以将其隐藏。拯救国家。然后加载以前的状态并返回到新状态。您会发现,零件D400550:1将在状态中可见。您还可以通过在查看器中选择相同的零件并通过右键单击将其隐藏来进行复制。它还会回来。据我们所知,DBID没有存储在JSON对象中。无法再现您描述的问题,请查看此简短记录并让我知道我缺少什么:首先选择子组件D-400687:1,以便隐藏座椅的其余部分。然后试着隐藏相同的部分。查看此视频并查看我在查看器中保存的状态。