圆角AutoLISP
你好我想在AutoLISP中绕过那个角落。谁能帮我?这是马克的任务。
(DEFUN C:Disc()
(setq t1 (getpoint "\n Select first point:"))
(setq t2 (list(+(car t1)10) (+(cadr t1)10)))
(setq t3 (list(+(car t2)38) (cadr t2)))
(setq t4 (list(car t3) (-(cadr t3)50)))
(command "line" t1 t2 t3 t4 ""))
http://www.part.lt/img/aa45895139f80ffac001f83f2cfc7a0e162.png 标准的“圆角”命令怎么样?
在大学里,使用AutoLISP是一项任务 容易的
(defun c:fillet ()
(command "fillet")
) 嗯,我想它必须在单个函数中。。。?
如果使用命令不是制作lisp的最有效方法,但从学术角度来说,这是一个很好的起点。
您可以使用arc命令。假设我想做一个90度的圆弧,以0,0,0为中心,从坐标5,0到0,5,可以使用以下公式:
(命令“.u弧”“c”“0,0,0”“5,0”“0,5”)。
现在,您要做的是在正确的位置插入arc命令,并将直线2的端点坐标和直线3的起点坐标更改为与圆弧半径相等的长度。
如果需要,你可以要求用户输入半径,将其存储到一个变量中,并使用它进行所需的计算,或者像线的长度一样硬编码。
我希望这个提示能帮助你实现你所需要的。 您可以使用窗口选项并选择两条线或“F”围栏选项,两者都返回两条线,或者在此处搜索我的自动圆角例程,该例程使用F123.45并针对给定半径自动运行圆角命令。 这可能有助于入门:
;;;CREATE A FILLET ARC FROM A LIST OF 3 CCW POINTS AND RADIUS
(defun f3p_fil3p (l ra / a1 a2 i1 d1 c1 c2 cn sa ea)
(setq a1 (angle (nth 1 l) (nth 2 l))
a2 (angle (nth 1 l) (nth 0 l))
i1 (if (> a1 a2)
(- (+ (* 2 pi) a2) a1)
(- a2 a1))
d1 (abs (/ ra (/ (sin (* i1 0.5))
(cos (* i1 0.5)))))
c1 (polar (nth 1 l) a1 d1)
c2 (polar (nth 1 l) a2 d1)
cn (inters c1 (polar c1 (+ a1 (* pi 0.5)) 1.0)
c2 (polar c2 (+ a2 (* pi 0.5)) 1.0) nil)
sa (angle cn c2)
ea (angle cn c1))
(entmake (list (cons 0 "ARC")
(cons 10 cn)
(cons 40 ra)
(cons 50 sa)
(cons 51 ea))))
(defun LM:Clockwise-p ( p1 p2 p3 )
(< (* (- (carp2) (carp1)) (- (cadr p3) (cadr p1)))
(* (- (cadr p2) (cadr p1)) (- (carp3) (carp1)))))
;************ TEST BED ***************************************
(defun c:f3p (/ ra p1 p2 p3)
(initget 7)
(setq ra (getdist "\nFillet Radius: "))
(princ "\nSelect 3 CCW Pts: ")
(initget 1)
(setq p1 (getpoint "\nStart Pt - P1: "))
(initget 1)
(setq p2 (getpoint p1 "\nVertex Pt - P2: "))
(grdraw p1 p2 1 3)
(initget 1)
(setq p3 (getpoint p2 "\nEnd Pt - P3: "))
(grdraw p2 p3 2 3)
(if (LM:Clockwise-p p1 p2 p3)
(alert "Ponts Are Not CCW")
(f3p_fil3p (list p1 p2 p3) ra))
(prin1))
不久前,李在另一个问题上与此有很多关系。
-大卫 由于线条是通过从初始选择点指定点来创建的,那么使用已经创建的点插入代码如何?如果先设置圆角半径,可以执行以下操作:
为了使这一点持续有效,我必须在绘制线条和圆角之前关闭OSNAPS。 谢谢David-我有以下信息:
不使用Fillet命令的圆角多段线
具有最大半径的圆角多段线
比加尔,你能给这个带栅栏选项的圆角一个链接吗?
页:
[1]
2