改为如下:
- (defun c:tt()
- (command "_undo" "be")
- (if (setq p1 (getpoint "\左上角:"))
- (if (setq p2 (getcorner p1 "\n右下角:"))
- (if (setq ss (ssget "w" p1 p2 '((0 . "TEXT")(8 . "JZP"))));;;这里在如何框选,一次没选够还可以再选
- (progn
- ;;取最小界址点号
- (setq i 0 slist nil)
- (repeat (sslength ss)
- (setq ssn (ssname ss i)
- endata (entget ssn)
- new_pp (atoi (cdr (assoc 1 endata)))
- slist (cons (list new_pp ssn) slist) ;构造包含界址点的表
- i (1+ i)
- )
- )
- (setq tmp_slist (vl-sort slist '(lambda(x1 x2)(< (car x1) (car x2))))) ;表从小到大排序
- ;;更新组码最小的(1 ."15")-〉(1 ."1")
- (setq i 1)
- (foreach ssn slist
- (setq endata (entget (cadr ssn))
- endata (subst (cons 1 (itoa i)) (assoc 1 endata) endata)
- i (1+ i)
- )
- (entmod endata)
- )
- )
- )
- )
- )
- (command "_undo" "e")
- (princ)
- )
|