[討論]lisp奇怪的問題
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]lisp奇怪的問題
(defun c:scircle(); http://www.autocad.com.tw/testme-8809.htm#AutoLISP 程式設計考題
(setq sp (getpoint "\nselect a point of circle:"))
(setq r (getdist "\nradius of circle:"))
(defun dtr(x)
(* pi (/ x 180.0))
)
(setq p1 (polar sp (dtr 90.) r ))
(setq p2 (polar sp (dtr 150.) r ))
(setq p3 (polar sp (dtr 210.) r ))
(setq p4 (polar sp (dtr 270.) r ))
(setq p5 (polar sp (dtr 330.) r ))
(setq p6 (polar sp (dtr 30.) r ))
(command "circle" sp r )
(command "line" p1 p2 p3 p4 p5 p6 p1 "")
(princ)
)
各位大哥大姐好,這次在寫lisp時遇到一個很奇怪的問題,我把p1~p6算出來後(已經用手動方式確認這六點沒錯了),用line command去把這六點連起來,但是出來的結果完全和我不一樣
我希望的圖形是左邊的,但畫起來永遠是右邊那樣的圖形
(圖 :
http://tinypic.com/view.php?pic=21o07dw&s=8#.VcavHvmqpBc
)
(LISP 載點 :
https://drive.google.com/file/d/0B61nY9hX4j4NY2tQblItNXVRaHM/view?usp=sharing
)
超怪的!!
(setq sp (getpoint "\nselect a point of circle:"))
(setq r (getdist "\nradius of circle:"))
(defun dtr(x)
(* pi (/ x 180.0))
)
(setq p1 (polar sp (dtr 90.) r ))
(setq p2 (polar sp (dtr 150.) r ))
(setq p3 (polar sp (dtr 210.) r ))
(setq p4 (polar sp (dtr 270.) r ))
(setq p5 (polar sp (dtr 330.) r ))
(setq p6 (polar sp (dtr 30.) r ))
(command "circle" sp r )
(command "line" p1 p2 p3 p4 p5 p6 p1 "")
(princ)
)
各位大哥大姐好,這次在寫lisp時遇到一個很奇怪的問題,我把p1~p6算出來後(已經用手動方式確認這六點沒錯了),用line command去把這六點連起來,但是出來的結果完全和我不一樣
我希望的圖形是左邊的,但畫起來永遠是右邊那樣的圖形
(圖 :
http://tinypic.com/view.php?pic=21o07dw&s=8#.VcavHvmqpBc
)
(LISP 載點 :
https://drive.google.com/file/d/0B61nY9hX4j4NY2tQblItNXVRaHM/view?usp=sharing
)
超怪的!!
jaco4942- 初級會員
- 文章總數 : 65
年齡 : 32
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 5749
威望值 : 14
注冊日期 : 2009-12-01
回復: [討論]lisp奇怪的問題
(defun c:scircle()
(setq osm (getvar 'osmode)) ; 擷取目前 osmode 值
(setvar 'osmode 0) ; 設 osmode 值為 0
(setq sp (getpoint .....
..........
(command "line" p1 p2 p3 p4 p5 p6 p1 "")
(setvar 'osmode osm); 設 osmode 為先前設定值
(princ)
)
(setq osm (getvar 'osmode)) ; 擷取目前 osmode 值
(setvar 'osmode 0) ; 設 osmode 值為 0
(setq sp (getpoint .....
..........
(command "line" p1 p2 p3 p4 p5 p6 p1 "")
(setvar 'osmode osm); 設 osmode 為先前設定值
(princ)
)
yakuei88- 一般會員
- 文章總數 : 28
年齡 : 58
來自 : 高雄市
職業 : 雷射板金繪圖
愛好 : autolisp程式設計
個性 : 勤奮努力
使用年資 : 20年
使用版本 : 2012
經驗值 : 4124
威望值 : 39
注冊日期 : 2014-01-14
回復: [討論]lisp奇怪的問題
可以了欸!!! 謝謝大師,不過為甚麼要先把OSMODE 設成0阿!!!?????
另外 為何 要用這個符號 ==> '
另外 為何 要用這個符號 ==> '
jaco4942- 初級會員
- 文章總數 : 65
年齡 : 32
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 5749
威望值 : 14
注冊日期 : 2009-12-01
回復: [討論]lisp奇怪的問題
我用 兩個" 也可以欸
jaco4942- 初級會員
- 文章總數 : 65
年齡 : 32
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 5749
威望值 : 14
注冊日期 : 2009-12-01
回復: [討論]lisp奇怪的問題
OSMODE 是設定物件鎖點的 AUTOCAD 系統變數.
設為0, 即不鎖點, 您的 LISP 會將六邊形畫成四邊形,
是因為物件鎖點有鎖定四分圓點.
以 LISP 畫圖形前, 一定要設定 OSMODE 值為 0,
才不會畫出不可預期的圖形.
'OSMODE 也就是 "OSMDOE"
符號 ' 可以參考The Apostrophe and the Quote Function
設為0, 即不鎖點, 您的 LISP 會將六邊形畫成四邊形,
是因為物件鎖點有鎖定四分圓點.
以 LISP 畫圖形前, 一定要設定 OSMODE 值為 0,
才不會畫出不可預期的圖形.
'OSMODE 也就是 "OSMDOE"
符號 ' 可以參考The Apostrophe and the Quote Function
yakuei88- 一般會員
- 文章總數 : 28
年齡 : 58
來自 : 高雄市
職業 : 雷射板金繪圖
愛好 : autolisp程式設計
個性 : 勤奮努力
使用年資 : 20年
使用版本 : 2012
經驗值 : 4124
威望值 : 39
注冊日期 : 2014-01-14
回復: [討論]lisp奇怪的問題
謝謝您詳細的指教
jaco4942- 初級會員
- 文章總數 : 65
年齡 : 32
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 5749
威望值 : 14
注冊日期 : 2009-12-01
回復: [討論]lisp奇怪的問題
另外我想問問,是不是只有物件鎖點有這樣的系統變數阿。
請問您還知不知道其他好用的系統變數呢
請問您還知不知道其他好用的系統變數呢
jaco4942- 初級會員
- 文章總數 : 65
年齡 : 32
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 5749
威望值 : 14
注冊日期 : 2009-12-01
回復: [討論]lisp奇怪的問題
比如說截取目前的圖層變數
jaco4942- 初級會員
- 文章總數 : 65
年齡 : 32
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 5749
威望值 : 14
注冊日期 : 2009-12-01
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章