好的,这是主函数的修订版。我没有更改提取函数,因此这里不再重复。试试这个,看看效果如何。
- (defun C:INCNUM ( / ss off e d s s1 i fltr StartNum EndNum CurNum)
- (setq fltr '((0 . "TEXT") (1 . "*#*")))
- (cond
- ( (not (setq ss (ssget fltr))) ; 4
- (prompt "\nNo valid text found to change.")
- )
- (T(initget 3) (setq off (getint "\nIncrement: ")) ; 4
- (initget 7) (setq StartNum (getint "\nStarting number: "))
- (initget 7) (setq EndNum (getint "\nEnding number: "))
- (setvar "cmdecho" 0) (command ".undo" "g")
- (repeat (setq i (sslength ss))
- (setq e (ssname ss (setq i (1- i))) ; 3
- d (entget e)
- s (cdr (assoc 1 d))
- ) ; 3
- (if
- (and
- (setq s (extract s)) ; 3
- (setq CurNum (atoi (cadr S)))
- (<= StartNum CurNum)
- (>= EndNum CurNum)
- )
- (entmod (list
- (cons -1 e)
- (cons 1 (strcat
- (car s)
- (itoa (+ off CurNum)) ; 4
- (caddr s)
- ) )
- ) )
- )
- ) ; 7
- (command ".undo" "e")
- )
- ) ; 3
- (princ)
- )
|