CADkitt 发表于 2022-7-6 11:10:33

用新模板更新旧模板

所以我不得不做很多无聊的工作,比如用新模板更新旧模板。我被要求将所有属性文本复制到新模板。不,我不打算做那个手册。所以我开始在论坛上搜索我可以使用的autolisp。到目前为止,我几乎得到了它,除了一个我丢失的小链接。问题是新模板没有与新模板相同的标签,甚至少了一个主题行。
 
所以我必须合并一个属性(att1+att2)=att3就足够了。
Edit在搜索battman lisp后找到了重命名标记lisp文件
edit2:我现在一切正常,只需要合并两个属性值。
EDIT3仅当块具有相同名称时,代码粘贴才起作用。该块尝试删除检查但失败。有人知道怎么取消姓名审查吗?
 
check new posts

CADkitt 发表于 2022-7-6 12:28:14

哈哈,我在这里做了很多非真题(至少我学到了很多)。
为我工作的代码现在用新标签重命名旧标签,然后用新标签替换模板,并用attsync更新模板。它还调整新模板的比例。
 
(defun changeTags (/ BLK DOC I TAGLST SS)
(vl-load-com)
(setq blk "A10"
   tagLst '(
      ;"Old Tag"    "New Tag"
("REG1"            "PROJECTTITLE2")
      ("REG2"           "TITLE1")
      ("REG3"            "TITLE2")
("CLIENT"            "CLIENT1")
("PROJECT"            "PROJECTTITLE1")
("REG1"            "PROJECTTITLE2")   
      )
   i -1
   doc (vla-get-activedocument (vlax-get-acad-object))
   )
(if (ssget "_X" (list (cons 0 "INSERT")(cons 2 blk)))
   (vlax-for bl (setq ss (vla-get-activeselectionset doc))
   (foreach att (vlax-invoke bl 'getAttributes)
   (If (assoc (vla-get-tagstring att) tagLst)
   (vla-put-tagstring att (cadr (assoc (vla-get-tagstring att) tagLst)))
   )))
   (princ "\nNo Selection Set Found."))
(princ)
(progn
        (command "-rename" "b" "A10" "new block NEW LOGO")
        (command "_.-insert" "new block NEW LOGO=Template_New_2010" "y" nil);replaced convert template to new template.
(command "_.attsync" "n" "new block NEW LOGO")
        (scl);; scales all templates
)(princ)(princ "succes!")(princ)
)

;; Run program manually with this:
(defun c:ChTag () (changeTags))

;; Uncomment this to run when lisp loaded
;(changeTags)

;; Scale the old template to new one
(defun scl (/ ss)
(vl-load-com)
(if (setq SS (ssget "_X" (list '(0 . "INSERT") (cons 2 "new block NEW LOGO"))))
;(if (setq ss (ssget '((0 . "CIRCLE,ARC,ELLIPSE"))))
   (mapcar
   (function
       (lambda (Obj)
         (vla-ScaleEntity Obj
         (vla-get-insertionpoint Obj)9.673518)))
   (mapcar 'vlax-ename->vla-object
       (vl-remove-if 'listp
         (mapcar 'cadr (ssnamex ss))))))
(princ))
这一切都是成批进行的,所以我要休息一天
页: [1]
查看完整版本: 用新模板更新旧模板