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

Autodesk Forge Markup直线功能实现咨询:移除箭头/限制多边形工具

解决Document Markup中简单直线绘制的两种方案

方案一:移除Arrow工具的箭头,保留直线样式

直接在Arrow工具激活时强制覆盖箭头样式参数,避免默认样式继承覆盖,实现纯直线绘制:

  • 监听工具切换事件,当激活Arrow工具时,将箭头的起始/结束宽度、长度设为0,同时保留需要的线条宽度:
markup.editor.on('toolChanged', (toolName) => {
  if (toolName === 'Arrow') {
    markup.editor.setStyles({
      arrow: {
        strokeWidth: 2, // 设置你需要的直线宽度
        arrowStartWidth: 0,
        arrowEndWidth: 0,
        arrowStartLength: 0,
        arrowEndLength: 0
      }
    });
  }
});

设置完成后,Arrow工具绘制的内容就是纯直线,箭头完全隐藏,线条宽度可正常自定义,不会被默认样式覆盖。

方案二:强制Polygon工具简化直线绘制操作

如果你偏好使用Polygon工具,可通过监听事件实现点击两次自动结束,或拖拽式快速绘制:

方式1:点击两次自动完成绘制

监听多边形顶点添加事件,当顶点数达到2时立即结束绘制,无需双击:

markup.editor.on('annotationAdded', (annotation) => {
  if (annotation.ToolName === 'Polygon') {
    const vertices = annotation.getVertices();
    if (vertices.length === 2) {
      markup.editor.completeAnnotation();
    }
  }
});

方式2:拖拽式绘制(点击起点拖拽到终点即完成)

通过鼠标事件监听,实现类似拖拽画直线的操作:

let isDrawing = false;

markup.editor.on('mouseDown', (e) => {
  if (markup.editor.getCurrentToolName() === 'Polygon') {
    isDrawing = true;
  }
});

markup.editor.on('mouseUp', (e) => {
  if (isDrawing && markup.editor.getCurrentToolName() === 'Polygon') {
    isDrawing = false;
    markup.editor.addPoint(e.location);
    markup.editor.completeAnnotation();
  }
});

这种方式下用户只需点击起点并拖拽到终点,松开鼠标就完成直线绘制,操作更流畅。

内容的提问来源于stack exchange,提问作者Chrissy Semens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:23:23