[討論]AUTOLISP是否有位元碼查詢/判斷的函數?
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]AUTOLISP是否有位元碼查詢/判斷的函數?
AUTOCAD有蠻多用位元碼來判斷設定類型的地方,
EX:AutoCAD 2010 - Advantage Pack中的SELECTSIMILARMODE系統變數.
不知道AUTOLISP中是否有位元碼查詢/判斷的函數?
可能像是把變數和要判斷的位元值(EX:1,2,4,8,...)丟進去函數中傳回T或nil之類的函數...@@?
[追加目前有查到的用法]
logAnd->[官方英文說明]
(logAnd [int int ...])
所有int做位元式And運算,
如果其中一個int用的是位元控制值(ex:1,2,4,8,...),
那麼只有在全都具有位元控制值的時候,才會有值傳回,
所以可以用
來控制程式執行的流程.
以上,
是目前查到的最速方法,
如果把它寫成副程式來方便呼叫的話,會是...
(bw_ton 5 2)回傳nil
(bw_ton 5 4)回傳T
以上回答,
算是自己想出了一個符合一開始我想要的函數,
比起我一開始預訂使用的函數-使用減法慢慢逐層減去位元值,
現在這個真的是簡單上許多;P
但還是希望AutoCAD本身就有這樣的函數啊=0=
EX:AutoCAD 2010 - Advantage Pack中的SELECTSIMILARMODE系統變數.
不知道AUTOLISP中是否有位元碼查詢/判斷的函數?
可能像是把變數和要判斷的位元值(EX:1,2,4,8,...)丟進去函數中傳回T或nil之類的函數...@@?
[追加目前有查到的用法]
logAnd->[官方英文說明]
(logAnd [int int ...])
所有int做位元式And運算,
如果其中一個int用的是位元控制值(ex:1,2,4,8,...),
那麼只有在全都具有位元控制值的時候,才會有值傳回,
所以可以用
- 代碼:
(if (/= (logAnd int int ...) 0)...
- 代碼:
(if (zerop (logAnd int int ...)...
來控制程式執行的流程.
以上,
是目前查到的最速方法,
如果把它寫成副程式來方便呼叫的話,會是...
- 代碼:
(defun bw_ton (int1 bit_code)
(/= (logAnd int1 bit_code) 0)
)
(bw_ton 5 2)回傳nil
(bw_ton 5 4)回傳T
以上回答,
算是自己想出了一個符合一開始我想要的函數,
比起我一開始預訂使用的函數-使用減法慢慢逐層減去位元值,
現在這個真的是簡單上許多;P
但還是希望AutoCAD本身就有這樣的函數啊=0=
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5578
威望值 : 316
注冊日期 : 2013-04-18
回復: [討論]AUTOLISP是否有位元碼查詢/判斷的函數?
不是很懂您想討論的"位元碼查詢/判斷"的意思
lisp中取得系統變數的設定值可以使用getvar
比如說要取得物件鎖點的系統變數設定
lisp中取得系統變數的設定值可以使用getvar
比如說要取得物件鎖點的系統變數設定
- 代碼:
(getvar "osmode")
- 代碼:
(setq osold (getvar "osmode"))
- 代碼:
(setvar "osmode" 0)
(setvar "osmode" osold)
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9216
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論]AUTOLISP是否有位元碼查詢/判斷的函數?
你會錯意了,
我的意思是在自己的程式中用數值方式記錄設定值.
EX:
0:執行拉伸
1:執行移動
2:執行拉伸+紀錄選取
3:執行移動+紀錄選取
所以就是第一個位元決定要執行的動作,
第二個位元決定是否要記錄選取.
但是用這方法的話就需要用到位元碼查詢或判斷,
而我後面追加的方法就是位元碼判斷的方法.
我的意思是在自己的程式中用數值方式記錄設定值.
EX:
0:執行拉伸
1:執行移動
2:執行拉伸+紀錄選取
3:執行移動+紀錄選取
所以就是第一個位元決定要執行的動作,
第二個位元決定是否要記錄選取.
但是用這方法的話就需要用到位元碼查詢或判斷,
而我後面追加的方法就是位元碼判斷的方法.
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5578
威望值 : 316
注冊日期 : 2013-04-18
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章