[討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
+3
Tiger&蘋果爸
djh1006
蔣秉澔
7 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
如主題,最近寫的程式,執行後常常出現這一串字,而且會自動把"0"圖層的印表機設定成"不出圖",有前輩遇過相同問題嗎
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5357
威望值 : 204
注冊日期 : 2013-08-31
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
聽起來怎麼好像我的lisp的設定值
(command "-LAYER" "P" "N" "0" "")
查看你的程式裡是否有這段
若有,把它刪了吧,或是改成
(command "-LAYER" "P" "Y" "0" "")
標題我看不懂耶
請參考以下作法:
(setq OSP (getvar "OSMODE")) ;;記憶鎖點設定狀態
(setvar "OSMODE" 0) ;;在畫線前將鎖點取消,才不會亂鎖在不對的點
...........................
(command "PLINE" P3 P9 PT2 P10 P5 "") ;;開始畫線
(command "LINE" P9 P10 "")
...........................
...........................
(setvar "OSMODE" OSP) ;;回復鎖點設定狀態
(command "-LAYER" "P" "N" "0" "")
查看你的程式裡是否有這段
若有,把它刪了吧,或是改成
(command "-LAYER" "P" "Y" "0" "")
標題我看不懂耶
請參考以下作法:
(setq OSP (getvar "OSMODE")) ;;記憶鎖點設定狀態
(setvar "OSMODE" 0) ;;在畫線前將鎖點取消,才不會亂鎖在不對的點
...........................
(command "PLINE" P3 P9 PT2 P10 P5 "") ;;開始畫線
(command "LINE" P9 P10 "")
...........................
...........................
(setvar "OSMODE" OSP) ;;回復鎖點設定狀態
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6089
威望值 : 359
注冊日期 : 2011-06-16
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
djh1006哥,是我自己寫的一支將外部數個dwg檔匯整至同一張圖檔的程式啦,你寫的程式,我也有在學習(謝謝你)
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5357
威望值 : 204
注冊日期 : 2013-08-31
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
這個我以前寫的程式也會出現此訊息!
後來發現程式中好像並不需要把 OSMODE設為 0 (setvar "OSMODE" 0)
只要把 OSNAPCOORD設定為 1 之後,執行程式時會以程式輸入為主,就不會因為「物件鎖點」導致亂鎖點!
大家可以幫忙測試OSNAPCOORD系統變數
並且回報一下喔~
感恩!
後來發現程式中好像並不需要把 OSMODE設為 0 (setvar "OSMODE" 0)
只要把 OSNAPCOORD設定為 1 之後,執行程式時會以程式輸入為主,就不會因為「物件鎖點」導致亂鎖點!
大家可以幫忙測試OSNAPCOORD系統變數
並且回報一下喔~
感恩!
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
結果正如蘋果爸所說,設為1後鎖點就不會亂跑了,以下影片中,前半段是osnapcoord有設為1,畫line時,不會鎖到中點,後半段把osnapcoord取消掉,並設為2(預設值),結果又亂鎖點了。
https://www.youtube.com/watch?v=ns1Yf0823Cc&feature=youtu.be
測試程式如下:
https://www.youtube.com/watch?v=ns1Yf0823Cc&feature=youtu.be
測試程式如下:
- 代碼:
(defun c:test ()
(setq s1 (entsel))
(setq PT1 (cadr S1))
;(setvar "OSNAPCOORD" 1)
(command "line" pt1 pause)
;(setvar "OSNAPCOORD" 2)
)
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6089
威望值 : 359
注冊日期 : 2011-06-16
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
查一下autocad 的說明就可以明白為什麼了!
OSNAPCOORD (系統變數)
控制於指令行上輸入的座標是否會取代常駐物件鎖點。
類型:整數
儲存位置:系統登錄
初始值:2
0:以常駐式物件鎖點設定取代鍵盤座標輸入
1:以鍵盤輸入取代物件鎖點設定
2:以鍵盤輸入取代物件鎖點設定,但腳本除外
OSNAPCOORD (系統變數)
控制於指令行上輸入的座標是否會取代常駐物件鎖點。
類型:整數
儲存位置:系統登錄
初始值:2
0:以常駐式物件鎖點設定取代鍵盤座標輸入
1:以鍵盤輸入取代物件鎖點設定
2:以鍵盤輸入取代物件鎖點設定,但腳本除外
Atsai- 中級會員
- 文章總數 : 167
年齡 : 49
來自 : 台中
職業 : 工程
愛好 : 看漫畫
個性 : 樂天
使用年資 : 10
使用版本 : 2010
AutoCAD基礎篇等級 : 10星級
積分 : 8
經驗值 : 5882
威望值 : 524
注冊日期 : 2012-04-06
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
讚喔~!!
學到一招新的了~!!!
這樣使用的話會方便很多~!!!
學到一招新的了~!!!
這樣使用的話會方便很多~!!!
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9152
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
是的~
設定1就不會亂鎖點,以鍵盤輸入為主。
設定1就不會亂鎖點,以鍵盤輸入為主。
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
立馬測試的啦~學習!!學習!!,我要成為高手!!!!!!
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5357
威望值 : 204
注冊日期 : 2013-08-31
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
這些都是高階的高手才懂的問題~
我只會傻傻的用系統自設的鎖點模式操作~
我只會傻傻的用系統自設的鎖點模式操作~
li60830- 初級會員
- 文章總數 : 345
年齡 : 53
來自 : 亞洲
職業 : 待業
愛好 : 電動~游泳~看書~看影集
個性 : 固執
使用年資 : 18年
使用版本 : 2008 - 2014
積分 : 5
經驗值 : 5952
威望值 : 340
注冊日期 : 2013-04-17
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
對於蔣秉澔的問題,我有一些經驗分享
我們公司的模具圖有上模圖,下模圖,零件圖,尺寸標註,註記說明(QLEADER),作圖線(建構線)(不出圖)等,它分別畫在圖層1,2,4,DIM,TEXT,TEMP
當我在畫水平或垂直作圖線時,它會自動畫在TEMP圖層
當我在標註時,尺寸會自動畫在DIM
依此類推
剛開始寫程式時遇到的問題是,當程式執行一半被中斷時,一些設定值都沒有回復原來狀態,例如:鎖點不見了、圖層不在原本圖層、線型變了、線色變了...
於是有了UNDO\BE和UNDO\E的出現,但實際測試後還是有不足的地方
因此在網上請教了很多人,終於找到不管程式如何中斷,當執行完程式(或中斷)時,系統變數都會點到程式開始前的狀態,程式格式如下:
(defun C:TEST()
;===中斷處理的程式===
;===程式內容===
;===將*error*回覆成預設功能===
)
完整程式如下:
OSMODE 鎖點模式
無 0
END(端點) 1
MID(中點) 2
CEN(圓心) 4
NOD(節點) 8
QUA(四分點) 16
INT(交點) 32
INS(插入點) 64
PER(垂直) 128
TAN(切點) 256
NEA(最近點) 512
清除所有對象補捉 1024
APP(外觀交點) 2048
EXT(延伸) 4096
PAR(平行) 8192
我的鎖點設定有END,MID,CEN,QUA,INT,EXT
所以OSMODE的值是1+2+4+16+32+4096=4151
;;==註2==;;
AUTOSNAP (自動捕捉)
0 關
1 開
2 開提示
4 開磁吸
8 開極軸追蹤
16 開捕捉追蹤
32 開極軸追蹤和捕捉追蹤提示
我的設定值是全開1+2+4+8+16+32=63
;;==註3==;;
透過開始(Begin) 和終止(End) 設定,可以將一連串介於UNDO\BE 和UNDO\E 中間的指令視為單一指令,. 以便利用U 指令一次回復<不管之間做了多少動作>
希望大家看得懂我要表達的意思
結論是:若只有單純的鎖點問題,建議將OSNAPCOORD設定為 1
若還有圖層、顏色、線型...一大堆東西要在程式前後不同,則建議以上我介紹的方法
我們公司的模具圖有上模圖,下模圖,零件圖,尺寸標註,註記說明(QLEADER),作圖線(建構線)(不出圖)等,它分別畫在圖層1,2,4,DIM,TEXT,TEMP
當我在畫水平或垂直作圖線時,它會自動畫在TEMP圖層
當我在標註時,尺寸會自動畫在DIM
依此類推
剛開始寫程式時遇到的問題是,當程式執行一半被中斷時,一些設定值都沒有回復原來狀態,例如:鎖點不見了、圖層不在原本圖層、線型變了、線色變了...
於是有了UNDO\BE和UNDO\E的出現,但實際測試後還是有不足的地方
因此在網上請教了很多人,終於找到不管程式如何中斷,當執行完程式(或中斷)時,系統變數都會點到程式開始前的狀態,程式格式如下:
(defun C:TEST()
;===中斷處理的程式===
;===程式內容===
;===將*error*回覆成預設功能===
)
完整程式如下:
- 代碼:
(defun C:TEST()
(graphscr) ;作圖模式
(setvar "CMDECHO" 0) ;關閉指令回應
(command "UNDO" "BE") ;;UNDO開始<註3>
;===中斷處理的程式開始===
;;當主程式被中斷,按ESC結束,有些系統設定值沒有回復原來狀態
;;例如鎖點、顏色、線型、圖層等
;;因為作圖時會把一些特定的物件繪於特定圖層
;;標註DIM
;;建構線TEMP
;;圖框TEXT
(defun *error*()
(princ "錯誤!")
(setvar "OSMODE" 4151) ;;註1
(setvar "AUTOSNAP" 63) ;;註2
(princ)
)
(defun useerr(s) ;;發生錯誤時,回復以下參數
(setq *error* olderr)
(setvar "CECOLOR" CCLR) ;;回復程式開始前圖層
(setvar "CELTYPE" CLTP) ;;回復程式開始前線型
(setvar "CLAYER" CLAY) ;;回復程式開始前顏色
(command "UNDO" "E") ;;若程式不正常關閉<按ESE>,則在此回復UNDO\E
(princ)
)
(setq olderr *error* *error* useerr)
;===中斷處理的程式結束===
(setq
CCLR (getvar "CECOLOR")
CLTP (getvar "CELTYPE")
CLAY (getvar "CLAYER")
)
(setvar "CLAYER" "TEMP") ;;設定圖層為TEMP
(setvar "CELTYPE" "BYLAYER") ;;設定線型為BYLAYER
(setvar "CECOLOR" "BYLAYER") ;;設定顏色為BYLAYER
..............................
程式內容
畫線,圓...
..............................
(setvar "CECOLOR" CCLR) ;;回復程式開始前圖層
(setvar "CELTYPE" CLTP) ;;回復程式開始前線型
(setvar "CLAYER" CLAY) ;;回復程式開始前顏色
(command "UNDO" "E") ;;UNDO結束<註3>
;===將*error*回覆成預設功能===
;;此行配合程式開始的中斷處理的程式
(setq *error* olderr)
;===
(princ)
)
OSMODE 鎖點模式
無 0
END(端點) 1
MID(中點) 2
CEN(圓心) 4
NOD(節點) 8
QUA(四分點) 16
INT(交點) 32
INS(插入點) 64
PER(垂直) 128
TAN(切點) 256
NEA(最近點) 512
清除所有對象補捉 1024
APP(外觀交點) 2048
EXT(延伸) 4096
PAR(平行) 8192
我的鎖點設定有END,MID,CEN,QUA,INT,EXT
所以OSMODE的值是1+2+4+16+32+4096=4151
;;==註2==;;
AUTOSNAP (自動捕捉)
0 關
1 開
2 開提示
4 開磁吸
8 開極軸追蹤
16 開捕捉追蹤
32 開極軸追蹤和捕捉追蹤提示
我的設定值是全開1+2+4+8+16+32=63
;;==註3==;;
透過開始(Begin) 和終止(End) 設定,可以將一連串介於UNDO\BE 和UNDO\E 中間的指令視為單一指令,. 以便利用U 指令一次回復<不管之間做了多少動作>
希望大家看得懂我要表達的意思
結論是:若只有單純的鎖點問題,建議將OSNAPCOORD設定為 1
若還有圖層、顏色、線型...一大堆東西要在程式前後不同,則建議以上我介紹的方法
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6089
威望值 : 359
注冊日期 : 2011-06-16
wuwubaibai likes this post
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
現在試試看,原本還一直覺得CAD的鎖點設定有些煩人,希望這個設定能讓狀況有些改變!!!
CHR- 一般會員
- 文章總數 : 15
年齡 : 37
來自 : 台北
職業 : 室內設計
愛好 : 古典音樂
個性 : 溫吞慢郎
使用年資 : 10
使用版本 : 2010
經驗值 : 3800
威望值 : 0
注冊日期 : 2014-07-11
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
djh1006哥說的很明白也有點深,對我這個初學者來說,還不懂這些"好東西"要加在程式的哪邊?
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5357
威望值 : 204
注冊日期 : 2013-08-31
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
蔣秉澔 寫到:djh1006哥說的很明白也有點深,對我這個初學者來說,還不懂這些"好東西"要加在程式的哪邊?
我舉個我自己的例子 跟用法給您參考看看.....
我自己本身在製作程式的時候,往往會遇到需要使用CAD的繪圖指令(比如說 line,circle,arc,......等等)或者是標註指令
平時作圖的時候想要使用這些指令,如果能配合物件鎖點的功能來使用,那是一件非常方便而且有利於繪圖的方式,
但是在做程式的時候再使用繪圖指令上我自己本身往往都是使用已知點也就是我通常都會知道每個點的點"座標"
而這個時候物件鎖點反而會給我帶來困擾,因為偶爾程式執行之後會因為物件鎖點的關係去抓到不是我自己本身設計的點"座標"
為了避免這個狀況,我平時就是使用(setvar "OSMODE" 0)來將物件鎖點模式"關閉",雖然這樣能解決問題,但是往往只要碰到"程式中斷"的狀況!!你CAD的物件鎖點就要重新設定一次!!
如上圖所示,你真的會因為從新設定物件鎖點模式設定到煩死
而使用(setvar "OSNAPCOORD" 1)的好處則是排除了我前面敘述的情況..........真的很有價值
下面則是簡單的應用方式
- 代碼:
(defun c:test()
(setvar "OSNAPCOORD" 1);我會在程式一開始的時候就先將這個設定做好
;
;將所有要執行繪圖指令或是會受物件鎖點影響的程式碼都塞在中間
;
(setvar "OSNAPCOORD" 2);然後在程式結束之後,再將設定設為預設值
)
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9152
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
leoneriol哥,簡單明暸,謝謝指導^^
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5357
威望值 : 204
注冊日期 : 2013-08-31
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
我不懂的是,為何不把OSNAPCOORD的值都改成1就好了,不要再回復到2不行嗎?
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6089
威望值 : 359
注冊日期 : 2011-06-16
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
是啊~我設定為1之後,就不用再回復囉~djh1006 寫到:我不懂的是,為何不把OSNAPCOORD的值都改成1就好了,不要再回復到2不行嗎?
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil
djh1006 寫到:我不懂的是,為何不把OSNAPCOORD的值都改成1就好了,不要再回復到2不行嗎?
當然可以~!!!
那麼為什麼AutoCAD為什麼不將預設值直接設定為1呢??
小弟我認為這是一種製作程式嚴謹的態度,
畢竟AutoCAD是一個有眾多使用者的程式,
也許這個系統變數對我們來說完全只需要使用到1這個選項,
但是你沒辦法保證是不是有使用者需要預設值2這個選項,
尤其是這個選項又牽涉到腳本(用到這個詞,表示有大量的DWG檔需要執行重覆的指令),
而製作腳本的開發者又比製作LISP的開發者多太多,
沿用以前的系統變數設定,或者說使用完之後將系統變數設定改回預設值,我把它看作一種嚴謹的態度而已
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9152
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章