看板 Cad_Cae 關於我們 聯絡資訊
謝謝 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)
whface:這樣看起來lisp 比VBA簡潔非常多. 07/19 15:43
sjgau:問題是,AutoCAD 2010 取消了 VBA, 不曉得 LISP 還在否? 07/19 16:39
whface:應該說不"直接"支援VBA,官網還是可下載ps.VBA被VSTA取代了 07/19 22:55
sjgau:AutoCAD 2010版即將以 VSTA 取代 VBA 07/20 08:06