作者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)
1F:推 whface:这样看起来lisp 比VBA简洁非常多. 07/19 15:43
2F:推 sjgau:问题是,AutoCAD 2010 取消了 VBA, 不晓得 LISP 还在否? 07/19 16:39
3F:推 whface:应该说不"直接"支援VBA,官网还是可下载ps.VBA被VSTA取代了 07/19 22:55
4F:推 sjgau:AutoCAD 2010版即将以 VSTA 取代 VBA 07/20 08:06