ljs026 发表于 2004-9-2 23:07:00

[LISP]此程序如何才能複選物件

请问此程序如何才能复选物件,现在只能单选完就执行了,如何在我复选完之后才执行另<BR>(defun c:gt( / ent lname)<BR>       (setvar "cmdecho" 0)<BR>       (setq ent (entsel "\n请选择要关闭的图层: "))<BR>       (if ent <BR>                       (progn<BR>                                       (setq ent (entget (car ent)))<BR>                                       (setq lname (cdr (assoc 8 ent)))<BR>                       )<BR>                       (setq lname (getstring "\n未选取 , 请输入图层名: "))<BR>       ) ;if ent<BR>       (if (= (getvar "clayer") lname) <BR>                       (setvar "clayer" "0")<BR>       )<BR>       (command "layer" "off" lname "")<BR>       (princ)<BR>)

王咣生 发表于 2004-9-3 00:11:00

回复

参考:


test dwg file:





lsp program:

ljs026 发表于 2004-9-3 07:56:00

大大可以解释一下这个程序每一句的意思吗?小弟是菜鸟,有些不理解,如果不要\n未选取        ,        请输入图层名:        这个功能 ,应当怎么做呢?

王咣生 发表于 2004-9-3 08:53:00

回复

你不是已经做了吗?我只是在你的代码基础上改了一些.


我觉得不用每一句都解释,你用过几次,这些代码的意思就不言自明了.


先从功能看它能实现什么,不必刻意记每一句什么意思.

ljs026 发表于 2004-9-3 10:12:00

再请问大大,这个程序遇到是当前层时就起不了作用,如何才能实现遇见是当前层时一样可以关闭,而图层自动切换到0层或其它层呢?

王咣生 发表于 2004-9-3 11:53:00

回复

上面的程序是你写的吗?


       (if (= (getvar "clayer") lname) <BR>                       (setvar "clayer" "0")<BR>       )<BR>       (command "layer" "off" lname "")


这些代码不就是你所问的问题吗?

ljs026 发表于 2004-9-3 12:36:00

上面的程序并不是小弟所写,是网上看到的,只是想依小弟的需要做修改,只能到此拜託大大们帮帮忙,虽然大大回覆了,但问题仍在,依旧不能关闭当前层的物件耶!

ljs026 发表于 2004-9-3 12:37:00

再请问大大,这个程序如何改成保留图层,而不是关闭图层

ljs026 发表于 2004-9-6 22:32:00

没人理我?!鸣~~~~

王咣生 发表于 2004-9-6 23:01:00

回复

什么叫保留图层,AutoCAD中可没有这样的术语.


你还是讲清楚你的要求,并且自己多多动手写一写.
页: [1] 2
查看完整版本: [LISP]此程序如何才能複選物件