afeng0712 发表于 2004-12-22 17:32:00

飞哥,请进!

如何重新定义一旧选择集???(比如有选择集SS,经过排序后得到选择集SSA,现在我要把SSA赋值给SS,即SS选择集与SSA内容相等!好象不能用SETQ。但对还不是VAL对象的选择集SS又无法释放元素??)

xstlf 发表于 2004-12-22 18:08:00

我是用,pt1 pt2作为全局变量。窗选选择集,通过二次窗选来实现的。我试了能用。



(setq pt1 (getpoint "\n窗口选择要修剪的墙体:")<BR>                                                       pt2 (getcorner p1 "\n选择窗口的另一角:"))<BR>       (setq ss (ssget "W" pt1 pt2 '((0 . "line")(8 . "墙体")))
。。。。。。。
。。。。。。。
(setq ssa (ssget "W" pt1 pt2 '((0 . "line"))))

meflying 发表于 2004-12-22 18:50:00

为什么不能setq?????


(defun c:test( / ss ssa i)<BR>       (setq ss (ssget))<BR>       (setq ssa ss)<BR>       (setq i 0)<BR>       (repeat (sslength ssa)<BR>                       (redraw (ssname ssa i) 3)<BR>                       (setq i (1+ i))<BR>       )<BR>       (princ)<BR>)

xstlf 发表于 2004-12-22 20:21:00

哎,我现在弄出来的程序都是肥得不得了。慢慢地学,慢慢地可以减肥。呵呵。

afeng0712 发表于 2004-12-22 21:08:00

飞哥,在你的程序后面假如经过一系列的变动(/= ss ssa)还能重新(setq ss ssa)注意是对已有的的选择集你上面的ssa不算是我所说的?


好象对于选择集不可以在单纯的等于来处理哈!<BR>

xstlf 发表于 2004-12-22 21:12:00

那你就试试我的吧。我曾这么用过。编了一个,但程序肥得太厉害了,象个大肥婆。二吨半。

meflying 发表于 2004-12-23 08:22:00

选择集的比较使用equal


无论ss原来是什么,(setq ss ssa)之后,ss都变成跟ssa一样

afeng0712 发表于 2004-12-24 12:34:00

我想问是不是子程序的实参数(是一选择集,但不是他的局部变量而是主程序的局部变量),不能在子程序的结尾处重新赋值???

meflying 发表于 2004-12-24 12:47:00

把参数重新赋值做什么?


使用返回值就可以了。。。


(setq ss (mod ss))


(defun mod(ss)


       (setq       ssa ss)


       ...;改变ssa


       ssa;最后一个表达式的值,作为函数Mod的返回值


)

行天下 发表于 2022-9-27 13:08:36

尽量学习一下大佬的经验
页: [1]
查看完整版本: 飞哥,请进!