这是我想要的样品。。
如果角度是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)
|