使用外部按钮控制 autodesk-forge 查看器

Controlling the autodesk-forge viewer with external buttons

目前我正在将 forge 添加到公司内部网站,我们可以在其中查看我们已经构建或正在构建的所有机器。该网站是这样工作的:用户选择一个机器编号,然后弹出关于该机器的所有信息。这包括机器内的工作站,以及每个工作站内的所有单独零件。我的任务是将 autodesk-forge 添加到网站。目前我已经成功地使用了autodesk-forge viewer,这样无论何时选择一台机器,用户可以按下一个按钮,整个机器的模型就会弹出来查看。下一步是让查看器由网站上的外部按钮控制。我们希望它这样工作:

  1. 用户选择了一台机器。之后会弹出所有工位信息,以及机器中各个工位内的零件(至此完成)。

  2. 用户单击 "view model" 按钮,该按钮将使用 forge 查看器使机器在网站上弹出(这已由我完成)。

  3. 一旦带有模型的 Forge 查看器出现在屏幕上,我们希望查看器能够通过网站上已有的外部按钮进行控制。

例如,如果有一台名为 MC-000 的机器,并且该机器中有一个名为 ST010 的工位,则该工位内有许多零件,例如齿轮。当用户查看机器 MC-000 时,我们希望能够单击已经制作好的外部按钮(例如 ST010),查看器将自动放大并突出显示机器内的那个站。我们也希望机器内的零件也一样。当一台机器被选中时,它的工位以及工位内的零件已经在我们的网站上打印出来了。我们现在希望能够单击站点或部分,并让查看器自动放大到该部分# 或站点#。我找到了一个类似的代码示例 here。在此示例中,部分查看器由不在查看器内的按钮控制。例如,当单击 'engine' 按钮时,查看器将自动放大引擎。这个例子的问题是,所有的位置都被硬编码到代码中,这意味着引擎的位置已经在代码中了。我不能这样做,因为我们有许多不同的机器,有数千个零件,所以我不可能将它们全部硬编码。使用 autodesk-forge 查看器可以做这样的事情吗?任何帮助或指导将不胜感激。干杯!

编辑**

任何有关我如何更改查看器放大的位置的指导都将不胜感激,并且会有很大帮助。目前,我有方法从 GET :urn/metadata/:guid http 请求中获取 dbid 和外部 objectId。再次感谢!

看来您确实有指定的引擎 dbid,并且您有办法使用外部代码 link 查看器函数。查看器的默认双击行为是 select 鼠标指针与之碰撞的项目。然后相机会放大(或缩小)该项目以使其适合视图。

您可以使用:

select

fitToView

实现模拟交互

例如在 Typescript 中:

// Your dbid is for example 1234
this.viewer.select(1234);
this.viewer.fitToView([1234]);
viewer.select(dbid);
viewer.utilities.fitToView();

示例:https://github.com/Autodesk-Forge/forge-extensions/tree/master/public/extensions/IconMarkupExtension