您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > AutoCAD如何批量偏移
AutoCAD如何批量偏移1.在AutoCAD里面,有的时候,需要批量偏移封闭的多段线,这个偏移的偏移距离是一样的,并向外偏移,可以使用autoLISP来解决;2.下面有一段程序可以批量偏移封闭的多段线。;;;;;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;;(defunZX8~3(%ent1/#px%ent1)(setq#p(mapcar'cdr(vl-remove-if'(lambda(X)(/=10(carx)))(entget%ent1))));取得多段线里面的点#p)(defunC:ZX13(/#os1l1)(setvarcmdecho0)(setvarblipmode0)(setvardimzin0)(setq#os1(getvarosmode))(if(nullvlax-dump-object)(vl-load-com));;加载vlax扩展函数(setqL1(getdist\n请输入偏移距离))(if(/=L1nil)(prong(setqL1(absL1));偏移的数值为正数(setvarosmode0)(zx13~1L1)(setvarosmode#os1)))(prin1))(defunZX13~1(L1/#p1#p2#p3&k1&kw1&kw2@p1ent1ent2ent3iobj1)(princ\n请选择封闭的多段线)(setq&kw1(ssget(list(cons0LWPOLYLINE)(cons701))))(if(/=&kw1nil)(progn(setqi0)(repeat(sslength&kw1)(setq&k1(ssname&kw1i)#p1(ZX8~3&k1);取得多段线点集合#p3nilobj1(vlax-ename-vla-object&k1);;转换直线为vla对象ent1(entlast);取得最后形成的对象)(vla-offsetobj113);;向内偏移13(setqent2(entnextent1));取得刚刚得到的对象(if(/=ent2nil)(progn(setq#p2(ZX8~3ent2);取得点集合@p1(nth0#p2);取得起点)(entdelent2);删除这个对象(commandcircle@p10.7);绘制一个圆(setqent3(entlast));取得图元(vla-offsetobj1-13);;向外偏移13(setqent2(entnextent3));取得偏移对象(if(/=ent2nil)(progn(setq#p2(ZX8~3ent2));取得点集合(entdelent2);删除对象(setq&kw2(ssgetwp#p2'((0.CIRCLE)(-4.=)(40.0.7))));搜索圆(if(/=&kw2nil)(setqL1(*-1L1)));如果能够得到圆,那么偏移方向是这个(vla-offsetobj1L1);偏移))(entdelent3);删除圆;这个圆决定多段线偏移的方向))(setqi(+i1))))));;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;;;以上程序复制到记事本,以(ZX13.lsp)命名,AutoCAD加载autoLISP就可以使用,命令为:ZX13
本文标题:AutoCAD如何批量偏移
链接地址:https://www.777doc.com/doc-1827911 .html