![]() |
cad中十字交叉线打断方法修改请教
cad中十字交叉线打断方法修改请教
www.dimcax.com cad中十字交叉线打断方法修改请教 绘制工艺流程图时,交叉线经常要打断。但是代码只能竖断,不能横断,请高手指点。如何通过选择横或竖对象,来进行打断。而且代码只限定横竖交叉是垂直的,不能是斜线吗?望高手看看。在此感谢! 以下是代码: (defun c:lc (/ tmp pt pt1 pt2 ss pt3 pt4 i si enti) ;;改动1:将space设置为全局变量,可以保存上次的输入 (if (= space nil) (setq space 4) ) ;;设置 (if (setq tmp (getdist (strcat "\n请输入断开间距 <" (rtos space 2 2) ">:") ) ) (setq space tmp) ) ;;循环 (while (setq pt (getpoint "\n选择需断开的交点:")) ;;改动2:使用polar函数可以简化坐标计算 (setq pt1 (polar pt (* 0.25 pi) space) pt2 (polar pt (* 1.25 pi) space) ) ;;改动3:判断是否选择到了对象、对象个数、 (if (and (setq ss (ssget "c" pt1 pt2 ) ) (= (sslength ss) 2) ) (progn ;;改动4:在除法运算中将2改为2.0,以避免两整数相除消除尾数现象。 (setq pt3 (polar pt (* 0.5 pi) (/ space 2.0)) pt4 (polar pt (* 1.5 pi) (/ space 2.0)) ) (setq i 0) (repeat 2 (setq si (ssname ss i) enti (entget si) ) ;;改动5:判断对象是否为直线段,且竖直。 (if (and (= (cdr (assoc 0 enti)) "line") (equal (cadr (assoc 10 enti)) (cadr (assoc 11 enti)) 0.00001 ) ) ;;改动6:在没有关闭对象捕捉情况下,command函数中指定点位前,最好使用"non"选项,以消除捕捉影响。 (command "_.break" (list si pt) "f" "non" pt3 "non" pt4 ) ) (setq i (1+ i)) ) ;_结束 repeat ) ) ;_结束 if ) ;_结束 while ;;静默退出 (princ) ) ;_结束 defun d 不知道哦! d 中华模具论坛非常感谢! d 你看看我参考网上编写的这个,我一般打断的距离默认就是2,所以不用每次都输入打断距离了。当然你也可以自己改下。整了半天,没法上传,贴出源码来与你分享。 (defun c:8br(/ me1 me2 c1 p1 p2 p3 ) (setq me1 (getvar "osmode")) (setvar "osmode" 32) (setq me2 (getvar "orthomode")) (setvar "orthomode" 0) (setq p1 (getpoint "\n 选择线的打断点:")) (initget "s v") (setq c1 (getreal "\n 切断水平直线输入s or 切断竖直直线输入v : <s> ")) (if (= c1 nil) (setq c1 "s")) (if (= c1 "s") (progn (setq p2 (polar p1 pi 2)) (setq p3 (polar p1 0 2)) )) (if (= c1 "v") (progn (setq p2 (polar p1 (* pi 1.5) 2)) (setq p3 (polar p1 (/ pi 2) 2)) )) (command "break" pause "f" p2 p3) (setvar "osmode" me1) (setvar "orthomode" me2) (princ) ) d |
| 所有的时间均为北京时间。 现在的时间是 07:14 AM. |