autodesk-forge - Forge 查看器:如何隔离自定义对象?
问题描述
我们使用自定义对象来可视化 ifc 空间数据(主要是房间)。作为指导,我们使用了这个非常有用的博客。绘制对象后,我们还想从外部选择自定义对象并将它们隔离在查看器中。正如教程建议的那样,我们更改模型构建器的changeFragmentsDbId函数以设置尚不存在的 DbId,因此不会与现有的 DbId 重叠。一种方法是为我们的自定义对象 DbId 使用负空间 [-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)
)时,查看器会自行刷新,但没有对象被隔离...因此,我们想知道如何隔离自定义对象?
另一种方式,当我们在查看器中选择对象时,适用于负空间方法 => 我们在聚合选择事件中获得 DbId(例如 -1)。
感谢您提供任何帮助!
解决方案
要隔离或选择由SceneBuilder
ext 创建的自定义对象,您需要将model
对象传递给Viewer3D#isolate
/Viewer3D#select
如下所示。否则,viewer
将使用viewer.model
代替。
viewer.isolate( [4906, 4907, 4908...], this.modelBuilder.model )
viewer.select( [4906, 4907, 4908...], this.modelBuilder.model )
推荐阅读
- html - 使用 html 和 css 创建卡片产品
- apache-kafka - Kafka Streams Hopping window top N by dimension
- css - 使用 Material-UI 的 Grid 组件,如何让一个单元格占据剩余的水平宽度?
- pyspark - 在 Pyspark Notebook 的列中用逗号分割字符串?
- javascript - 为什么使用 Openpgpjs 加密消息时出现错误?
- html - 如何防止顶部可扩展导航栏比正文宽?
- x86 - 如何捕获飞地内的持续时间?
- google-chrome - 无法从 localhost 连接到 COTURN 服务器
- python - 知道是否在 python 中访问了外部 url
- php - 无法使用 Carbon formatLocalized 方法返回本地化的 AM/PM 时间格式?