如何动态修改SceneBuilder添加形状的宽高比及检测其包围构件?
问题解答
1. 动态修改SceneBuilder添加形状的宽高比
SceneBuilder默认添加的形状(如矩形、多边形等)不自带拖拽四角调整宽高比的交互,但可以通过以下方式实现:
- 监听Viewer的鼠标事件(
mousedown、mousemove、mouseup),跟踪形状顶点的拖拽操作 - 通过
sceneBuilder.getAddedShapes()获取目标形状实例,在拖拽过程中实时更新其顶点坐标或尺寸参数 - 调用
sceneBuilder.updateShape()方法刷新形状的渲染效果
2. 检测形状包围的构件
要识别被SceneBuilder形状包围的构件,可按以下步骤操作:
- 获取目标形状的边界盒数据,转换为Viewer的3D空间坐标
- 使用Viewer的
viewer.utilities.intersectBoxWithModel()方法,筛选出与形状边界盒相交的构件 - 若需要更精确的区域检测,可通过
viewer.impl.modelQueue().getModel(modelId).getData().instanceTree遍历所有构件,逐个判断构件边界盒是否处于目标形状的区域内
关于Edit2d扩展:
Edit2d扩展主要服务于2D图纸的标注与编辑,其创建的形状与3D模型的SceneBuilder形状分属不同管理体系,无法直接将Edit2d的拖拽逻辑复用在SceneBuilder的3D形状上。如果你的场景基于3D模型,建议优先结合SceneBuilder API与Viewer交互能力实现需求。
内容的提问来源于stack exchange,提问作者Takahiro Matsumoto
相关产品推荐
相关产品推荐

