在 Autodesk 查看器中使用 dbids 在对象上绘制标记

Posted

技术标签:

【中文标题】在 Autodesk 查看器中使用 dbids 在对象上绘制标记【英文标题】:Draw Markup On object in autodesk viewer using dbids 【发布时间】:2021-01-10 00:54:53 【问题描述】:

我需要在 Autodesk 查看器中的对象上显示数据(带有背景框的标签)。 我尝试实现这个博客https://forge.autodesk.com/blog/placing-custom-markup-dbid,这就是我想要复制的内容,我也参考了https://raw.githubusercontent.com/Autodesk-Forge/forge-digital-twin/master/public/scripts/extensions/issues.js

我尝试过的东西。 1.将.js文件放在我的文件夹中,里面的代码 2.在我的html中引用文件 3.加载如上例所示的扩展 4.导入所有引导cdn 5.jquery cdn导入

我能够获得半温图标按钮,扩展程序也接受带有我提供的 db id 的图标,当单击按钮时,图标和文本都不可见,扩展程序会执行任何错误但我无法看看我的观众的任何反映。

任何人都可以帮助我检查更多内容以实现此目的,因为我觉得 Autodesk 中的很多东西都已更新,我可能会遗漏一些东西

【问题讨论】:

【参考方案1】:

“forge-digital-twin”演示中的“问题”扩展需要特定的服务器端点来获取数据,如您在此处看到的:https://github.com/petrbroz/forge-digital-twin/blob/master/public/scripts/extensions/issues.js#L55-L57。您可以替换这 3 行代码并以您想要的任何方式填充 this._issues 数组。例如,您可以像这样直接对值进行硬编码:

this._issues = [
    
        partId: 100,
        author: 'John',
        text: 'Message',
        img: '<some image url>',
        x: 0.0,
        y: 0.0,
        z: 0.0
    ,
    
        partId: 101,
        author: 'Joe',
        text: 'Hello',
        img: '<some image url>',
        x: 10.0,
        y: 20.0,
        z: 30.0
    
];

请注意,partId 是问题附加到的对象的 ID,因此当对象在查看器中移动时(例如,使用分解工具),问题可以跟随它。

【讨论】:

能否请您解释一下什么是 x、y 和 z 以及如何获取它们的值?我有 dbids/partids,所以我可以使用 part ids 获取这些值吗? 当然,x/y/z 是问题的实际世界坐标。我正在使用查看器的命中测试功能检索坐标:github.com/petrbroz/forge-digital-twin/blob/master/public/…。 谢谢,让我试一试,看看我能不能让它为我工作:) 我遇到了这个错误 - Uncaught TypeError: Cannot read property 'x' of undefined at IssuesExtension._getIssuePosition (IssuesExtension.js:127) at IssuesExtension._updateMarkups (IssuesExtension.js:113) at T .updateMarkupsCallback (IssuesExtension.js:8) at T.dispatchEvent (EventDispatcher.js:154) at Array.it (Viewer3DImpl.js:1077) at Ze.executeCommandList (Viewer3DImpl.js:827) at W.tick (Viewer3DImpl.js :1692) 在 e (Viewer3DImpl.js:1718) 上仍然无法在查看器上显示任何内容 _getIssuePosition 方法正在为 this._issues 数组中的每个项目调用。确保要添加到数组的对象具有有效结构,即每个对象应包含属性partIdauthortextimgxy 和@987654334 @,如我答案中的代码 sn-p 所示。

以上是关于在 Autodesk 查看器中使用 dbids 在对象上绘制标记的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk forge SVF2 dbid

Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId

如何在 Autodesk Forge Viewer 中通过对象的 dbid 设置对象的自定义属性?

贴花未显示在 Autodesk 查看器中

模型伪造查看器中缺少 Autodesk.AEC.ModelData

如何使用 SFV2 在伪造查看器中仅加载特定对象?