求助:在已知直线的中点画一个圆,并把圆内线段剪掉
<p>我做了一个lisp<font style="BACKGROUND-COLOR: #ffffff" face="Verdana">:</font></p><p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;;在已知线段的中点自动画一个圆,然后把圆内线段剪掉</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(defun c:zdhy()<br/> (setq en1 (car (entsel)))<br/> (setq data1 (entget en1))<br/> (setq zb1 (assoc 10 data1))<br/> (setq pt1 (cdr zb1))<br/> (setq pt1x (car pt1))<br/> (setq pt1y (cadr pt1))<br/> (setq zb2 (assoc 11 data1))<br/> (setq pt2 (cdr zb2))<br/> (setq pt2x (car pt2))<br/> (setq pt2y (cadr pt2))<br/> (setq pt0x (/ (+ pt1x pt2x) 2))<br/> (setq pt0y (/ (+ pt1y pt2y) 2))<br/> (setq pt0 (list pt0x pt0y))<br/> (setq r (getdist pt0 " 输入圆半径:"))<br/> (command "circle" pt0 r)<br/> (setq en2 (entlast))<br/> (command "trim" en2 "" en1 "")<br/> (prin1)<br/>)</font></p>
<p> </p>
<p>但使用"trim"剪切命令时,不能保证每次都剪切圆内的线段,有时把圆外的线剪切掉了,求高手释疑,不胜感激。</p>
<p>对了,上面说的线段指“直线”,不是“多义线” 。</p> 使用对象双元表,将(command "trim" en2 "" en1 "")<br/>代码修改为: <font face="Verdana">(command "trim" en2 "" (list en1 pt0) "")即可!</font> <p>哈哈,这不是一个打桥位的程序吗?干嘛搞那么复杂</p> 感谢二楼的<font face="Verdana" color="#61b713"><b>Gu_xl</b></font>,成功了,又跟你学了一招,就是“对象双元表” <font face="Verdana">(command "trim" en2 "" pt0 "")亦可</font> lenlenq发表于2010-7-22 15:55:00static/image/common/back.gif (command \"trim\" en2 \"\" pt0 \"\")亦可
<p>若pt0处无别的实体,没问题,但是在实体很多,全图幅显示下,运行就不能保证正确了!对于 DIM EXTEND TRIM FILLET CHAMFER等命令,在Autolisp中都要使用双元表来“精确响应”要目标的提示!</p> 学习了,对trim的理解又深了一层 很好,收藏了。 Gu_xl 发表于 2010-7-20 22:15
使用对象双元表,将(command "trim" en2 "" en1 "")代码修改为: (command "trim" en2 "" (list en1 pt0) " ...
双元表裁剪威武,确实裁剪又快又准。也不会裁剪多余的线
页:
[1]