ld_117 发表于 7 天前

属性块属性值复制

套图框的时候,图框是个属性框,一个一个拷太麻烦了,用deepseek生成了一个代码,蛮好用的。


;;2025.8.22
;;DeepSeek生成
;;复制属性块的值
(defun c:BBV (/ ss_source ss_target ent_source ent_target
                        attribs_source attribs_target attdef_source
                        attdef_target tag value found)
        (vl-load-com)
;; 选择源属性块
        (princ "\n选择源属性块: ")
        (setq ss_source (ssget ":S" '((0 . "INSERT") (66 . 1))))
        (if (not ss_source)
                (progn
                        (princ "\n未选择源属性块或选择的对象不是属性块。")
                        (exit)
                )
        )
        (setq ent_source (ssname ss_source 0))
        ;; 选择目标属性块
        (princ "\n选择目标属性块: ")
        (setq ss_target (ssget ":S" '((0 . "INSERT") (66 . 1))))
        (if (not ss_target)
                (progn
                        (princ "\n未选择目标属性块或选择的对象不是属性块。")
                        (exit)
                )
        )
        (setq ent_target (ssname ss_target 0))
        ;; 获取源属性块的属性
        (setq attribs_source (vlax-invoke (vlax-ename->vla-object ent_source) 'GetAttributes))
        ;; 获取目标属性块的属性
        (setq attribs_target (vlax-invoke (vlax-ename->vla-object ent_target) 'GetAttributes))
        ;; 遍历源属性块的所有属性
        (foreach att attribs_source
                (setq tag (vla-get-TagString att)
                        value (vla-get-TextString att)
                        found nil)
                ;; 在目标属性块中查找相同标签的属性
                (foreach target_att attribs_target
                        (if (= tag (vla-get-TagString target_att))
                                (progn
                                        (vla-put-TextString target_att value)
                                        (setq found T)
                                )
                        )
                )
                (if (not found)
                        (princ (strcat "\n警告: 目标块中未找到属性 '" tag "'"))
                )
        )
        (vla-update (vlax-ename->vla-object ent_target))
        (princ "\n属性值复制完成。")
        (princ)
)


页: [1]
查看完整版本: 属性块属性值复制