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

AutoCAD LISP开发需求:复制块属性VISINA值至另一块属性RELATIVNA

AutoCAD LISP 属性值复制粘贴解决方案

以下是实现你需求的LISP代码,直接可用:

(defun c:CopyProp (/ srcBlk srcAtt destBlk destAtt propValue)
  ;; 选择带有VISINA属性的源块
  (setq srcBlk (entsel "\n选择带有VISINA属性的块: "))
  (if srcBlk
    (progn
      ;; 获取源块的所有属性对象
      (setq srcAtt (vlax-invoke (vlax-ename->vla-object (car srcBlk)) 'GetAttributes))
      (setq propValue nil)
      ;; 遍历属性,找到VISINA并读取值
      (foreach att srcAtt
        (if (= (strcase (vla-get-TagString att)) "VISINA")
          (setq propValue (vla-get-TextString att))
        )
      )
      (if propValue
        (progn
          ;; 选择要赋值的目标块
          (setq destBlk (entsel "\n选择要粘贴RELATIVNA属性的块: "))
          (if destBlk
            (progn
              ;; 获取目标块的所有属性对象
              (setq destAtt (vlax-invoke (vlax-ename->vla-object (car destBlk)) 'GetAttributes))
              ;; 遍历属性,找到RELATIVNA并设置值
              (foreach att destAtt
                (if (= (strcase (vla-get-TagString att)) "RELATIVNA")
                  (progn
                    (vla-put-TextString att propValue)
                    (princ (strcat "\n已将值 \"" propValue "\" 粘贴到RELATIVNA属性"))
                  )
                )
              )
            )
            (princ "\n未选择目标块")
          )
        )
        (princ "\n所选块中未找到VISINA属性")
      )
    )
    (princ "\n未选择源块")
  )
  (princ)
)

使用说明

  1. 把代码复制到AutoCAD命令行回车,或者保存为.lsp文件,通过APPLOAD命令加载。
  2. 在命令行输入CopyProp,按提示依次选择带VISINA属性的块和要设置RELATIVNA属性的块即可。

代码关键点

  • 用entsel实现交互式选择块,确保用户能精准选择目标对象。
  • 通过VLA对象操作属性,比传统LISP函数更稳定,支持所有带属性的块。
  • 用strcase统一属性名大小写,避免因属性名大小写不一致导致匹配失败。
  • 每一步都加了错误提示,比如未选块、找不到对应属性时会给出明确反馈。

内容的提问来源于stack exchange,提问作者Zoran Lazic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:04:59