可能为首字母添加此方法,然后只需要1个版本的代码。
- (defun changeAttribValue (ent atttag oldval newval / entl)
- (while (and ent (/= "SEQEND" (cdr (assoc 0 (setq entl (entget ent))))))
- (and (= atttag (cdr (assoc 2 entl)))
- (= oldval (cdr (assoc 1 entl))) ;<- could use WCMATCH instead
- (entmod (subst (cons 1 newval) (assoc 1 entl) entl))
- (entupd ent)
- (mapcar 'princ (list "\n" oldval " -> " newval))
- )
- (setq ent (entnext ent))
- )
- )
- (defun C:CHATTRIB (/ ss a attag bname oldval newval)
- (and (/= "" (setq bname (getstring "\nBlock name: ")))
- (/= "" (setq attag (getstring T "\nTag: ")))
- (/= "" (setq oldval (getstring T "\nOld value: ")))
- (/= "" (setq newval (getstring T "\nNew value: ")))
- (setq a 0
- ss (ssget "X" (list '(0 . "INSERT") '(66 . 1) (cons 2 bname)))
- )
- (repeat (sslength ss)
- (changeAttribValue (ssname ss a) attag oldval newval)
- (setq a (1+ a))
- )
- )
- )
- [b][color=BLACK]([/color][/b]defun c:revby [b][color=FUCHSIA]([/color][/b]/ by ss i en an ad f[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq by [color=#2f4f4f]"T.J.M."[/color][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 66 1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]setq f nil
- an [b][color=GREEN]([/color][/b]entnext en[b][color=GREEN])[/color][/b]
- ad [b][color=GREEN]([/color][/b]entget an[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"ATTRIB"[/color] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 0 ad[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]= [color=#2f4f4f]"REVBY"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 2 ad[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]setq f T[b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]entmod [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons 1 by[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]assoc 1 ad[b][color=PURPLE])[/color][/b] ad[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]setq an [b][color=BLUE]([/color][/b]entnext an[b][color=BLUE])[/color][/b]
- ad [b][color=BLUE]([/color][/b]entget an[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]if f [b][color=GREEN]([/color][/b]entupd en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
|