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

AutoCAD LISP多段线绘制自动化 自动指定图层与自定义线型咨询

AutoCAD LISP 多段线自动指定图层与线型实现方案
  • 核心逻辑无需修改原有绘制逻辑,仅需在多段线生成后修改实体属性即可,也可选择提前切换全局绘图配置,两种需求都提供对应实现参考
  • 所有自定义名称可根据你的实际使用需求修改

完整代码示例

(defun c:你原有命令名 (/ *error* acadObj doc plineObj targetLayer customLinetype oldLayer oldLinetype)
  ;; 内置错误处理
  (defun *error* (msg)
    (if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*"))
        (princ (strcat "\n执行错误: " msg))
    )
    (princ)
  )
  (vl-load-com)
  (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))

  ;; ========== 配置部分 按你的需求修改 ==========
  ;; 目标图层,可改成固定值如 "MY_PL_LAYER" 不需要用户手动输入
  (setq targetLayer (getstring "\n请输入多段线目标图层名: "))
  ;; 自定义线型,替换为你自己的线型名称
  (setq customLinetype "MY_CUSTOM_LT")
  ;; ============================================

  ;; 校验图层是否存在,不存在自动创建,不需要可删除本段
  (if (not (tblsearch "LAYER" targetLayer))
    (vla-Add (vla-get-Layers doc) targetLayer)
  )
  ;; 校验线型是否已加载,未加载提示退出
  (if (not (tblsearch "LTYPE" customLinetype))
    (progn
      (alert (strcat "自定义线型 " customLinetype " 未加载,请先加载后重试"))
      (exit)
    )
  )

  ;; 保存原有全局图层、线型配置,绘制完成后恢复,不影响后续操作
  (setq oldLayer (getvar "CLAYER")
        oldLinetype (getvar "CELTYPE"))
  (setvar "CLAYER" targetLayer)
  (setvar "CELTYPE" customLinetype)

  ;; ============================================
  ;; 这里替换为你原有自定义函数里的多段线绘制逻辑
  ;; 以下为示例绘制逻辑,可删除
  (setq pt1 (getpoint "\n指定多段线起点: "))
  (setq pt2 (getpoint pt1 "\n指定下一点: "))
  (command "_.PLINE" pt1 pt2 "")
  ;; ============================================

  ;; 恢复原有全局配置
  (setvar "CLAYER" oldLayer)
  (setvar "CELTYPE" oldLinetype)

  (princ "\n多段线绘制完成,已自动匹配图层与线型")
  (princ)
)

修改说明

  1. 将代码中你原有命令名替换为你现有自定义函数的命令触发名
  2. 配置部分的targetLayer可设置为固定图层名字符串,不需要用户每次输入
  3. 配置部分的customLinetype替换为你自己的自定义线型的准确名称
  4. 把你原有绘制多段线的逻辑替换到代码标注的对应位置即可生效

内容的提问来源于stack exchange,提问作者Ozsvart Donat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:04