关于圆角lisp的问题
您好,谁总是在这里学习Lisp程序。圆角相关问题。我想更改多段线,如图所示。Lisp的功能是可视化的,而不是可用的命令?
感谢您的关注。
不确定是否真的需要AutoLISP例程-请检查\u FILLET命令的“多段线”选项。您是否使用了AutoCAD的本地化版本? 这是我想要的样品。。
如果角度是90度,没有问题。
但若不是90dregree,那个就是多段线的奇怪形状
我认为变量p4 p5是错误的,但不能计算点。。是否可以使用visual lisp(非命令圆角函数)
我是韩国人cad版AUTOCAD 2007
(defun c:aa
( / r o b p1 p2 p3 p4 p5
_pt->cen
_tan
_lwpoly
_GetBulge
LM:Clockwise
)
(defun _pt->cen ( p1 p2)
(mapcar '(lambda (a b) (* 0.5 (+ a b))) p1 p2)
)
(defun _tan ( x )
(if (not (equal 0. (cos x) 1e-) (/ (sin x) (cos x)))
)
(defun _lwpoly ( lst cls )
(vlax-ename->vla-object
(entmakex
(append
(list
(cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline") (cons 90 (length lst))
(cons 70 cls)
)
(mapcar '(lambda (p) (cons 10 (trans p 1 0)))lst)
)
)
)
)
(defun LM:Clockwise ( p1 p2 p3 )
(< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14)
)
(defun _GetBulge ( p1 p2 r / c a l p )
(setq c (_pt->cen p1 p2)
a (- (angle p1 p2) (* 0.5 pi))
l (sqrt (abs (- (* r r) (* (distance p1 c) (distance p1 c)))))
p (polar c a l)
) (_tan (* (rem (- (angle p p2) (angle p p1)) pi) 0.25))
)
(setq p1 (getpoint "\n1st point :")
p2 (getpoint p1 "\n2nd point :")
p3 (getpoint p2 "\n3rd point :")
r(getreal "\nFillet Radius :")
p4 (polar p2 (angle p2 p1) r)
p5 (polar p2 (angle p2 p3) r)
)
(setq o (_lwpoly (list p1 p4 p5 p3) 0)
b (_Getbulge p4 p5 r)
)
(if (LM:clockwise p1 p2 p3)
(setq b (- (abs b)))
(setq b (abs b))
)
(vla-setbulge o 1 b)
b
)(vl-load-com)
页:
[1]