如何设置Edit2D折线工具线宽不随查看器缩放改变大小
Edit2D Polyline工具固定6英寸线宽解决方案
方案1:模型空间固定尺寸(推荐,和Snapper实现逻辑一致)
该方案直接复用Edit2D Snapper的实现逻辑,将线宽设置为模型空间下的物理尺寸,设置后无需额外监听事件,线宽不会随相机缩放变化,且自动适配不同模型的单位设置。
具体代码实现:// 英寸转当前模型单位的工具函数 function convertInchToModelUnit(inchVal, viewerInstance) { // 获取当前模型单位与米的换算比例 const modelUnitScale = viewerInstance.model.getUnitScale(); // 1英寸固定等于0.0254米 const meterPerInch = 0.0254; return inchVal * meterPerInch / modelUnitScale; } // 执行线宽设置 const targetWidth = 6; // 目标线宽6英寸 edit2DTools.polylineTool.style.isScreenSpace = false; edit2DTools.polylineTool.style.lineWidth = convertInchToModelUnit(targetWidth, viewer);该方案就是你在Snapper源码中看到的实现逻辑,Snapper的固定尺寸标记就是通过将样式
isScreenSpace设为false,再赋值模型空间下的物理尺寸实现的,直接套用即可达到相同效果。方案2:屏幕空间动态适配
如果需要基于屏幕显示的DPI校准线宽,可以采用屏幕空间模式,监听相机变化事件动态调整像素宽度:// 线宽更新函数 function updateFixedLineWidth() { const standardDPI = 96; // 普通屏幕默认DPI,可根据实际校准需求调整 edit2DTools.polylineTool.style.isScreenSpace = true; edit2DTools.polylineTool.style.lineWidth = 6 * standardDPI; } // 绑定相机缩放/移动事件,触发线宽自动更新 viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT, updateFixedLineWidth); // 初始化时调用一次完成初始设置 updateFixedLineWidth();
内容的提问来源于stack exchange,提问作者Benito
相关产品推荐
相关产品推荐

