satishrajdev 发表于 2022-7-5 16:34:22

Vanila Lisp中的排序点列表

你好
 
我试图为draftsight创建一个代码,但正如我们所知,它只支持AutoLISP而不支持Visual LISP。我被困在一个点,我想在X和Y方向排序点列表,我们可以使用VL-sort函数,但我没有找到任何autolisp函数替代它。我希望能从你那里得到一些想法。
 
等待您的输入。
 
当做
萨提什语

rkmcswain 发表于 2022-7-5 16:45:20

你可以从这里开始:http://www.faqs.org/faqs/CAD/autolisp-faq/part1/section-9.html

satishrajdev 发表于 2022-7-5 16:51:38

哇!谢谢。。。

Grrr 发表于 2022-7-5 17:05:12

 
那些不是吉尔写的吗?在这个线程中。
 
顺便说一句,这里有一些简单的版本:
 

; _$ (SortPointList 'x '((0 1 2) (2 0 1) (1 2 0))) -> ((0 1 2) (1 2 0) (2 0 1))
; _$ (SortPointList 'y '((0 1 2) (2 0 1) (1 2 0))) -> ((2 0 1) (0 1 2) (1 2 0))
; _$ (SortPointList 'z '((0 1 2) (2 0 1) (1 2 0))) -> ((1 2 0) (2 0 1) (0 1 2))
(defun SortPointList ( mode pL )
(cond
   ( (not (vl-position mode '(x y z))) (princ "\nInvalid mode.") )
   (T
   (vl-sort pL
       '(lambda (p1 p2)
         (apply '< (mapcar (cdr (assoc mode '((x . car)(y . cadr)(z . caddr)))) (list p1 p2)))
       )
   )
   )
); cond
); defun

Lee Mac 发表于 2022-7-5 17:16:54

这是quicksort的另一个实现,可以修改代码以接受任意排序函数。

rkmcswain 发表于 2022-7-5 17:19:56

 
IDK。您引用的线程来自2011年,@gile没有提及此代码的来源。
我链接中的代码是1998年7月的。

satishrajdev 发表于 2022-7-5 17:26:53

 
谢谢你的努力,但我上面提到,我不想使用VL函数。
 
 
谢谢你

Grrr 发表于 2022-7-5 17:37:59

 
啊,很抱歉,我没有仔细阅读。
页: [1]
查看完整版本: Vanila Lisp中的排序点列表