ÁÖ¸»³óºÎ´Ôí ; jo.lsp=Line & Arc Join ¼± °áÇÕÇϱâ ; ->line ¹× arc¿¡ Àû¿ëµÊ (defun c:jo(/ cco cla clt pt1 pt2 ss m n k ed mp10 mp11 kp10 kp11 mp1 mp0 mp1k mp0k mp1 mp0 mp1k mp0k kk obc obl d1 d2 d3 d4 ar_s ar_e ar_c cep cepk rad radk) ;->*error* start (defun *error* (msg)(princ "error: ")(princ msg) (setvar "osmode" os) (princ)) ;-<*error* end (prompt "nLine & Arc Join...") (setq cco (getvar "CECOLOR") cla (getvar "CLAYER")) (setq clt (getvar "CELTYPE") os (getvar "osmode")) (vl-cmdf "undo" "group") (setvar "osmode" 0) (setq pt1 (getpoint "nFirst Corner->")) (setq pt2 (getcorner pt1 " Other Corner->")) (setq ss (ssget "W" pt1 pt2)) (if ss (vl-cmdf "erase" ss "") ) (setq ss (ssget "CP" (list pt1 (list (car pt2) (cadr pt1)) pt2 (list (car pt1) (cadr pt2))) '((0 . "ARC")))) (if ss (progn (setq m 0) (repeat (sslength ss) (setq ed (entget (ssname ss m))) (setq cep (dxf 10 ed) rad (dxf 40 ed) ) (setq mp0 (polar cep (dxf 50 ed) rad) mp1 (polar cep (dxf 51 ed) rad) ) (if (or (and (<= (car pt1) (car mp0)) (<= (car pt1) (car mp1)) (<= (cadr pt1) (cadr mp0)) (<= (cadr pt1) (cadr mp1)) (>= (car pt2) (car mp0)) (>= (car pt2) (car mp1)) (>= (cadr pt2) (cadr mp0)) (>= (cadr pt2) (cadr mp1)) ) (and (<= (car pt1) (car mp0)) (<= (car pt1) (car mp1)) (>= (cadr pt1) (cadr mp0)) (>= (cadr pt1) (cadr mp1)) (>= (car pt2) (car mp0)) (>= (car pt2) (car mp1)) (<= (cadr pt2) (cadr mp0)) (<= (cadr pt2) (cadr mp1)) ) (and (>= (car pt1) (car mp0)) (>= (car pt1) (car mp1)) (<= (cadr pt1) (cadr mp0)) (<= (cadr pt1) (cadr mp1)) (<= (car pt2) (car mp0)) (<= (car pt2) (car mp1)) (>= (cadr pt2) (cadr mp0)) (>= (cadr pt2) (cadr mp1)) ) (and (>= (car pt1) (car mp0)) (>= (car pt1) (car mp1)) (>= (cadr pt1) (cadr mp0)) (>= (cadr pt1) (cadr mp1)) (<= (car pt2) (car mp0)) (<= (car pt2) (car mp1)) (<= (cadr pt2) (cadr mp0)) (<= (cadr pt2) (cadr mp1)) ) ) (progn (vl-cmdf "color" (if (dxf 62 ed) (dxf 62 ed) "bylayer")) (vl-cmdf "layer" "S" (dxf 8 ed) "") (vl-cmdf "linetype" "S" (if (dxf 6 ed) (dxf 6 ed) "bylayer") "") (entdel (ssname ss m)) (vl-cmdf "circle" cep rad) (ssdel (ssname ss m) ss) ) (setq m (1+ m)) ) ) (setq m 0 n (sslength ss)) (while (< m (1- n)) (setq ed (entget (ssname ss m))) (setq cep (dxf 10 ed) rad (dxf 40 ed) ) (setq mp0 (polar cep (dxf 50 ed) rad) mp1 (polar cep (dxf 51 ed) rad) ) (setq k (1+ m)) (while (< k n) (setq kk nil) (setq ed (entget (ssname ss k))) (setq cepk (dxf 10 ed) radk (dxf 40 ed) ) (setq mp0k (polar cepk (dxf 50 ed) radk) mp1k (polar cepk (dxf 51 ed) radk) ) (if (and (equal cep cepk 0.1) (equal rad radk 0.1)) (progn (cond ((or (and (<= (car pt1) (car mp0)) (<= (car pt1) (car mp0k)) (<= (cadr pt1) (cadr mp0)) (<= (cadr pt1) (cadr mp0k)) (>= (car pt2) (car mp0)) (>= (car pt2) (car mp0k)) (>= (cadr pt2) (cadr mp0)) (>= (cadr pt2) (cadr mp0k)) ) (and (<= (car pt1) (car mp0)) (<= (car pt1) (car mp0k)) (>= (cadr pt1) (cadr mp0)) (>= (cadr pt1) (cadr mp0k)) (>= (car pt2) (car mp0)) (>= (car pt2) (car mp0k)) (<= (cadr pt2) (cadr mp0)) (<= (cadr pt2) (cadr mp0k)) ) (and (>= (car pt1) (car mp0)) (>= (car pt1) (car mp0k)) (<= (cadr pt1) (cadr mp0)) (<= (cadr pt1) (cadr mp0k)) (<= (car pt2) (car mp0)) (<= (car pt2) (car mp0k)) (>= (cadr pt2) (cadr mp0)) (>= (cadr pt2) (cadr mp0k)) ) (and (>= (car pt1) (car mp0)) (>= (car pt1) (car mp0k)) (>= (cadr pt1) (cadr mp0)) (>= (cadr pt1) (cadr mp0k)) (<= (car pt2) (car mp0)) (<= (car pt2) (car mp0k)) (<= (cadr pt2) (cadr mp0)) (<= (cadr pt2) (cadr mp0k)) ) ) (setq ar_s mp1 ar_e mp1k ar_c mp0) ) ((or (and (<= (car pt1) (car mp1)) (<= (car pt1) (car mp0k)) (<= (cadr pt1) (cadr mp1)) (<= (cadr pt1) (cadr mp0k)) (>= (car pt2) (car mp1)) (>= (car pt2) (car mp0k)) (>= (cadr pt2) (cadr mp1)) (>= (cadr pt2) (cadr mp0k)) ) (and (<= (car pt1) (car mp1)) (<= (car pt1) (car mp0k)) (>= (cadr pt1) (cadr mp1)) (>= (cadr pt1) (cadr mp0k)) (>= (car pt2) (car mp1)) (>= (car pt2) (car mp0k)) (<= (cadr pt2) (cadr mp1)) (<= (cadr pt2) (cadr mp0k)) ) (and (>= (car pt1) (car mp1)) (>= (car pt1) (car mp0k)) (<= (cadr pt1) (cadr mp1)) (<= (cadr pt1) (cadr mp0k)) (<= (car pt2) (car mp1)) (<= (car pt2) (car mp0k)) (>= (cadr pt2) (cadr mp1)) (>= (cadr pt2) (cadr mp0k)) ) (and (>= (car pt1) (car mp1)) (>= (car pt1) (car mp0k)) (>= (cadr pt1) (cadr mp1)) (>= (cadr pt1) (cadr mp0k)) (<= (car pt2) (car mp1)) (<= (car pt2) (car mp0k)) (<= (cadr pt2) (cadr mp1)) (<= (cadr pt2) (cadr mp0k)) ) ) (setq ar_s mp0 ar_e mp1k ar_c mp1) ) ((or (and (<= (car pt1) (car mp0)) (<= (car pt1) (car mp1k)) (<= (cadr pt1) (cadr mp0)) (<= (cadr pt1) (cadr mp1k)) (>= (car pt2) (car mp0)) (>= (car pt2) (car mp1k)) (>= (cadr pt2) (cadr mp0)) (>= (cadr pt2) (cadr mp1k)) ) (and (<= (car pt1) (car mp0)) (<= (car pt1) (car mp1k)) (>= (cadr pt1) (cadr mp0)) (>= (cadr pt1) (cadr mp1k)) (>= (car pt2) (car mp0)) (>= (car pt2) (car mp1k)) (<= (cadr pt2) (cadr mp0)) (<= (cadr pt2) (cadr mp1k)) ) (and (>= (car pt1) (car mp0)) (>= (car pt1) (car mp1k)) (<= (cadr pt1) (cadr mp0)) (<= (cadr pt1) (cadr mp1k)) (<= (car pt2) (car mp0)) (<= (car pt2) (car mp1k)) (>= (cadr pt2) (cadr mp0)) (>= (cadr pt2) (cadr mp1k)) ) (and (>= (car pt1) (car mp0)) (>= (car pt1) (car mp1k)) (>= (cadr pt1) (cadr mp0)) (>= (cadr pt1) (cadr mp1k)) (<= (car pt2) (car mp0)) (<= (car pt2) (car mp1k)) (<= (cadr pt2) (cadr mp0)) (<= (cadr pt2) (cadr mp1k)) ) ) (setq ar_s mp1 ar_e mp0k ar_c mp0) ) ((or (and (<= (car pt1) (car mp1)) (<= (car pt1) (car mp1k)) (<= (cadr pt1) (cadr mp1)) (<= (cadr pt1) (cadr mp1k)) (>= (car pt2) (car mp1)) (>= (car pt2) (car mp1k)) (>= (cadr pt2) (cadr mp1)) (>= (cadr pt2) (cadr mp1k)) ) (and (<= (car pt1) (car mp1)) (<= (car pt1) (car mp1k)) (>= (cadr pt1) (cadr mp1)) (>= (cadr pt1) (cadr mp1k)) (>= (car pt2) (car mp1)) (>= (car pt2) (car mp1k)) (<= (cadr pt2) (cadr mp1)) (<= (cadr pt2) (cadr mp1k)) ) (and (>= (car pt1) (car mp1)) (>= (car pt1) (car mp1k)) (<= (cadr pt1) (cadr mp1)) (<= (cadr pt1) (cadr mp1k)) (<= (car pt2) (car mp1)) (<= (car pt2) (car mp1k)) (>= (cadr pt2) (cadr mp1)) (>= (cadr pt2) (cadr mp1k)) ) (and (>= (car pt1) (car mp1)) (>= (car pt1) (car mp1k)) (>= (cadr pt1) (cadr mp1)) (>= (cadr pt1) (cadr mp1k)) (<= (car pt2) (car mp1)) (<= (car pt2) (car mp1k)) (<= (cadr pt2) (cadr mp1)) (<= (cadr pt2) (cadr mp1k)) ) ) (setq ar_s mp0 ar_e mp0k ar_c mp1) ) ) (vl-cmdf "color" (if (dxf 62 ed) (dxf 62 ed) "bylayer")) (vl-cmdf "layer" "S" (dxf 8 ed) "") (vl-cmdf "linetype" "S" (if (dxf 6 ed) (dxf 6 ed) "bylayer") "") (entdel (ssname ss m)) (entdel (ssname ss k)) (vl-cmdf "arc" ar_s ar_c ar_e) (ssdel (ssname ss m) ss) (ssdel (ssname ss (1- k)) ss) (setq n (sslength ss) k n kk "OK" ) ) (setq k (1+ k)) ) ) (if (= kk "OK") (setq m 0) (setq m (1+ m)) ) ) ));if end-1 ; (setq ss (ssget "CP" (list pt1 (list (car pt2) (cadr pt1)) pt2 (list (car pt1) (cadr pt2))) '((0 . "LINE")))) (if ss (progn (setq m 0 n (sslength ss)) (while (< m (1- n)) (setq ed (entget (ssname ss m))) (setq mp10 (cdr (assoc 10 ed)) mp11 (cdr (assoc 11 ed)) ) (setq k (1+ m)) (while (< k n) (setq kk nil) (setq ed (entget (ssname ss k)) kp10 (cdr (assoc 10 ed)) kp11 (cdr (assoc 11 ed)) ) (if (< (distance (inters mp10 mp11 pt1 pt2 nil) (inters kp10 kp11 pt1 pt2 nil) ) 0.00000001) (progn (setq d1 (distance mp10 kp10) d2 (distance mp10 kp11) d3 (distance mp11 kp10) d4 (distance mp11 kp11) ) (cond ((= d1 (max d1 d2 d3 d4)) (setq mp mp10 kp kp10)) ((= d2 (max d1 d2 d3 d4)) (setq mp mp10 kp kp11)) ((= d3 (max d1 d2 d3 d4)) (setq mp mp11 kp kp10)) ((= d4 (max d1 d2 d3 d4)) (setq mp mp11 kp kp11)) ) (setq obc (cdr (assoc 62 ed)) obl (cdr (assoc 6 ed)) ) (vl-cmdf "layer" "s" (cdr (assoc 8 ed)) "") (if (= obc nil) (vl-cmdf "color" "Bylayer") (vl-cmdf "color" obc) ) (if (= obl nil) (vl-cmdf "LINETYPE" "S" "Bylayer" "") (vl-cmdf "LINETYPE" "S" obl "") ) (entdel (ssname ss m)) (entdel (ssname ss k)) (vl-cmdf "line" mp kp "") (ssdel (ssname ss m) ss) (ssdel (ssname ss (1- k)) ss) (setq n (sslength ss) k n kk "OK" ) ) (setq k (1+ k)) ) ) (if (= kk "OK") (setq m 0) (setq m (1+ m)) ) ) ));if end-2 (setvar "clayer" cla) (setvar "cecolor" cco) (setvar "celtype" clt) (setvar "osmode" os) (vl-cmdf "undo" "en") (princ)) |