Forge 查看器:如何隔离自定义对象?

Forge viewer: how to isolate custom objects?

我们使用自定义对象来可视化 ifc space 数据(主要是房间)。作为指导,我们使用了这个非常有帮助的 blog。绘制对象后,我们还想从外部 select 自定义对象并将它们隔离在查看器中。正如教程所建议的,我们更改模型构建器的 changeFragmentsDbId 函数以设置尚不存在的 DbId,因此不会与现有的 DbId 重叠。一种方法是对我们的自定义对象 DbId 使用负数 space [-1、-2、-3...],如下所示:

const roomFragId = this.modelBuilder.addFragment(roomGeometryId, materialName, transform);
this.modelBuilder.changeFragmentsDbId(roomFragId, -roomFragId);

另一种是找到最大 DbId(例如 4905)并为我们的自定义对象 DbId(例如 [4906, 4907, 4908...])使用大于此最大 DbId 的数字:

const roomFragId = this.modelBuilder.addFragment(roomGeometryId, materialName, transform);
this.modelBuilder.changeFragmentsDbId(roomFragId, maxDbId + roomFragId);

但是,当我们尝试隔离自定义绘制的对象(viewer.isolate(-1)viewer.isolate(4906))时,查看器会自行刷新,但没有对象被隔离... 因此,我们想知道如何隔离自定义对象?

换句话说,当我们 select 查看器中的对象用于否定 space 方法时 => 我们在聚合中得到 DbId(例如 -1)select离子事件。

感谢您的帮助!

要隔离或 select 由 SceneBuilder 分机创建的自定义对象,您需要将 model 对象传递给 Viewer3D#isolate / Viewer3D#select,如下所示.否则,viewer 将使用 viewer.model

viewer.isolate( [4906, 4907, 4908...], this.modelBuilder.model )

viewer.select( [4906, 4907, 4908...], this.modelBuilder.model )