(defun c:linebreak () (if (= setDist nil) (setq setDist 100.0) ) (initget "S") (setq selectA (entsel "\n 勝ち 線を選択 または [分断長さ(S)]:")) (cond ((= selectA nil) (setq goTrue nil) ) ((= selectA "S") (setq setDist (getdist "\n分断長さを入力 : ")) (setq goTrue nil) ) ((/= selectA nil) (setq tempEntA (entget (car selectA))) (setq entName (cdr (assoc 0 tempEntA))) (if (= entName "LINE") (setq goTrue T) (setq goTrue nil) ) ) (T nil) ) ;cond (if goTrue (progn (setq selectB (entsel "\n 負け 線を選択 :")) (cond ((= selectB nil) (setq goTrue nil) ) ; ((/= selectB nil) (setq tempEntB (entget (car selectB))) (setq objB (car selectB)) (setq entName (cdr (assoc 0 tempEntB))) (if (= entName "LINE") (progn (setq pntA1 (cdr (assoc 10 tempEntA)) pntA2 (cdr (assoc 11 tempEntA)) pntB1 (cdr (assoc 10 tempEntB)) pntB2 (cdr (assoc 11 tempEntB)) ) (setq chkD (distance pntB1 pntB2)) (if (> chkD setDist) (setq goTrue T) (setq goTrue nil) ) ) (setq goTrue nil) ) ) (T nil) ) ;cond ) (setq goTrue nil) ) (if goTrue (progn ;;;inters (setq intPnt (inters pntA1 pntA2 pntB1 pntB2 T)) (if (/= intPnt nil) (progn (setq ang1 (angle intPnt pntB1) ang2 (angle intPnt pntB2) ) (setq chkD1 (fix (distance intPnt pntB1)) chkD2 (fix (distance intPnt pntB2)) ) (setq chkD1 (fix (distance intPnt pntB1)) chkD2 (fix (distance intPnt pntB2)) ) (setq brDist (/ setDist 2.0)) (if (or (= chkD1 0) (= chkD2 0) (< chkD1 brDist) (< chkD2 brDist) ) (prompt "\nBreakできません。") (progn (setq brPnt1 (polar intPnt ang1 brDist) brPnt2 (polar intPnt ang2 brDist) ) ;;; (command "_break" selectB "_f" brPnt1 brPnt2) ;;; dist check! (setq distA (distance pntB1 brPnt1) distB (distance pntB1 brPnt2) ) (cond ((<= distA distB) (setq ac10 (cons 10 pntB1) ac11 (cons 11 brPnt1) upac10 (cons 10 pntB2) upac11 (cons 11 brPnt2) ) ) ((> distA distB) (setq ac10 (cons 10 pntB1) ac11 (cons 11 brPnt2) upac10 (cons 10 pntB2) upac11 (cons 11 brPnt1) ) ) ) ;;;Entmake;;; (setq newLlist (list '(0 . "LINE") ac10 ac11)) (setq ac8 (assoc 8 tempEntB)) (setq newLlist (append newLlist (list ac8))) (setq ac62 (assoc 62 tempEntB)) (if (/= ac62 nil) (setq newLlist (append newLlist (list ac62))) ) (setq ac6 (assoc 6 tempEntB)) (if (/= ac6 nil) (setq newLlist (append newLlist (list ac6))) ) (setq ac370 (assoc 370 tempEntB)) (if (/= ac370 nil) (setq newLlist (append newLlist (list ac370))) ) (setq newObj (entmake newLlist)) ;;;Entup;;; (setq tempEntB (subst upac10 (assoc 10 tempEntB) tempEntB) ) (setq tempEntB (subst upac11 (assoc 11 tempEntB) tempEntB) ) (entmod tempEntB) (entupd objB) ) ) ) (prompt "\n交差していません。") ) ) ) (princ) )