作者suny999 (不慌不忙)
看板Cad_Cae
標題Re: [心得] AutoCAD LISP 自問自答
時間Sat Jul 18 16:36:50 2009
謝謝 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