You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:04