AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

上一篇主題 下一篇主題 向下

[討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 蔣秉澔 于 2014-10-17, 10:15

如主題,最近寫的程式,執行後常常出現這一串字,而且會自動把"0"圖層的印表機設定成"不出圖",有前輩遇過相同問題嗎
avatar
蔣秉澔
初級會員
初級會員

文章總數 : 210
年齡 : 40
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 2832
威望值 : 168
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 djh1006 于 2014-10-17, 15:04

聽起來怎麼好像我的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) ;;回復鎖點設定狀態
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3462
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 蔣秉澔 于 2014-10-18, 02:50

djh1006哥,是我自己寫的一支將外部數個dwg檔匯整至同一張圖檔的程式啦,你寫的程式,我也有在學習(謝謝你)
avatar
蔣秉澔
初級會員
初級會員

文章總數 : 210
年齡 : 40
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 2832
威望值 : 168
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 Tiger&蘋果爸 于 2014-10-20, 10:56

這個我以前寫的程式也會出現此訊息!

後來發現程式中好像並不需要把 OSMODE設為 0 (setvar "OSMODE" 0)
只要把 OSNAPCOORD設定為 1 之後,執行程式時會以程式輸入為主,就不會因為「物件鎖點」導致亂鎖點!

大家可以幫忙測試OSNAPCOORD系統變數
並且回報一下喔~
感恩!
感謝啦

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17328
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65336
威望值 : 12868
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 djh1006 于 2014-10-20, 12:53

結果正如蘋果爸所說,設為1後鎖點就不會亂跑了,以下影片中,前半段是osnapcoord有設為1,畫line時,不會鎖到中點,後半段把osnapcoord取消掉,並設為2(預設值),結果又亂鎖點了。

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)
)
好奇的是,乾脆把osnapcoord都設為1就好啦,就不會亂鎖點了,有人能為我解答嗎?
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3462
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 Atsai 于 2014-10-20, 15:40

查一下autocad 的說明就可以明白為什麼了!
OSNAPCOORD (系統變數)
控制於指令行上輸入的座標是否會取代常駐物件鎖點。
類型:整數
儲存位置:系統登錄
初始值:2

0:以常駐式物件鎖點設定取代鍵盤座標輸入
1:以鍵盤輸入取代物件鎖點設定
2:以鍵盤輸入取代物件鎖點設定,但腳本除外
avatar
Atsai
中級會員
中級會員

文章總數 : 115
年齡 : 42
來自 : 台中
職業 : 工程
愛好 : 看漫畫
個性 : 樂天
使用年資 : 10
使用版本 : 2010
AutoCAD基礎篇等級 : 10星級
積分 : 7
經驗值 : 2961
威望值 : 337
注冊日期 : 2012-04-06
男 金牛座 兔

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 leoneriol 于 2014-10-21, 02:18

讚啦!! 讚喔~!!
學到一招新的了~!!!

這樣使用的話會方便很多~!!!
avatar
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 816
年齡 : 33
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 6638
威望值 : 938
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 Tiger&蘋果爸 于 2014-10-21, 02:19

是的~
設定1就不會亂鎖點,以鍵盤輸入為主。
嘻嘻

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17328
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65336
威望值 : 12868
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 蔣秉澔 于 2014-10-21, 02:21

立馬測試的啦~學習!!學習!!,我要成為高手!!!!!!
avatar
蔣秉澔
初級會員
初級會員

文章總數 : 210
年齡 : 40
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 2832
威望值 : 168
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 li60830 于 2014-10-21, 08:57

這些都是高階的高手才懂的問題~
我只會傻傻的用系統自設的鎖點模式操作~
avatar
li60830
初級會員
初級會員

文章總數 : 312
年齡 : 46
來自 : 亞洲
職業 : 待業
愛好 : 電動~游泳~看書~看影集
個性 : 固執
使用年資 : 18年
使用版本 : 2008 - 2014
積分 : 2
經驗值 : 3337
威望值 : 310
注冊日期 : 2013-04-17
藍鵲697號
男 處女座 豬

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 djh1006 于 2014-10-22, 04:01

對於蔣秉澔的問題,我有一些經驗分享
我們公司的模具圖有上模圖,下模圖,零件圖,尺寸標註,註記說明(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)
)
   ;;==註1==;;
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
若還有圖層、顏色、線型...一大堆東西要在程式前後不同,則建議以上我介紹的方法
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3462
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 CHR 于 2014-10-22, 04:48

