两条多段线之间的尺寸
嗨,我是lisp的新手。因此,我只能创造简单的东西。我需要一个代码来创建从一条多段线的顶点到另一条多段线的垂直尺寸。你能帮我吗?
优素福 我认为这是一种两步火箭方法。
第一步是创建线、面或体积来描述此距离。
你做到了吗?什么技术最合适?
然后会出现Dims(结果)。
这是什么挑战?你能再描述一下吗。
可能是样例dwg文件。 HLAMmert你的方向错误,如果你做一个手动行,perp,选择第二个pline,选择pt将给出这个答案。有一个Lisp程序的地方。可以肯定的是,最近的一个对齐lisp找到了答案。 我附上了一个样本文件。
维图纸
因为你不是在为这个项目编码,
我的调度只适用于没有凸起的多段线,
否则可以使用更通用的vlax曲线xx方法
(定义c:dim2pl(/*错误*l l1 l2 lst mp os pt pts sz tmp vo vo2);hanhphuc 13.01.16(defun*error*(msg)(if os(setvar'osmode os))(if(not(wcmatch(strcase msg)“*CANCEL*,*EXIT*”)(princ(strcat“\n error:”msg))(setq os(getvar'osmode))(setvar'osmode 0)(defun xyz(l 3d/ls);递归灵感来自-Lee Mac(if l(cons(mapcar“”((x)(nth x l))(if 3d“(0 1 2)”(0 1))(xyz((if 3d cdddr cddr)l)3d))(if(and(mapcar“”((a b c/ss)(princ(strcat”\n点击“c”多段线…))(if(while(not ss)(setq ss(ssget“_+:E:S:L”'((0.*POLYLINE“)))(progn(setq E(ssname ss 0))(set b(vlax ename->vla object E));(vlax-property-available-p(eval b)'坐标](set a(xyz(vlax get(vlax ename->vla object e)'坐标)(=“POLYLINE”(cdr(assoc 0(entget e)))))))'(l1 l2)“(vo vo2)”(“1st”“2nd”)(mapcar“”((x)(set x(mapcar“”((p)(trans p 0 1))(eval x)))'(l1 l2))(setq l l1)l2(not(equal vo vo2))(重复2(foreach p1 l2(setq lst vl删除nil(mapcar“”((x) (hp:ptol p1 xnil)(mapcar“”((a b)(list a b))l(cdr l())(if(setq pt(cadr(assoc(apply‘min(mapcar’car lst))lst))(setq pts(mapcar“”((x)(list(car x)(cadr x)))(list p1 pt))sz(*0.05(apply‘distance pts))mp(apply‘mapcar(cons)”((a b)(*0.5(+a b)))pts)tmp(if(vl cmdf“_dimaligned“p1 pt mp”(mapcar)(λ(a b)(vlax put(vlax ename->vla object(entlast))a b)'(“TextHeight”“ArrowheadSize”“TextInside”)(list sz sz 1);)(setq l l2 l1))(setvar‘osmode os)(princ));点对线(defun hp:ptol(p 2p 3d/ad d pp);hanhphuc-29.10.2015(setq ad(mapcar)(lambda(f)(应用f(mapcar“”((x)(list(car x)(cadr x)))2p))'(角度距离));_地图车d的末端(vxv(mapcar'-p(car 2p))(mapcar“”((f)(f(car ad)))(list cos sin)))pp(polar(car 2p)(汽车广告)d));_setq结束(如果( 非常感谢韩。我很感激你。
优素福 虽然这个程序不能百分之百奏效,但我很高兴它解决了你的任务
欢迎来到CADTutor
页:
[1]