odygaro 发表于 2022-7-5 23:41:44

需要自动编号LISP sorti

大家好,
 
在这个论坛上非常新。我需要一个AutoLISP,这将帮助我自动编号块或文字。我知道“TCOUNT”很方便,但是该命令只提供了3个选项,关于如何编号、X、Y和选择顺序。我需要的是一个程序,它将根据距离点的距离对我的块/文本进行排序和编号。非常感谢您的帮助。

Tharwat 发表于 2022-7-6 00:05:31

欢迎来到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)
)

odygaro 发表于 2022-7-6 00:06:32

哇!它工作得很好。非常感谢你

Tharwat 发表于 2022-7-6 00:19:08

太棒了不客气
 
我真的很乐意帮忙。

David Bethel 发表于 2022-7-6 00:40:18

我记得一些关于vl排序丢弃重复原子的事情:
 
http://www.cadtutor.net/forum/archive/index.php/t-53600.html
 
这仍然适用吗-大卫

MSasu 发表于 2022-7-6 00:51:24

David,你的观察是正确的,除了Tharwat的代码不是排序原子,而是列表,排序后这些将被保留,即使相同。
页: [1]
查看完整版本: 需要自动编号LISP sorti