|
|
本帖最后由 zhb236623 于 2011-9-20 22:49 编辑
;;批量刷界址点,不改变属性,只更改界址点号jp.lsp
正常使用用第一个,如果 起始点不是要改为1则用第二个程序 ...
;;框选界址点,可多次选择,重复也可以,例;更新最小的组码(1 ."15")-〉(1 ."1")以此类推
(defun c:jp()
;;(princ"框选界址点,可多次选择,重复也可以,例;更新最小的组码(1 ."15")-〉(1 ."1")以此类推: ")
(command "_undo" "be")
(if (setq ss (ssget '((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 tmp_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)
)
;;框选界址点,可多次选择,重复也可以,例;更新最小的组码(1 ."15")-〉(1 ."1")以此类推
(defun c:jp1()
;;(princ"框选界址点,可多次选择,重复也可以,例;更新最小的组码(1 ."15")-〉(1 ."1")以此类推: ")
(command "_undo" "be")
(if (setq ss (ssget '((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")
(if (not (setq i (getint "\n请输入起始顺序号 <1>: ")))
(setq i 1)
)
(foreach ssn tmp_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)
)
|
评分
-
查看全部评分
|