
- (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
更多讨论见:http://www.acad.net.cn/viewthread.php?tid=264&extra=page%3D1 |