Re: [心得] AutoCAD LISP 自問自答

看板Cad_Cae作者 (不慌不忙)時間16年前 (2009/07/18 16:36), 編輯推噓4(401)
留言5則, 2人參與, 最新討論串4/5 (看更多)
謝謝 sjgau 出題,這題好像滿好玩的, 我也寫一個用聚合線畫弧的方法: (vl-load-com) (defun c:ha (/ h a) (command "pline" pause pause "") (setq h (getdist "\n Input the middle high of arc:")) (setq a (vlax-ename->vla-object(entlast))) (vla-SetBulge a 0 (/(* -2.0 h)(vla-get-Length a))) (vla-Explode a) ;聚合線炸回ARC這行省略的話主程式只要4行 ) 因為用VisualLisp畫聚合線要前置一些像是 IAcadApplication,ActiveDocument,ModelSpace的物件 還要把座標列表轉到SafeArray再轉到Variant才能 Put coordinates property 所以偷懶用 AutoLisp 畫 pline 新手上路 請多指教 感激不盡!! ※ 引述《camelot1123 (寫不完的lisp..XD)》之銘言: : 感覺題目強調已知座標 : 就用座標寫寫看 : 別種寫法 : (defun c:arc-h( ) : (setq p1 (getpoint "\n Please pick first point for test: ") : p2 (getpoint "\n Please pick second poimt for test: ") : h (getreal "\n input H for test: ") : ) : (setq pm (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2)) : a1 (angle p1 p2) : a2 (+ a1 (/ pi 2)) : ) : (setq p3 (polar pm a2 h) : ) : (command "arc" p1 p3 p2) : (princ) : ) : 獻醜了 ^^" : ※ 引述《sjgau (sjgau)》之銘言: : : 已知 P1, P2 : : P1= X1, Y1 : : P2= X2, Y2 : : 是一個弧的兩個端點 : : 弧的高度= H : : H 有正負之分 : : H 又稱為 弦高 : : 求作 這個弧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.205.22 ※ 編輯: suny999 來自: 118.169.205.22 (07/18 16:52)

07/19 15:43, , 1F
這樣看起來lisp 比VBA簡潔非常多.
07/19 15:43, 1F

07/19 16:39, , 2F
問題是,AutoCAD 2010 取消了 VBA, 不曉得 LISP 還在否?
07/19 16:39, 2F

07/19 22:55, , 3F
應該說不"直接"支援VBA,官網還是可下載ps.VBA被VSTA取代了
07/19 22:55, 3F

07/20 08:06, , 4F
AutoCAD 2010版即將以 VSTA 取代 VBA
07/20 08:06, 4F
文章代碼(AID): #1AOOcZsY (Cad_Cae)
討論串 (同標題文章)
文章代碼(AID): #1AOOcZsY (Cad_Cae)