好的,我在试验LOGAND命令,只是作为一个学习练习。
我试着构建这个LISP:
- (defun c:BXLister (/ BX_Ans BX_Ent BX_List)
- (initget "Blocks Xrefs")
- (setq BX_Ans (getkword "\nList Blocks or XRefs? [blocks/XRefs] <Both> : "))
- (cond
- ((= BX_Ans "Blocks")
- (setq BX_Ent (tblnext "BLOCK" T)
- BX_List "Blocks: \n"
- ) ;_ end setq
- (while BX_Ent
- (if (eq 0 (logand 0 (cdr (assoc 70 BX_Ent))))
- (setq BX_List (strcat BX_List (cdr (assoc 2 BX_Ent)) "\n"))
- ) ;_ end if
- (setq BX_Ent (tblnext "BLOCK"))
- ) ;_ end while
- )
- ((= BX_Ans "XRefs")
- (setq BX_Ent (tblnext "BLOCK" T)
- BX_List "XRefs: \n"
- ) ;_ end setq
- (while BX_Ent
- (if (eq 4 (logand 4 (cdr (assoc 70 BX_Ent))))
- (setq BX_List (strcat BX_List (cdr (assoc 2 BX_Ent)) "\n"))
- ) ;_ end if
- (setq BX_Ent (tblnext "BLOCK"))
- ) ;_ end while
- )
- ((/= BX_Ans "XRefs" "Blocks")
- (setq BX_Ent (tblnext "BLOCK" T)
- BX_List "Blocks & XRefs: \n"
- ) ;_ end setq
- (while BX_Ent
- (setq BX_List (strcat BX_List (cdr (assoc 2 BX_Ent)) "\n"))
- (setq BX_Ent (tblnext "BLOCK"))
- ) ;_ end while
- )
- ) ;_ end cond
- (alert BX_List)
- (princ)
- ) ;_ end defun
我打算根据用户的输入列出外部参照或块。
然而,事实上,我遇到的问题并不是logand函数-问题发生在用户输入以列出外部参照时-程序将列出块和外部参照。
我认为cond语句有错误,但我看不出是什么
提前谢谢各位。 |