试试这个:
- (defun c:BumpUp (/ ELST ENT I NUM SEARCH SS STR)
- (setq search "1-1-K*")
- (if (setq i -1 ss (ssget "_:L" '((-4 . "<OR")
- (0 . "TEXT,MTEXT")
- (-4 . "<AND")
- (0 . "INSERT")
- (66 . 1)
- (-4 . "AND>")
- (-4 . "OR>"))))
-
- (while (setq ent (ssname ss (setq i (1+ i))))
- (cond ( (eq "INSERT" (cdr (assoc 0 (entget ent))))
- (while (not (eq "SEQEND"
- (cdr (assoc 0 (entget
- (setq ent
- (entnext ent)))))))
- (if (wcmatch
- (strcase
- (setq str
- (cdr (assoc 1 (setq eLst (entget ent))))))
-
- (strcase search))
- (if (setq num (atoi (substr str 6)))
- (progn
- (setq num (itoa (1+ num)))
- (while (< (strlen num) 3)
- (setq num (strcat "0" num)))
- (entupd
- (cdr (assoc -1
- (entmod
- (subst
- (cons 1 (strcat
- (substr str 1
- (- (strlen str) 3)) num))
-
- (assoc 1 eLst) eLst))))))))))
- (t (if (wcmatch
- (strcase
- (setq str
- (cdr (assoc 1 (setq eLst (entget ent))))))
-
- (strcase search))
- (if (setq num (atoi (substr str 6)))
- (progn
- (setq num (itoa (1+ num)))
-
- (while (< (strlen num) 3)
- (setq num (strcat "0" num)))
- (entupd
- (cdr (assoc -1
- (entmod
- (subst
- (cons 1 (strcat (substr str 1 (- (strlen str) 3)) num))
- (assoc 1 eLst) eLst))))))))))))
- (princ))
|