为了防止程序“崩溃”,这里有一种方法可以使用您已有的代码行“循环”。
- (defun C:chatts ()
- (defun attsearch () (setq TagSearch (entnext BlkName))) ;;defun
- [color="blue"](if [/color](setq Blk (ssget "X" '((2 . "AttributeTest")[color="blue"](66 . 1)[/color])))
- [color="blue"](repeat (sslength blk)[/color]
- (setq BlkName (ssname blk 0))
- (attsearch)
- (setq TagFound (cdr (assoc 2 (entget BlkName))))
- [color="blue"](if [/color](while [color="blue"](and[/color] (/= TagFound[b][color="#8b0000"] "DWG_TITLE"[/color][/b])
- [color="blue"](setq TagSearch (entnext TagSearch))
- )[/color]
- (setq TagFound (cdr (assoc 2 (entget TagSearch))))
- )
- ;;while
- [color="blue"](progn[/color]
- (setq old (assoc 1 (entget TagSearch)))
- (setq new (cons 1 [b][color="#8b0000"]"Attribute Lisp"[/color][/b]))
- (setq NewList (subst new old (entget TagSearch)))
- (entmod NewList)
- (entupd (cdr (assoc -1 (entget TagSearch))))
- [color="blue"])
- )
- (ssdel BlkName Blk)
- )[/color]
- )
- )
哎呀。太晚了,我已经发布了代码,OP说没有必要保留。
粗体颜色的文本是您需要更改的“内容”,以用于另一个标记名和字符串值。
但是,您可以将函数更改为接受参数
- (defun [b][color="purple"]chatts (tag str)[/color][/b]
- (defun attsearch () (setq TagSearch (entnext BlkName))) ;;defun
- (if (setq Blk (ssget "X" '((2 . "AttributeTest")(66 . 1))))
- (repeat (sslength blk)
- (setq BlkName (ssname blk 0))
- (attsearch)
- (setq TagFound (cdr (assoc 2 (entget BlkName))))
- (if (while (and (/= TagFound [b][color="purple"]tag[/color][/b])
- (setq TagSearch (entnext TagSearch))
- )
- (setq TagFound (cdr (assoc 2 (entget TagSearch))))
- )
- ;;while
- (progn
- (setq old (assoc 1 (entget TagSearch)))
- (setq new (cons 1 [b][color="purple"]str)[/color][/b])
- (setq NewList (subst new old (entget TagSearch)))
- (entmod NewList)
- (entupd (cdr (assoc -1 (entget TagSearch))))
- )
- )
- (ssdel BlkName Blk)
- )
- )
- )
(chatts“ANOTHERTAG”“另一个字符串值”)
HTH公司 |