从最小值开始组织列表
你好!!我如何循环浏览一个列表并比较列表上写的数字,从而从最小到最大地组织它们??
“这是我的列表(25164.4 25164.4 21853.4 21708.6 25678.9.12875.3)”
谢谢你
^^不确定作为列表的一部分,独立小数正在做什么^^
举个例子:
(vl-load-com)
(setq myList (list 25164.4 25164.4 21853.4 21708.6 25678.9 12875.3))
(setq myNewList (vl-sort myList '<))
是的,你的意思是我必须指定(按x或y排序)我不能像坐标原点最近的一样组织它们吗??? 李为什么不。。。
(12875.3 21708.6 21853.4 25164.4 25164.4 25678.9)
基数0索引
您可以使用任何谓词函数对其进行排序,该函数为所需的排序结果返回非nil:
(defun SortByX ( lst )
(vl-sort lst '(lambda ( a b ) (< (car a) (car b))))
)
(defun SortByY ( lst )
(vl-sort lst '(lambda ( a b ) (< (cadr a) (cadr b))))
)
(defun SortByZ ( lst )
(vl-sort lst '(lambda ( a b ) (< (caddr a) (caddr b))))
)
当然,原点可以被任何点替换。 非常感谢你pBe和李mac你救了我两次
但最重要的是:你了解这个方法吗? 是的,我刚开始学习autolisp。。。实际上是一个月前
你能再帮我一点忙吗
当我整理列表时(按y排序:
(defun SortByN ( n lst )
(vl-sort lst '(lambda ( a b ) (< (nth n a) (nth n b))))
)
我想在一个列表中添加相同y的所有坐标,这样我的列表就会是这样
(defun SortByMagnitude ( lst )
(vl-sort lst '(lambda ( a b ) (< (distance '(0. 0. 0.) a) (distance '(0. 0. 0.) b))))
)
非常感谢。 不是很好的编码
((25736.0 8902.08) (28627.0 8902.08) (22425.0 8902.08) (25316.0 8902.08)
(28627.0 11781.1) (25736.0 11781.1) (25316.0 11781.1) (22425.0 11781.1)
(25736.0 12201.1) (28627.0 12201.1) (22425.0 12201.1) (25316.0 12201.1)
(28627.0 15080.1) (25736.0 15080.1) (25316.0 15080.1) (22425.0 15080.1)) 非常感谢你,我把这个函数叫做leeMac(l/sub)lol
页:
[1]
2