 - ;;直线打断与圆内中点 By Gu_xl 2013.11.24
- (defun c:tt (/ *error* mid e el pl p0 p1)
- (defun *error* (s)
- (setvar 'cmdecho cmdecho)
- (princ s)
- )
- (defun mid (p1 p2)
- (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p1 p2))
- )
- (setq cmdecho (getvar 'cmdecho))
- (setvar 'cmdecho 0)
-
- (while (and (setq e (car (entsel "\n选择直线:")))
- (= "LINE" (cdr (assoc 0 (setq el (entget e)))))
- )
- (progn
- (command "_zoom" "o" e "")
- (setq p0 (trans (cdr (assoc 10 el)) 0 1)
- p1 (trans (cdr (assoc 11 el)) 0 1)
- )
- (setq ss (ssget "F" (list p0 p1) '((0 . "circle"))))
- (if ss
- (progn
- (setq pl
- (vl-remove-if
- '(lambda (a)
- (/= 2 (length a))
- )
- (reverse
- (mapcar '(lambda (x) (mapcar 'cadr (cdddr x)))
- (ssnamex ss)
- )
- )
- )
- )
- (FOREACH pts pl
- (command "_break" e (apply 'mid pts) "@")
- )
- )
- )
- (command "_zoom" "_p")
- )
- )
- (setvar 'cmdecho cmdecho)
- (princ)
- )
|