現在試試看,原本還一直覺得CAD的鎖點設定有些煩人,希望這個設定能讓狀況有些改變!!! 讚啦!!
avatar
CHR
一般會員
一般會員

文章總數 : 14
年齡 : 30
來自 : 台北
職業 : 室內設計
愛好 : 古典音樂
個性 : 溫吞慢郎
使用年資 : 10
使用版本 : 2010
經驗值 : 1311
威望值 : 0
注冊日期 : 2014-07-11
男 巨蟹座 兔

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 蔣秉澔 于 2014-10-23, 02:54

djh1006哥說的很明白也有點深,對我這個初學者來說,還不懂這些"好東西"要加在程式的哪邊?
avatar
蔣秉澔
初級會員
初級會員

文章總數 : 210
年齡 : 40
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 2832
威望值 : 168
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 leoneriol 于 2014-10-23, 04:02

蔣秉澔 寫到:djh1006哥說的很明白也有點深,對我這個初學者來說,還不懂這些"好東西"要加在程式的哪邊?

我舉個我自己的例子 跟用法給您參考看看.....

我自己本身在製作程式的時候,往往會遇到需要使用CAD的繪圖指令(比如說 line,circle,arc,......等等)或者是標註指令

平時作圖的時候想要使用這些指令,如果能配合物件鎖點的功能來使用,那是一件非常方便而且有利於繪圖的方式,

但是在做程式的時候再使用繪圖指令上我自己本身往往都是使用已知點也就是我通常都會知道每個點的點"座標"

而這個時候物件鎖點反而會給我帶來困擾,因為偶爾程式執行之後會因為物件鎖點的關係去抓到不是我自己本身設計的點"座標"

為了避免這個狀況,我平時就是使用(setvar "OSMODE" 0)來將物件鎖點模式"關閉",雖然這樣能解決問題,但是往往只要碰到"程式中斷"的狀況!!你CAD的物件鎖點就要重新設定一次!!

如上圖所示,你真的會因為從新設定物件鎖點模式設定到煩死

而使用(setvar "OSNAPCOORD" 1)的好處則是排除了我前面敘述的情況..........真的很有價值

下面則是簡單的應用方式
代碼:

(defun c:test()
(setvar "OSNAPCOORD" 1);我會在程式一開始的時候就先將這個設定做好
;
;將所有要執行繪圖指令或是會受物件鎖點影響的程式碼都塞在中間
;
(setvar "OSNAPCOORD" 2);然後在程式結束之後,再將設定設為預設值
)
avatar
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 816
年齡 : 33
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 6638
威望值 : 938
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 蔣秉澔 于 2014-10-23, 04:07

leoneriol哥,簡單明暸,謝謝指導^^
avatar
蔣秉澔
初級會員
初級會員

文章總數 : 210
年齡 : 40
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 2832
威望值 : 168
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 djh1006 于 2014-10-23, 04:29

我不懂的是,為何不把OSNAPCOORD的值都改成1就好了,不要再回復到2不行嗎?
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3462
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 Tiger&蘋果爸 于 2014-10-23, 04:49

djh1006 寫到:我不懂的是,為何不把OSNAPCOORD的值都改成1就好了,不要再回復到2不行嗎?
是啊~我設定為1之後,就不用再回復囉~
竊喜

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17328
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65336
威望值 : 12868
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

發表 由 leoneriol 于 2014-10-23, 05:07

djh1006 寫到:我不懂的是,為何不把OSNAPCOORD的值都改成1就好了,不要再回復到2不行嗎?

當然可以~!!!

那麼為什麼AutoCAD為什麼不將預設值直接設定為1呢??

小弟我認為這是一種製作程式嚴謹的態度,

畢竟AutoCAD是一個有眾多使用者的程式,

也許這個系統變數對我們來說完全只需要使用到1這個選項,

但是你沒辦法保證是不是有使用者需要預設值2這個選項,

尤其是這個選項又牽涉到腳本(用到這個詞,表示有大量的DWG檔需要執行重覆的指令),

而製作腳本的開發者又比製作LISP的開發者多太多,

沿用以前的系統變數設定,或者說使用完之後將系統變數設定改回預設值,我把它看作一種嚴謹的態度而已
avatar
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 816
年齡 : 33
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 6638
威望值 : 938
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章