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 &quot;layer&quot; (not layer)))....
我试了,这一句陷入死循环,应该是(tblnext &quot;layer&quot; (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)
)
页: 1 [2] 3
查看完整版本: 再---请教如何用LISP的SSGET函数选中“非锁定层”的实体