matichen 发表于 2002-10-12 14:18:00

请问 LOGAND 的详细用法 (陈老师你那本书也说得太不详细了,就HELP里那两个例子,

请问 LOGAND 的详细用法 (陈老师你那本书也说得太不详细了,就HELP里那两个例子,看不懂)

JHX948954875 发表于 2019-10-31 09:19:05

谢谢各位大神分享

wudechao 发表于 2020-1-16 00:13:15

一言惊醒梦中人!!!

hothua 发表于 2002-10-12 16:55:00

logand就是求逻辑与

(logand num1 num2),你可将num1和num2都化为二进制,如10和2
1010
0010
0010
即是2(10)

matichen 发表于 2002-10-12 18:22:00

喔,谢谢,不知这个有什么实际用途。

hothua 发表于 2002-10-12 19:15:00

举个例子

如你要判断一多义线是否闭合
(setq en (car(entsel))
      el (entget en)
      flag70 (cdr (assoc 70 el))
)
(if (= (logand flag70 1) 1)
(print "此多义线闭合")
)
你也许要说我直接判断其是否等于1不

matichen 发表于 2002-10-12 19:56:00

真没看出它有多大用啊。

秋枫 发表于 2002-10-12 20:12:00

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")
    )
)

秋枫 发表于 2002-10-12 20:13:00

如前贴所言,用dxf组码判断pline是否闭合,这个函数是必须的。

matichen 发表于 2002-10-12 20:21:00

好像话没说完--“你也许要说我直接判断其是否等于1...”我就是想这么问:为什么不

好像话没说完--“你也许要说我直接判断其是否等于1...”我就是想这么问:为什么不能直接判断是否为1呀?

hothua 发表于 2002-10-12 21:37:00

有点意思

我发的贴,居然后面的给裁掉了,你试试用Pedit的的S\L\F这三个选项分别编辑一下闭合线,看看组码70的值是否还是1

hothua 发表于 2002-10-12 21:40:00

问你一个问题

你如何判断端点铺捉是否打开?
页: [1] 2
查看完整版本: 请问 LOGAND 的详细用法 (陈老师你那本书也说得太不详细了,就HELP里那两个例子,