请问 LOGAND 的详细用法 (陈老师你那本书也说得太不详细了,就HELP里那两个例子,
请问 LOGAND 的详细用法 (陈老师你那本书也说得太不详细了,就HELP里那两个例子,看不懂) 谢谢各位大神分享 一言惊醒梦中人!!!logand就是求逻辑与
(logand num1 num2),你可将num1和num2都化为二进制,如10和21010
0010
0010
即是2(10)
喔,谢谢,不知这个有什么实际用途。
举个例子
如你要判断一多义线是否闭合(setq en (car(entsel))
el (entget en)
flag70 (cdr (assoc 70 el))
)
(if (= (logand flag70 1) 1)
(print "此多义线闭合")
)
你也许要说我直接判断其是否等于1不
真没看出它有多大用啊。
autocad的许多系统变量与位运算有关,比如undoctl, pickstyle。使用位存储是比较节
autocad的许多系统变量与位运算有关,比如undoctl, pickstyle。使用位存储是比较节省空间的方法。以下面一组undo函数为例(defun undo_on ()
(setq undo_setting (getvar "undoctl"))
(cond
((= 2 (logand undo_setting 2)) ; Undo is one
(command "_.undo" "_control" "_all" "_.undo" "_auto" "_off")
)
((/= 1 (logand undo_setting 1)) ; Undo is disabled
(command "_.undo" "_all" "_.undo" "_auto" "_off")
)
)
)
(defun undo_off ()
(cond
((/= 1 (logand undo_setting 1))
(command "_.undo" "_control" "_none")
)
((= 2 (logand undo_setting 2))
(command "_.undo" "_control" "_one")
)
)
)
(defun undo_push ()
(setq undo_init (getvar "undoctl"))
(cond
((and (= 1 (logand undo_init 1)) ; enabled
(/= 2 (logand undo_init 2)) ; not ONE (ie ALL is ON)
(/= 8 (logand undo_init 8)) ; no GROUP active
)
(command "_.undo" "_group")
)
(T)
)
;; If Auto is ON, turn it off.
(if (= 4 (logand 4 undo_init))
(command "_.undo" "_auto" "_off")
)
)
(defun undo_pop ()
(cond
((and (= 1 (logand undo_init 1)) ; enabled
(/= 2 (logand undo_init 2)) ; not ONE (ie ALL is ON)
(/= 8 (logand undo_init 8)) ; no GROUP active
)
(command "_.undo" "_end")
)
(T)
)
;; If it has been forced off, turn it back on.
(if (= 4 (logand undo_init 4))
(command "_.undo" "_auto" "_on")
)
)
如前贴所言,用dxf组码判断pline是否闭合,这个函数是必须的。
好像话没说完--“你也许要说我直接判断其是否等于1...”我就是想这么问:为什么不
好像话没说完--“你也许要说我直接判断其是否等于1...”我就是想这么问:为什么不能直接判断是否为1呀?有点意思
我发的贴,居然后面的给裁掉了,你试试用Pedit的的S\L\F这三个选项分别编辑一下闭合线,看看组码70的值是否还是1问你一个问题
你如何判断端点铺捉是否打开?
页:
[1]
2