是否可以通过从外部网页接收特定 ID 来实现 Forge Viewer 中的突出显示功能?
Posted
技术标签:
【中文标题】是否可以通过从外部网页接收特定 ID 来实现 Forge Viewer 中的突出显示功能?【英文标题】:Is it possible to implement the highlight function in Forge Viewer by receiving a specific ID from an external web page? 【发布时间】:2021-08-07 07:50:12 【问题描述】:正在使用 Forge Viewer 查看 IFC 格式项目。 IFC 项目元素(顶板、楼板、右墙等)列在外部网页上,我想实现一个功能,在选择其中一个时在 Forge Viewer 中突出显示。
我应该使用“GLOBALID”来实现该功能吗? 我一直在寻找 Forge Viewer 的 API(v7),但我很好奇它是否提供与上述相同的功能。
【问题讨论】:
【参考方案1】:是的,这是可能的。这是一个演示这个想法的示例:
https://github.com/yiskang/forge-viewer-iframe-interoperability
此示例支持两种定位对象的方法:
通过将查询字符串传递给查看器页面的 URL(参见 public/extlink.html):
urn:代表 Forge Viewer 加载哪个模型。 idType:代表IFC guid类型。如果 IFC 模型由旧 IFC 管道转换,则 idType 为GLOBALID
。相反,如果您使用的是现代管道,则 idType 为 IfcGuid
。
guid:表示您要定位的对象的 IFC guid。
使用这些参数,您可以在模型完全加载后立即通过将对象传递到 URL 来定位对象,如下所示:
http://localhost:3000/viewer/?urn=dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZXh0cmFjdC1hdXRvZGVzay1pby0yMDE3bGt3ZWo3eHBiZ3A2M3g0aGwzMzV5Nm0yNm9ha2dnb2YvcmFjX2Jhc2ljX3NhbXBsZV9wcm9qZWN0X2xlZ2FjeS5pZmM&type=GLOBALID&guid=2cgXCjpDT0ZxBvxMSr3pfm
-
通过触发
LOCATE_ELEMENT_EVENT
(见public/index.html):
// Trigger event from iframe's parent page
const guid = event.target.getAttribute('data-guid');
const idType = event.target.getAttribute('data-idType');
if (!idType || !guid) return;
const iframeWind = viewerIframe.contentWindow;
iframeWind.NOP_VIEWER.fireEvent(
type: iframeWind.Autodesk.ADN.ElementLocator.Event.LOCATE_ELEMENT_EVENT,
idType,
guid
);
【讨论】:
以上是关于是否可以通过从外部网页接收特定 ID 来实现 Forge Viewer 中的突出显示功能?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从接收器应用程序获取有关 Chromecast 设备的信息