高手请教
有两个问题:1,我用vports开了两个视窗,如果不用鼠标点击,如何用键盘操作,分别激活其中一个窗口。或者如何用lisp去激活窗口。
2,用了(ssget)有了一个选择集,做了copy的命令,生成新的objects,问题是如何利用lisp直接生成新的objects的选择集 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
学习是一种进步,回帖是一种美德。 日常灌水,到此一看 2,用了(ssget)有了一个选择集,做了copy的命令,生成新的objects,问题是如何利用lisp直接生成新的objects的选择集
用 entmake 函数,帮助文件里有介绍 entmake可以生成新的对象,这个我知道。情况是:用了copy命令,生成新的对象,
我的问题是,如何对新生成的对象,做成一个选择集,用 (ssget "L"),只有最后一个,而不是新生成全部的对象 1. Change the system variable "CVPORT"
2. Use (entlast) to get the last entity before "copy", then use ENTNEXT loop through the drawing database to nil. (defun c:aa (/ lastent ss ss1)<BR> (setq lastent (entlast)) ;取得最后一个图元<BR> (setq ss (ssget)) ;选择图元<BR> (command "_.COPY" ss "" pause pause) ;拷贝<BR> (setq ss1 (ssadd)) ;建立空选集<BR> (while<BR> (setq lastent (entnext lastent))<BR> (setq ss1 (ssadd lastent ss1)) ;加入 ss1 选集<BR> )<BR> (command "_.MOVE" ss1 "" pause pause) ;移动拷贝出的图元<BR>) 用了(ssget)有了一个选择集,做了copy的命令,生成新的objects,问题是如何利用lisp直接生成新的objects的选择集
在COPY前先用(setq ss1 (ssget "x"))创建一个选择集。
COPY后再用(setq ss2 (ssget "x"))创建一个选择集,两个选择集相减就可以了。
(command "select" ss1 "r" ss2 "" "") u guys.! appreciate your help! thx! lockmyeye发表于2004-9-10 19:00:00static/image/common/back.gif用了(ssget)有了一个选择集,做了copy的命令,生成新的objects,问题是如何利用lisp直接生成新的objects的选择集
在COPY前先用(setq ss1 (ssg...
果然是好办法,又学到一招。。<BR> 用lisp编程,继续提问:
1。有一个表,其中很多数是重复的,如何去掉重复的数字。
2。去掉重复数后,如何排序。 有没有多种方案,我希望多掌握点编程技巧
页:
[1]
2