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

[討論]lisp奇怪的問題

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

[討論]lisp奇怪的問題

發表 由 jaco4942 于 2015-08-09, 02:36

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

超怪的!!
avatar
jaco4942
初級會員
初級會員

文章總數 : 65
年齡 : 25
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 3213
威望值 : 14
注冊日期 : 2009-12-01
男 天秤座 猴

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 yakuei88 于 2015-08-10, 09:13

(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)
)
avatar
yakuei88
一般會員
一般會員

文章總數 : 27
年齡 : 51
來自 : 高雄市
職業 : 雷射板金繪圖
愛好 : autolisp程式設計
個性 : 勤奮努力
使用年資 : 20年
使用版本 : 2012
經驗值 : 1586
威望值 : 42
注冊日期 : 2014-01-14
男 摩羯座 蛇

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 jaco4942 于 2015-08-13, 00:46

可以了欸!!! 謝謝大師,不過為甚麼要先把OSMODE 設成0阿!!!?????

另外 為何 要用這個符號 ==> '
avatar
jaco4942
初級會員
初級會員

文章總數 : 65
年齡 : 25
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 3213
威望值 : 14
注冊日期 : 2009-12-01
男 天秤座 猴

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 jaco4942 于 2015-08-13, 01:04

我用 兩個" 也可以欸
avatar
jaco4942
初級會員
初級會員

文章總數 : 65
年齡 : 25
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 3213
威望值 : 14
注冊日期 : 2009-12-01
男 天秤座 猴

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 yakuei88 于 2015-08-13, 04:06

OSMODE 是設定物件鎖點的 AUTOCAD 系統變數.
設為0, 即不鎖點, 您的 LISP 會將六邊形畫成四邊形,
是因為物件鎖點有鎖定四分圓點.
以 LISP 畫圖形前, 一定要設定 OSMODE 值為 0,
才不會畫出不可預期的圖形.

'OSMODE 也就是 "OSMDOE"
符號 ' 可以參考The Apostrophe and the Quote Function
avatar
yakuei88
一般會員
一般會員

文章總數 : 27
年齡 : 51
來自 : 高雄市
職業 : 雷射板金繪圖
愛好 : autolisp程式設計
個性 : 勤奮努力
使用年資 : 20年
使用版本 : 2012
經驗值 : 1586
威望值 : 42
注冊日期 : 2014-01-14
男 摩羯座 蛇

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 jaco4942 于 2015-08-13, 05:46

謝謝您詳細的指教
avatar
jaco4942
初級會員
初級會員

文章總數 : 65
年齡 : 25
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 3213
威望值 : 14
注冊日期 : 2009-12-01
男 天秤座 猴

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 jaco4942 于 2015-08-13, 15:30

另外我想問問,是不是只有物件鎖點有這樣的系統變數阿。

請問您還知不知道其他好用的系統變數呢
avatar
jaco4942
初級會員
初級會員

文章總數 : 65
年齡 : 25
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 3213
威望值 : 14
注冊日期 : 2009-12-01
男 天秤座 猴

回頂端 向下

回復: [討論]lisp奇怪的問題

發表 由 jaco4942 于 2015-08-13, 16:02

比如說截取目前的圖層變數
avatar
jaco4942
初級會員
初級會員

文章總數 : 65
年齡 : 25
來自 : 台中
職業 : 車銑加工業
愛好 : 機械
個性 : 隨興
使用年資 : 1年
使用版本 : 2016
積分 : 1
經驗值 : 3213
威望值 : 14
注冊日期 : 2009-12-01
男 天秤座 猴

回頂端 向下

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


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