需要自动编号LISP sorti
大家好,在这个论坛上非常新。我需要一个AutoLISP,这将帮助我自动编号块或文字。我知道“TCOUNT”很方便,但是该命令只提供了3个选项,关于如何编号、X、Y和选择顺序。我需要的是一个程序,它将根据距离点的距离对我的块/文本进行排序和编号。非常感谢您的帮助。
欢迎来到CADTutor
试试这段代码,它应该处理块,让我知道你会如何处理它。
注意:如果文字高度不适合您,您可以将其从1更改为代码中所示的高度。
(defun c:Test (/ ss pt i sn p l lst n)
(if (and (setq ss (ssget '((0 . "INSERT"))))
(setq pt (getpoint "\n Specify Center point :"))
)
(progn
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i)))
p(cdr (assoc 10 (entget sn)))
l(cons (list (distance pt p) p) l)
)
)
(setq lst (vl-sort l (function (lambda (j k) (< (car j) (car k)))))
n 0
)
(foreach x lst
(entmakex (list '(0 . "TEXT")
(cons 10 (cadr x))
(cons 11 (cadr x))
(cons 1 (itoa (setq n (1+ n))))
(cons 40 1.0) ; Text height
)
)
)
)
)
(princ)
)
哇!它工作得很好。非常感谢你 太棒了不客气
我真的很乐意帮忙。 我记得一些关于vl排序丢弃重复原子的事情:
http://www.cadtutor.net/forum/archive/index.php/t-53600.html
这仍然适用吗-大卫 David,你的观察是正确的,除了Tharwat的代码不是排序原子,而是列表,排序后这些将被保留,即使相同。
页:
[1]