确定Poi之间的距离
大家好,附加的lisp由AlanThompson编写,然后由另一个开发人员修改。
该lisp计算沿对象(直线、圆、圆弧、多段线、样条曲线等)的两点之间的距离,并将距离写入第二个点。
但是,在同一个对象上使用此lisp 2次或以上时,需要花费太多时间。因为您必须重新启动每个点对的过程。
这个lisp可以这样升级吗;
首先,我们将选择一个对象的起点,
然后lisp将在第n点上写出起点和第n点之间的距离。
因此,我们将只选择一次起点,然后lisp将在单击对象的所有后续点上写入距离。
谢谢你的帮助,
点之间的距离2。rar公司
首选WHILE函数
(while
(AT:DrawX (setq p2 (getpoint p1 "\nSpecify next point on curve: ")) 3)
...
...
)
(princ)
亲爱的韩,谢谢你的帮助。
我修改了代码,但它没有工作。我想我把它改错了。
我已附上修改后的代码。
点之间的距离3。rar公司
没有担心失败,仍然很好,至少你迈出了第一步尝试:)
您可以将代码粘贴到代码标记中
此处编码(无空格斜杠)(定义c:DBP3(/AT:DrawX AT:CycleThroughSS p1 ent p2 d1 d2 dlst);;计算曲线对象上两个指定点之间的距离;;Alan J.Thompson,03.20.10/03.28.10/03.07.11/05.09.11(vl load com)(defun AT:DrawX(P C);;在指定点绘制和“X”向量;;P——“X”的放置点;;C-X的颜色(必须是整数b/w 1和255);;Alan J.Thompson,10.31.09(if(vl consp P)((lambda(d)(grvecs(cons C(mapcar(function(lambda(n)(polar P(*n pi)d)))'(0.25 1.25 0.75 1.75)))P)(*(getvar’viewsize)0.02))(defun AT:CycleThroughSS(ss/l i e);;循环选择一个选择集;;ss—选择集;;艾伦·J·汤普森,03.30.11(if(eq(type ss)'PICKSET)(if(eq(setq l(sslength ss))1)(ssname ss 0)(progn(princ“\n to cycle through entities:”)(redraw(setq e(ssname ss(setq i 0)))3)(while(eq(cadr(grread nil 10))9)(mapcar'redraw(list e(setq e(ssname ss(setq i(rem(1+i)l k))))'(4 3))(redraw e 4)e)))(重画)(if(and(AT:DrawX(setq p1(getpoint“\n指定曲线上的第一个点:”)3)(或(setq ent(AT:CycleThroughSS(ssget“\u C”(list(car p1)(cadr p1))(list(car p1)(cadr p1))'((0。“弧、圆、椭圆、线、*多段线、样条曲线”))))(progn(警告“点必须在曲线上!”)(redraw))(progn(redraw ent 3)T))(while(AT:DrawX(setq p2(getpoint p1“\n指定曲线上的下一个点:”)3)(或(and(ssget“_C”(list(car p2)(cadr p2))(list(car p2)(cadr p2))'((0。“弧,圆,椭圆,线,*多段线,样条曲线”))(setq d1(vlax curve getDistAtPoint ent(trans p1 1 0)))(setq d2(vlax curve getDistAtPoint ent(trans p2 1 0)))(progn(警报“点必须在曲线上!”)(重画))((lambda(dist/div)(while(<dist(-(cadr dlst)(setq div(/(cadr dlst)100)))(grdraw(trans(vlax curve getPointAtDist ent dist)0 1)(trans(vlax curve getPointAtDist ent(setq dist(+div dist)))0 1)1))(princ);;;(命令“_.text”p2“”(rtos(abs(-d1 d2)))(entmakex(list’(0。“text”)(cons 1(rtos(abs(-d1 d2))2))(cons 10(trans p2 1 0))(cons 40(getvar‘textsize)))(car(setq dlst(vl sort(list d1 d2)))(函数
页:
[1]