在 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
数组中的每个项目调用。确保要添加到数组的对象具有有效结构,即每个对象应包含属性partId
、author
、text
、img
、x
、y
和@987654334 @,如我答案中的代码 sn-p 所示。以上是关于在 Autodesk 查看器中使用 dbids 在对象上绘制标记的主要内容,如果未能解决你的问题,请参考以下文章
Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId
如何在 Autodesk Forge Viewer 中通过对象的 dbid 设置对象的自定义属性?