alin 发表于 2004-9-12 14:36:00

_$ (vl-sort '(2 4 1 45 2 1 3 3 ) '&lt;)<BR>(1 2 3 4 45)

dandee 发表于 2004-9-13 07:59:00

我只知道autolisp的函数,不知vl的,真是落伍了,还花了好长时间编sort,感谢alin回复,不过又有问题了:这个函数,只对我生成的list排序,不把重复的去掉。真是郁闷,能不能帮我解决这个问题。


       

dandee 发表于 2004-9-15 08:30:00

又有问题:


如果在acad里同时开了几个文件。想选取其中一个文件,只能在下拉菜单windows里点取,


我想问一下,是否还有其他的方法?

meflying 发表于 2004-9-15 12:18:00

ctrl+tab

dandee 发表于 2004-9-16 09:37:00

谢谢meflying. 还有问题请教:vl里有个“反应器”,图像可以附着反应器,


好像功能极其强大,有没有实用的例子?

dandee 发表于 2004-9-16 10:12:00

我是做建筑设计的,有个想法,平面图已经画好,是否可以在平面图上付着反应器。同时开两个view,一个view里是平面图,另一个是要画的立面,在画立面的同时,平面上的控制点也对应view移动?

meflying 发表于 2004-9-16 12:26:00

反映器的例子帮助文件里就有

行天下 发表于 2022-9-28 08:59:28

日常灌水,到此一看

osikou 发表于 2023-9-30 11:11:57

学习是一种进步,回帖是一种美德。

咏郡 发表于 2023-10-2 09:25:23

dandee 发表于 2004-9-12 09:26
用lisp编程,继续提问:




vl-sort



根据给定的比较函数来对表中的元素排序

(vl-sortlist comparison-function)
参数

list

任意表。

comparison-function

比较函数。它可以是任何一个这样的函数:接受如下两个参数,如果第一个参数按排序顺序在第二个元素之前,则返回 T 或非 nil 值。comparison-function 的值可以采用如下格式:

符号 (函数名)
'(LAMBDA (A1 A2) ...)
(FUNCTION (LAMBDA (A1 A2) ...))
返回值

表,其中包含 list 中的元素,这些元素按照 comparison-function 中指定的顺序排列。表中可能删除了重复的元素。

示例

对数值表排序:

_$ (vl-sort '(3 2 1 3) '<)
(1 2 3)   ;
请注意结果表中仅包含一个 3。

按 Y 坐标对二维点表排序:

_$ (vl-sort '((1 3) (2 2) (3 1))
             (function (lambda (e1 e2)
                         (< (cadr e1) (cadr e2)) ) ) )
((3 1) (2 2) (1 3))
对符号表排序:

_$ (vl-sort
   '(a d c b a)
   '(lambda (s1 s2)
    (< (vl-symbol-name s1) (vl-symbol-name s2)) ) )
(A B C D)       ;请注意在结果表中仅有一个 A
页: 1 [2]
查看完整版本: 高手请教