Lisp绘制样条曲线,得到P1&
我想知道是否有人可以帮助我用lisp绘制样条曲线,并获得样条曲线前两点的坐标。我需要他们在样条曲线的第一个点插入一个块,并定义点之间的角度。我从下面的lisp开始,但我无法使其正常工作,命令提示与标准AutoCAD样条线的提示不同,它提示和。我必须点击回车键几次才能退出程序。
我正在使用AutoCAD 2011。
非常感谢。
(defun c: DrawSpline ()
(command "._spline")
(while (> (getvar "cmdactive") 0)
(command pause)
) 考虑以下代码:
(defun c:DrawSpline ( / a e p )
(setq e (entlast))
(initcommandversion)
(command "._spline")
(while (< 0 (getvar 'cmdactive))
(command pause)
)
(if (not (eq e (setq e (entlast))))
(progn
(setq p (vlax-curve-getstartpoint e)
a (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv e (vlax-curve-getstartparam e)))
)
)
)
(princ)
)
(vl-load-com) (princ)
在上例中,变量“p”是样条曲线的起点,变量“a”是起点处切线的角度。
我还建议您阅读关于在您的帖子中格式化代码的代码发布指南。 大概
(defun c:Test (/ p1 p2)
(if (and (setq p1 (getpoint "\n First point :"))
(setq p2 (getpoint "\n Second point :" p1))
)
(command "_.spline" "_non" p1 "_non" p2)
(while (> (getvar 'cmdactive) 0)
(command pause)
)
)
(princ)
) 阿雷波,
请阅读代码发布指南并编辑您的帖子。
不客气,阿雷波
使用initcommandversion函数可以更改提示,该函数将命令初始化为特定(或最新)版本。 嗨,塔瓦,
是否可以扩展代码以绘制三条独立的线:p1 p2、p3 p4和从这两条线的交点到第五个点的另一条线,同时允许在获取点之前缩放窗口,并在获取点之后每次缩放上一个?。这有一个道路设计应用程序。
当做
芦荟
代码如何从这两条线的交点绘制三条独立的线和另一条线???
你能更详细地解释一下你的目标吗?
你想要样条的法线? ???
(defun c:test ( / ip p1 p2 p3 p4 p5 )
(if
(and
(setq p1 (getpoint "\n1st Point: "))
(setq p2 (getpoint "\n2nd Point: " p1))
(setq p3 (getpoint "\n3rd Point: "))
(setq p4 (getpoint "\n4th Point: " p3))
)
(if (setq ip (inters p1 p2 p3 p4 nil))
(if (setq p5 (getpoint "\n5th Point: " ip))
(mapcar
(function
(lambda ( a b )
(entmake
(list
'(0 . "LINE")
(cons 10 (trans a 1 0))
(cons 11 (trans b 1 0))
)
)
)
)
(list p1 p3 ip)
(list p2 p4 p5)
)
)
(princ "\nLines are Parallel.")
)
)
(princ)
)
李·麦克,
非常感谢你。代码用于获取这三行。实际上,第三条线在前两条线夹角的平分线上。然而,我需要放大覆盖五个点的区域,然后再发出命令,每次给出点后也需要缩小。
塔尔瓦特,
我的目标是在AutoCAD中加载的corridoor测量图上给出这些点,并通过迭代计算圆曲线的最佳半径、缓和曲线(螺旋或回旋)的最佳长度,以适应极限内的超高和驾驶舒适性,具体取决于设计速度的道路类型,所有这些都符合道路项目实施所在国的设计标准。
当做
芦荟
页:
[1]