Alanjt:
我使用了你上次发布的代码。列表按照插入顺序排序,而不是按照从上到下的y轴排序。
是因为“caddr”返回第三个元素吗?我做错了什么?
我需要做的是对图纸上的一列文本重新编号。
- (defun C:sorty()
- (if (setq ss (ssget '((0 . "TEXT"))))
- (vl-sort
- ((lambda (i / lst)
- (while (setq e (ssname ss (setq i (1+ i))))
- (setq lst (cons e lst))
- )
- )
- -1
- )
- (function (lambda (a b) (> (caddr (assoc 10 (entget a))) (caddr (assoc 10 (entget b))))))
- )
- )
- ;************
- (and
-
- ((lambda (i)
- (while (setq e (ssname ss (setq i (1+ i))))
- (setq ent (entget e))
- (entmod (subst (cons 1 (strcat "'" (rtos (+ i 1) 2 0))) ;new item
- (assoc 1 ent) ; old item
- ent ;list
- )
- )
- )
- )
- -1
- )
- )
- (princ)
- ); DEFUN
|