yqwzx
发表于 2003-12-22 20:31:00
龙龙仔老大,你那个:l好用啊,厉害,不愧为斑竹老大。你是怎么知道这个的啊老大?
luoyaya
发表于 2003-12-23 17:40:00
MEFILYING的(tblnext "layer" (not layer))这句不错呵呵,偶没想到的~:)
hiper
发表于 2003-12-23 22:20:00
两位版主都很厉害,非常谢谢,我给每位都送了一朵鲜花,特别谢谢 Meflying!
hiper
发表于 2003-12-23 23:11:00
(while (setq unlayer (tblnext "layer" (not layer)))....
我试了,这一句陷入死循环,应该是(tblnext "layer" (not layer))中(not layer)老是为T,怎么回事?luoyaya知道吗,我也给你送朵鲜花
我打算用个笨办法,不用(not layer)在while前面多加一句,
hiper
发表于 2003-12-23 23:14:00
我的笨办法可行:
(defun getunlockLayer ( / unlayer lay_list)
(setq unlayer (tblnext "layer" ))
(setq lay_list (list (cons 8 (cdr (assoc 2 unlayer)))))
(while (setq unlayer (tblnext "layer" ))
(if (= (cdr (assoc 70 unlayer)) 0)
(setq lay_list (append lay_list (list (cons 8 (cdr (assoc 2 unlayer))))))
)
)
(append (cons (cons -4"<OR") lay_list) (list (cons -4"OR>")))
)
hiper
发表于 2003-12-23 23:18:00
while前面那句应该是:(setq unlayer (tblnext "layer" T))
meflying
发表于 2003-12-24 08:06:00
hiper发表于2003-12-23 23:11:00static/image/common/back.gif(while (setq unlayer (tblnext "layer" (not layer)))....
我试了,这一句陷入死循环,应该是(tblnext "layer" (not layer))中(not layer)老是为T,怎么回事?luoyaya知
如果你用我那个简洁的程序就不应该改它,除非你看明白了。。。
你修改后产生了错误,如果用unlayer代替layer,就应该全部代替(包括(not layer)和(defun xxx( / layer...)...)这些地方。。。如果任何一个地方没有代替掉,都有可能产生错误。。。
hiper
发表于 2003-12-25 01:01:00
谢谢,我还以为(not layer)中的layer是tblnext取的layer内部函数表呢
不过你取的变量名和内部函数表一样的确容易使人混淆,我觉得还是应该有所区别
meflying
发表于 2003-12-25 08:13:00
layer并不是LISP的保留字符串,没有layer这样一个函数,怎么混淆?
aeo000000
发表于 2003-12-26 00:12:00
LUCAS简化
(defun getLayer ( / lay lay_list a)
(while(setq lay(tblnext "layer" (not lay)))
(if (= (cdr(assoc 70 lay))0)
(setq a(strcat(if a a"")","(cdr(assoc 2 lay))))
)
)
(cons 8 a)
)