(PRINC "\nLoading MT-JOIN v1.22 (c) 1995 TCI Software . . . . . . " ) ;(DEFUN MT&?l (MT@) ; (IF (/= MT@ "Function cancelled") ; (PRINC (STRCAT "\nTrapped Error: " MT@)) ; ) ; (SETQ MTQ NIL) ; (IF MT1@@ ; (MTO1 NIL) ; ) ; (SETQ MT1?l NIL ; MT#?l NIL ; MT0?l NIL ; MT$?l NIL ; MTO?l NIL ; MT|?l NIL ; MT%?l NIL ; MT?jl NIL ; ) ; (MTL) ; (SETVAR "HIGHLIGHT" 1) ; (PRINC) ;) (SETQ MTjjl NIL MT@jl "N" MTQjl "N" MTljl "N" MT&jl "N" MT1jl "N" MT#jl "D" MT0jl "M" MT$jl 360 MTOjl 90 MT|jl 500 ) (DEFUN MT%jl () (IF (NOT (MT?& MT?@l)) (= (LOGAND (CDR (ASSOC 70 (ENTGET MT?@l))) 1) 0) ) ) (DEFUN MTj@l (MT&% / MTQ&J MTQJ) (SETQ MTQ&J T) (IF (EQUAL MT&% MT1?l) (SETQ MTQ&J T) (PROGN (SETQ MTQJ (ENTGET MT&%)) (IF (OR (AND (= (MT@J 0) "POLYLINE") (OR (= (BOOLE 1 (MT@J 70) 1) 1) (= (BOOLE 1 (MT@J 70) 4) 4) (/= (BOOLE 1 (MT@J 70) 24) 0) ) ) (AND (= (MT@J 0) "LINE") (NOT (EQUAL (CDDR (MT@J 10)) (CDDR (MT@J 11)))) ) ) (SETQ MTQ&J NIL) ) (IF (AND MTQ&J MT@@l) (IF (NOT (EQUAL (MT@J 8) MTQ@l)) (SETQ MTQ&J NIL) ) ) (IF (AND MTQ&J MTl@l MT&@l) (IF (NOT (EQUAL (MT@J 62) MT&@l)) (SETQ MTQ&J NIL) ) ) (IF (AND MTQ&J MTl@l (NOT MT&@l)) (IF (MT@J 62) (SETQ MTQ&J NIL) ) ) (IF (AND MTQ&J MT1@l MT#@l) (IF (NOT (EQUAL (MT@J 6) MT#@l)) (SETQ MTQ&J NIL) ) ) (IF (AND MTQ&J MT1@l (NOT MT#@l)) (IF (MT@J 6) (SETQ MTQ&J NIL) ) ) (IF (AND MTQ&J MT0@l) (IF (OR (NOT (EQUAL (CADDR (MT@J 10)) MT$@l)) (AND (EQUAL (MT@J 0) "LINE") (NOT (EQUAL (CADDR (MT@J 11)) MT$@l)) ) ) (SETQ MTQ&J NIL) ) ) ) ) (EVAL MTQ&J) ) (DEFUN MTO@l (MT&% / MTQJ MTL@ MT|@l) (IF (OR (NOT (EQUAL (CADDR (MT@J 10)) MT$@l)) (AND (EQUAL (MT@J 0) "LINE") (NOT (EQUAL (CADDR (MT@J 11)) MT$@l)) ) ) (PROGN (IF (EQUAL (MT@J 0) "LINE") (PROGN (SETQ MTL@ (LIST 10 (CAR (MT@J 10)) (CADR (MT@J 10)) MT$@l)) (SETQ MT|@l (LIST 11 (CAR (MT@J 11)) (CADR (MT@J 11)) MT$@l)) (SETQ MTQJ (SUBST MTL@ (ASSOC 10 MTQJ) MTQJ)) (SETQ MTQJ (SUBST MT|@l (ASSOC 11 MTQJ) MTQJ)) (ENTMOD MTQJ) ) (COMMAND "CHANGE" MT&% "" "P" "E" MT$@l "") ) ) ) ) (DEFUN MT%@l (/ MT?Ql MTjQl MT@QQ MT%?@ MT@Ql) (SETQ MT# (ENTLAST)) (SETQ MTJJ (ENTGET MT#)) (IF (AND (= (MT% 0) "POLYLINE") (= (LOGAND (MT% 70) 1) 1)) (PROGN (SETQ MT# (ENTNEXT MT#)) (SETQ MTJJ (ENTGET MT#)) (SETQ MT?Ql (MT% 10) MT@QQ 1 ) (SETQ MT%?@ MT#) (SETQ MTJJ (ENTGET MT%?@)) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MTJJ (ENTGET (ENTNEXT MT%?@))) (SETQ MT@Ql MT%?@) (SETQ MT%?@ (CDAR MTJJ)) (SETQ MT@QQ (1+ MT@QQ)) ) (SETQ MTJJ (ENTGET MT@Ql)) (SETQ MTjQl (MT% 10)) (COMMAND "PEDIT" "L" "O" "E") (REPEAT MT@QQ (COMMAND "N")) (COMMAND "I" (MT$L MT?Ql)) (COMMAND) (COMMAND) ) ) ) (DEFUN MTQQl (MTlQl / MT&Ql) (IF (OR (NOT (EQUAL MTlQl MT#?l)) (NOT (EQUAL MT# MT1?l))) (PROGN (SETQ MT&Ql (DISTANCE MTlQl MT#?l)) (IF (< MT&Ql MT0?l) (PROGN (IF (<= MT&Ql MTjjl) (SETQ MT0?l MT&Ql MT$?l MT# MTO?l MTlQl ) ) ) ) ) ) ) (DEFUN MT1Ql (MT#Ql /) (REVERSE (CDR (REVERSE MT#Ql)))) (DEFUN MT0Ql (MT#Ql /) (SETQ MT$Ql (CAAR MT#Ql) MTOQl (CAR (LAST MT#Ql)) ) ) (DEFUN MT|Ql (MT%Ql / MT?ll) (SETQ MT?ll (MAPCAR (quote (LAMBDA (MTOJ) (LIST (CONS 0 "VERTEX") MTjll (CONS 10 (CAR MTOJ)) (CONS 40 0) (CONS 41 0) (CONS 42 (LAST MTOJ)) (CONS 70 0) (CONS 50 0) (CONS 71 0) (CONS 72 0) (CONS 73 0) (CONS 74 0) ) ) ) MT%Ql ) ) ) (DEFUN MT@ll (MT&&J / MT1&J MT#&J MT0&J) (SETQ MT1&J (REVERSE MT&&J)) (SETQ MT#&J 0 MT0&J () ) (REPEAT (1- (LENGTH MT1&J)) (SETQ MT0&J (APPEND MT0&J (LIST (LIST (CAR (NTH MT#&J MT1&J)) (- (CADR (NTH (1+ MT#&J) MT1&J))) ) ) ) MT#&J (1+ MT#&J) ) ) (SETQ MT0&J (APPEND MT0&J (LIST (LIST (CAR (LAST MT1&J)) 0.0)))) ) (DEFUN MTQll (MTlll / MT?ll) (SETQ MTJJ MTlll MT# (ENTNEXT (MT% -1)) MTJJ (ENTGET MT#) MT?ll () ) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MT?ll (APPEND MT?ll (LIST (LIST (MT% 10) (MT% 42))))) (SETQ MTJJ (ENTGET (ENTNEXT (CDAR MTJJ)))) ) (SETQ MT?ll MT?ll) ) (DEFUN MT&ll (MT1ll MT#ll / MT?J MT0ll MTJ?@ MT@?@ MT$ll MTOll MT|ll MT%ll MT%?@ MT@Ql MT?&l MTj&l MT@&l ) (SETQ MT#?l (LIST (CAR MT1ll) (CADR MT1ll)) MT?J (LENGTH MT#ll) MT0ll 0 MT0?l (* MTjjl 10) MT$?l NIL MT00J () ) (REPEAT MT?J (SETQ MT# (NTH MT0ll MT#ll) MTJJ (ENTGET MT#) MT0ll (1+ MT0ll) ) (COND ((= (MT% 0) "LINE") (SETQ MTJ?@ (MT% 10) MT@?@ (MT% 11) ) (SETQ MT$ll (DISTANCE MTJ?@ MT#?l) MTOll (DISTANCE MT@?@ MT#?l) ) (IF (< MT$ll MTOll) (PROGN (IF (= MT$ll 0) (SETQ MTO?l MTJ?@ MTQ&l -1 ) (SETQ MTO?l MTJ?@ MTQ&l (ANGLE MT#?l MTJ?@) ) ) ) (PROGN (IF (= MTOll 0) (SETQ MTO?l MT@?@ MTQ&l -1 ) (SETQ MTO?l MT@?@ MTQ&l (ANGLE MT#?l MT@?@) ) ) ) ) (COND ((EQUAL MTJ?@ MTO?l) (SETQ MTl&l (ANGLE MTJ?@ MT@?@))) ((EQUAL MT@?@ MTO?l) (SETQ MTl&l (ANGLE MT@?@ MTJ?@))) ) (SETQ MT00J (APPEND MT00J (LIST (LIST MT# MTO?l MTQ&l MTl&l (DISTANCE MT#?l MTO?l)) ) ) ) ) ((= (MT% 0) "ARC") (SETQ MTJ?@ (POLAR (MT% 10) (MT% 50) (MT% 40))) (SETQ MT@?@ (POLAR (MT% 10) (MT% 51) (MT% 40))) (SETQ MT$ll (DISTANCE MTJ?@ MT#?l) MTOll (DISTANCE MT@?@ MT#?l) ) (IF (< MT$ll MTOll) (PROGN (IF (= MT$ll 0) (SETQ MTO?l MTJ?@ MTQ&l -1 ) (SETQ MTO?l MTJ?@ MTQ&l (ANGLE MT#?l MTJ?@) ) ) ) (PROGN (IF (= MTOll 0) (SETQ MTO?l MT@?@ MTQ&l -1 ) (SETQ MTO?l MT@?@ MTQ&l (ANGLE MT#?l MT@?@) ) ) ) ) (COND ((EQUAL MTJ?@ MTO?l) (SETQ MTl&l (+ (MT% 50) MT&J))) ((EQUAL MT@?@ MTO?l) (SETQ MTl&l (- (MT% 51) MT&J))) ) (SETQ MT00J (APPEND MT00J (LIST (LIST MT# MTO?l MTQ&l MTl&l (DISTANCE MT#?l MTO?l)) ) ) ) ) ((= (MT% 0) "POLYLINE") (SETQ MT%?@ (ENTNEXT MT#)) (SETQ MTJJ (ENTGET MT%?@)) (SETQ MTJ?@ (MT% 10) MT|ll NIL ) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MTJJ (ENTGET (ENTNEXT MT%?@))) (IF (NOT MT|ll) (SETQ MT|ll (ANGLE MTJ?@ (MT% 10))) ) (SETQ MT?&l MT@Ql MT@Ql MT%?@ ) (SETQ MT%?@ (CDAR MTJJ)) ) (SETQ MTJJ (ENTGET MT?&l)) (SETQ MT%ll (MT% 10)) (SETQ MTJJ (ENTGET MT@Ql)) (SETQ MT@?@ (MT% 10)) (SETQ MT@&l (ANGLE MT@?@ MT%ll)) (SETQ MT$ll (DISTANCE MTJ?@ MT#?l) MTOll (DISTANCE MT@?@ MT#?l) ) (IF (< MT$ll MTOll) (PROGN (IF (= MT$ll 0) (SETQ MTO?l MTJ?@ MTl&l MT|ll MTQ&l -1 ) (SETQ MTO?l MTJ?@ MTl&l MT|ll MTQ&l (ANGLE MT#?l MTJ?@) ) ) ) (PROGN (IF (= MTOll 0) (SETQ MTO?l MT@?@ MTl&l MT@&l MTQ&l -1 ) (SETQ MTO?l MT@?@ MTl&l MT@&l MTQ&l (ANGLE MT#?l MT@?@) ) ) ) ) (SETQ MT00J (APPEND MT00J (LIST (LIST MT# MTO?l MTQ&l MTl&l (DISTANCE MT#?l MTO?l)) ) ) ) ) ) ) (SETQ MTj&l MT00J) (SETQ MT00J ()) (FOREACH MTOJ MTj&l (IF (<= (NTH 4 MTOJ) MTjjl) (SETQ MT00J (APPEND MT00J (LIST MTOJ))) ) ) ) (DEFUN MT&&l (/ MT1&l MTlQl MT#&l MT%1@ MT0&l MT|$ MT%?@ MT@Ql MT$&l MTO&l MT|&l MT%&l MT?1l ) (COND ((EQUAL MT0jl "M") (SETQ MT1&l MT#?l)) ((EQUAL MT0jl "S") (SETQ MT%?@ (ENTNEXT MT1?l)) (SETQ MTJJ (ENTGET MT%?@)) (SETQ MTlQl (MT% 10)) (IF (NOT (EQUAL (LIST (CAR MT#?l) (CADR MT#?l)) (LIST (CAR MTlQl) (CADR MTlQl)) 0.0001 ) ) (PROGN (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MTJJ (ENTGET (ENTNEXT MT%?@))) (SETQ MT@Ql MT%?@) (SETQ MT%?@ (CDAR MTJJ)) ) (SETQ MTJJ (ENTGET MT@Ql) MT%?@ MT@Ql ) (SETQ MTlQl (MT% 10)) ) ) (SETQ MT1&l (POLAR MT#?l (ANGLE MT#?l MTO?l) (/ (DISTANCE (LIST (CAR MT#?l) (CADR MT#?l)) MTO?l) 2.0) ) ) (SETQ MTJJ (ENTGET MT%?@)) (SETQ MTJJ (SUBST (CONS 10 MT1&l) (ASSOC 10 MTJJ) MTJJ)) (ENTMOD MTJJ) (ENTUPD MT%?@) ) ((EQUAL MT0jl "C") (SETQ MT$&l (LIST (CDR (ENTGET MT1?l)))) (SETQ MT%?@ (ENTNEXT MT1?l) MTJJ (ENTGET MT%?@) ) (SETQ MTlQl (MT% 10) MT%1@ 1 ) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MT$&l (APPEND MT$&l (LIST (CDR MTJJ)))) (SETQ MT#&l (MT% 10) MTJJ (ENTGET (ENTNEXT MT%?@)) MT%?@ (CDAR MTJJ) MT%1@ (1+ MT%1@) ) ) (SETQ MT$&l (APPEND MT$&l (LIST (CDR (REVERSE (CDR (REVERSE MTJJ)))))) ) (IF (EQUAL (LIST (CAR MT#?l) (CADR MT#?l)) (LIST (CAR MTlQl) (CADR MTlQl)) 0.0001 ) (PROGN (IF (NOT (EQUAL (LIST (CAR MTO?l) (CADR MTO?l)) (LIST (CAR MTlQl) (CADR MTlQl)) 0.0001 ) ) (PROGN (SETQ MTO&l (NTH 1 MT$&l)) (SETQ MTO&l (SUBST (CONS 10 MTO?l) (ASSOC 10 MTO&l) MTO&l)) (SETQ MTO&l (SUBST (CONS 42 0.0) (ASSOC 42 MTO&l) MTO&l)) (SETQ MT|&l (LIST (CAR MT$&l) MTO&l)) (SETQ MT|&l (APPEND MT|&l (MEMBER (NTH 1 MT$&l) MT$&l))) (ENTDEL MT1?l) (MAPCAR (quote (LAMBDA (MTOJ) (ENTMAKE MTOJ))) MT|&l) (SETQ MT1?l (ENTLAST) MT?@l MT1?l ) ) ) ) (PROGN (IF (NOT (EQUAL (LIST (CAR MTO?l) (CADR MTO?l)) (LIST (CAR MT#&l) (CADR MT#&l)) 0.0001 ) ) (PROGN (SETQ MT%&l (LENGTH MT$&l)) (SETQ MTO&l (NTH (- MT%&l 2) MT$&l)) (SETQ MTO&l (SUBST (CONS 10 MTO?l) (ASSOC 10 MTO&l) MTO&l)) (SETQ MTO&l (SUBST (CONS 42 0.0) (ASSOC 42 MTO&l) MTO&l)) (SETQ MT|&l (LIST (CAR MT$&l)) MTL@ 1 ) (WHILE (< MTL@ (- MT%&l 2)) (SETQ MT|&l (APPEND MT|&l (LIST (NTH MTL@ MT$&l)))) (SETQ MTL@ (1+ MTL@)) ) (SETQ MT?1l (NTH (- MT%&l 2) MT$&l)) (SETQ MT?1l (SUBST (CONS 42 0.0) (ASSOC 42 MT?1l) MT?1l)) (SETQ MT|&l (APPEND MT|&l (LIST MT?1l))) (SETQ MT|&l (APPEND MT|&l (LIST MTO&l))) (SETQ MT|&l (APPEND MT|&l (LIST (LAST MT$&l)))) (ENTDEL MT1?l) (MAPCAR (quote (LAMBDA (MTOJ) (ENTMAKE MTOJ))) MT|&l) (SETQ MT1?l (ENTLAST) MT?@l MT1?l ) ) ) ) ) ) ) (IF (OR (EQUAL MT0jl "M") (EQUAL MT0jl "S")) (PROGN (SETQ MT# MT$?l MTJJ (ENTGET MT#) ) (IF (OR (= (MT% 0) "LINE") (= (MT% 0) "ARC")) (PROGN (COMMAND "PEDIT" MT# "Y" "") (SETQ MT# (ENTLAST) MTJJ (ENTGET MT#) ) ) ) (IF (= (MT% 0) "POLYLINE") (PROGN (SETQ MT%?@ (ENTNEXT MT#)) (SETQ MTJJ (ENTGET MT%?@)) (SETQ MTlQl (MT% 10) MT0&l MT%?@ ) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MTJJ (ENTGET (ENTNEXT MT%?@))) (SETQ MT|$ MT%?@) (SETQ MT%?@ (CDAR MTJJ)) ) (SETQ MTJJ (ENTGET MT|$)) (IF (EQUAL (LIST (CAR MTO?l) (CADR MTO?l)) (LIST (CAR MTlQl) (CADR MTlQl)) 0.0001 ) (PROGN (SETQ MTJJ (ENTGET MT0&l)) (SETQ MTJJ (SUBST (CONS 10 MT1&l) (ASSOC 10 MTJJ) MTJJ)) (ENTMOD MTJJ) ) (PROGN (SETQ MTJJ (ENTGET MT|$)) (SETQ MTJJ (SUBST (CONS 10 MT1&l) (ASSOC 10 MTJJ) MTJJ)) (ENTMOD MTJJ) ) ) ) ) (ENTUPD MT#) ) ) ) (DEFUN MTj1l (MT@1l MTQ1l MTJLJ / MTl1l MT&1l MT%&J MT11l MT#1l MT01l MTQ%J MT$1l MT%?@ ) (SETQ MT%?@ MT@1l MTJJ (ENTGET MT%?@) MTl1l () MTQ%J (MT% 0) ) (IF (OR (= MTQ%J "LINE") (= MTQ%J "ARC")) (PROGN (COMMAND "PEDIT" MT%?@ "Y" "") (SETQ MT%?@ (ENTLAST) MTJJ (ENTGET MT%?@) ) ) ) (SETQ MTO1l MT%?@) (IF (= (MT% 0) "POLYLINE") (PROGN (SETQ MTJJ (ENTGET (ENTNEXT MT%?@)) MT%?@ (CDAR MTJJ) ) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MTl1l (APPEND MTl1l (LIST MTJJ))) (SETQ MTJJ (ENTGET (ENTNEXT MT%?@)) MT%?@ (CDAR MTJJ) ) ) (SETQ MT&1l (LENGTH MTl1l) MT%&J (CAR MTl1l) MT11l (NTH 1 MTl1l) MT#1l (NTH (- MT&1l 2) MTl1l) MT01l (LAST MTl1l) ) (IF (< (DISTANCE MTQ1l (CDR (ASSOC 10 MT01l))) (DISTANCE MTQ1l (CDR (ASSOC 10 MT%&J))) ) (PROGN (IF MTJLJ (PROGN (SETQ MT@@J (CDR (ASSOC 10 MT%&J))) (IF (EQUAL (CDR (ASSOC 42 MT%&J)) 0 0.00001) (SETQ MT|1l (+ MT0$Q (ANGLE (CDR (ASSOC 10 MT11l)) (CDR (ASSOC 10 MT%&J)) ) ) ) (PROGN (MT$@ (CDR (ASSOC 10 MT%&J)) (CDR (ASSOC 10 MT11l)) (CDR (ASSOC 42 MT%&J)) ) (IF (MINUSP (CDR (ASSOC 42 MT#1l))) (SETQ MT|1l (+ MT0$Q (ANGLE MT1L (CDR (ASSOC 10 MT%&J))) MT&J ) ) (SETQ MT|1l (+ MT0$Q (- (ANGLE MT1L (CDR (ASSOC 10 MT%&J))) MT&J ) ) ) ) ) ) ) (PROGN (SETQ MTQ@J (CDR (ASSOC 10 MT%&J))) (IF (EQUAL (CDR (ASSOC 42 MT%&J)) 0 0.00001) (SETQ MT%1l (+ MT0$Q (ANGLE (CDR (ASSOC 10 MT11l)) (CDR (ASSOC 10 MT%&J)) ) ) ) (PROGN (MT$@ (CDR (ASSOC 10 MT%&J)) (CDR (ASSOC 10 MT11l)) (CDR (ASSOC 42 MT%&J)) ) (IF (MINUSP (CDR (ASSOC 42 MT%&J))) (SETQ MT%1l (+ MT0$Q (ANGLE MT1L (CDR (ASSOC 10 MT%&J))) MT&J ) ) (SETQ MT%1l (+ MT0$Q (- (ANGLE MT1L (CDR (ASSOC 10 MT%&J))) MT&J ) ) ) ) ) ) ) ) ) (PROGN (IF MTJLJ (PROGN (SETQ MT@@J (CDR (ASSOC 10 MT01l))) (IF (EQUAL (CDR (ASSOC 42 MT#1l)) 0 0.00001) (SETQ MT|1l (+ MT0$Q (ANGLE (CDR (ASSOC 10 MT#1l)) (CDR (ASSOC 10 MT01l)) ) ) ) (PROGN (MT$@ (CDR (ASSOC 10 MT#1l)) (CDR (ASSOC 10 MT01l)) (CDR (ASSOC 42 MT#1l)) ) (IF (MINUSP (CDR (ASSOC 42 MT#1l))) (SETQ MT|1l (+ MT0$Q (- (ANGLE MT1L (CDR (ASSOC 10 MT01l))) MT&J ) ) ) (SETQ MT|1l (+ MT0$Q (ANGLE MT1L (CDR (ASSOC 10 MT01l))) MT&J ) ) ) ) ) ) (PROGN (SETQ MTQ@J (CDR (ASSOC 10 MT01l))) (IF (EQUAL (CDR (ASSOC 42 MT#1l)) 0 0.00001) (SETQ MT%1l (+ MT0$Q (ANGLE (CDR (ASSOC 10 MT#1l)) (CDR (ASSOC 10 MT01l)) ) ) ) (PROGN (MT$@ (CDR (ASSOC 10 MT#1l)) (CDR (ASSOC 10 MT01l)) (CDR (ASSOC 42 MT#1l)) ) (IF (MINUSP (CDR (ASSOC 42 MT#1l))) (SETQ MT%1l (+ MT0$Q (- (ANGLE MT1L (CDR (ASSOC 10 MT01l))) MT&J ) ) ) (SETQ MT%1l (+ MT0$Q (ANGLE MT1L (CDR (ASSOC 10 MT01l))) MT&J ) ) ) ) ) ) ) ) ) ) ) (IF (AND MT@@J MTQ@J) (PROGN (SETQ MT$1l NIL) (SETQ MT?#l (/ (- MTj#l MT@#l) 10)) (COND ((< (- (CAR MT@@J) MT?#l) MT@#l) (SETQ MT@#l (- (CAR MT@@J) MT?#l) MT$1l T ) ) ((< (- (CAR MTQ@J) MT?#l) MT@#l) (SETQ MT@#l (- (CAR MTQ@J) MT?#l) MT$1l T ) ) ((> (+ (CAR MT@@J) MT?#l) MTj#l) (SETQ MTj#l (+ (CAR MT@@J) MT?#l) MT$1l T ) ) ((> (+ (CAR MTQ@J) MT?#l) MTj#l) (SETQ MTj#l (+ (CAR MTQ@J) MT?#l) MT$1l T ) ) ((< (- (CADR MT@@J) MT?#l) MTQ#l) (SETQ MTQ#l (- (CADR MT@@J) MT?#l) MT$1l T ) ) ((< (- (CADR MTQ@J) MT?#l) MTQ#l) (SETQ MTQ#l (- (CADR MTQ@J) MT?#l) MT$1l T ) ) ((> (+ (CADR MT@@J) MT?#l) MTl#l) (SETQ MTl#l (+ (CADR MT@@J) MT?#l) MT$1l T ) ) ((> (+ (CADR MTQ@J) MT?#l) MTl#l) (SETQ MTl#l (+ (CADR MTQ@J) MT?#l) MT$1l T ) ) ) (IF MT$1l (PROGN (SETQ MT&#l (LIST (- MT@#l (* MT?#l 1.1)) (- MTQ#l (* MT?#l 1.1))) MT1#l (LIST (+ MTj#l (* MT?#l 1.1)) (+ MTl#l (* MT?#l 1.1))) ) (COMMAND "ZOOM" "W" MT&#l MT1#l) ) ) ) ) ) (DEFUN MT##l (MT1%@ / MT0#l MT$#l MT@$J MT$$ MTO#l) (SETQ MT@$J (SSLENGTH MT1%@) MT$$ 0 MTO#l () MT0#l MT1%@ ) (REPEAT MT@$J (SETQ MTO#l (APPEND MTO#l (LIST (SSNAME MT0#l MT$$))) MT$$ (1+ MT$$) ) ) (MAPCAR (quote (LAMBDA (MTOJ) (IF (OR (EQUAL MTOJ MT1?l) (MEMBER MTOJ MT|#l)) (SSDEL MTOJ MT0#l) ) ) ) MTO#l ) (SETQ MT$#l MT0#l) ) (DEFUN MT%#l (/ MT?0l MTj0l MT@0l MTQ0l MTl0l MT%?@ MT&0l MT10l MT#0l MT00l MT$0l MTO0l MTLO MTQ&l MTl&l MT|0l MT%0l MT?$l MTj$l MT@$l MTQ$l MTl$l MT&$l MT1$l MT#$l MT0$l MT$$l MT#% MTO$l MT?J@ MTJJ@ MTOJQ MTJL@ MT@L@ MT|$l MT%$l MT?Ol MTjOl MT@Ol MTQJ MT#|J MTQOl MTlOl MT&Ol MT1Ol MT#Ol MT0Ol MT$Ol MTOOl MT|Ol MTO%J MT%Ol MTL@ MTO@ MT|@ MT?|l MTj|l MT@|l MTQ|l MTl|l MT&|l MT1|l MT#|l MT0|l MTO0 MT$|l MTO|l MT||l MT%|l ) (SETQ MT%?l NIL MTO0 NIL MT0|l NIL MT0$Q (GETVAR "VIEWTWIST") ) (IF (NOT (AND MT@@J MTQ@J MT|1l MT%1l)) (PROGN (SETQ MTJJ (ENTGET MT1?l)) (SETQ MT&@l (MT% 62) MT#@l (MT% 6) MT$@l (CADDR (MT% 10)) MTQ@l (MT% 8) ) (IF (NOT MT&@l) (SETQ MT?%l "Bylayer") (SETQ MT?%l (ITOA MT&@l)) ) (IF (NOT MT#@l) (SETQ MTj%l "Bylayer") (SETQ MTj%l MT#@l) ) (SETQ MT# (ENTNEXT MT1?l)) (SETQ MTJJ (ENTGET MT#)) (IF (NOT MT|?l) (PROGN (SETQ MT|?l T) (IF (EQUAL (TYPE MT&JJ) "INT") (SETQ MTL@ (STRCAT "\n(" (ITOA MT&JJ) " / ")) (SETQ MTL@ (STRCAT "\n(" (RTOS MT&JJ 2 0) " / ")) ) (IF (EQUAL (TYPE MT@%l) "INT") (SETQ MTL@ (STRCAT MTL@ (ITOA MT@%l) ") ")) (SETQ MTL@ (STRCAT MTL@ (RTOS MT@%l 2 0) ") ")) ) (IF MT@@l (SETQ MTL@ (STRCAT MTL@ " Layer = " MTQ@l)) ) (IF MTl@l (SETQ MTL@ (STRCAT MTL@ " Color = " MT?%l)) ) (IF MT1@l (SETQ MTL@ (STRCAT MTL@ " Linetype = " MTj%l)) ) (IF MT0@l (SETQ MTL@ (STRCAT MTL@ " Elevation = " (RTOS MT$@l 2 2))) ) ) ) (SETQ MTL@ (STRCAT MTL@ " : ")) (PRINC MTL@) (PRINC "*") (SETQ MT%?@ MT# MTO%J () ) (WHILE (NOT (EQUAL (MT% 0) "SEQEND")) (SETQ MTO%J (APPEND MTO%J (LIST (MT% 10)))) (SETQ MTJJ (ENTGET (ENTNEXT MT%?@)) MT%?@ (CDAR MTJJ) ) ) (SETQ MT%Ol (LENGTH MTO%J)) (SETQ MTO@ (CAR MTO%J) MT|@ (LAST MTO%J) ) (MTj1l MT1?l MT|@ T) (MTj1l MT1?l MTO@ NIL) ) ) (REPEAT MTQ%l (PRINC "*")) (SETQ MTQ%l 0 MT#|l MT$jl ) (IF (> MT#|l 359) (SETQ MT#|l 359) ) (IF MTl%l (PROGN (SETQ MTj$l (POLAR MT@@J (+ MT|1l (/ (MT0 MT#|l) 2.0)) MTjjl)) (SETQ MT@$l (POLAR MT@@J MT|1l MTjjl)) (SETQ MTQ$l (POLAR MT@@J (- MT|1l (/ (MT0 MT#|l) 2.0)) MTjjl)) (COND ((AND (> MT#|l 100) (<= MT#|l 180)) (SETQ MT1$l (POLAR MT@@J (+ MT|1l MT#J) MTjjl) MT0$l (POLAR MT@@J (- MT|1l MT#J) MTjjl) MT#% (LIST MT@@J MTj$l MT1$l MT@$l MT0$l MTQ$l) ) ) ((AND (> MT#|l 180) (< MT#|l 270)) (SETQ MT1$l (POLAR MT@@J (+ MT|1l MT&J) MTjjl) MT#$l (POLAR MT@@J (+ MT|1l MT#J) MTjjl) MT0$l (POLAR MT@@J (- MT|1l MT#J) MTjjl) MT$$l (POLAR MT@@J (- MT|1l MT&J) MTjjl) MT#% (LIST MT@@J MTj$l MT1$l MT#$l MT@$l MT0$l MT$$l MTQ$l) ) ) ((> MT#|l 270) (SETQ MT1$l (POLAR MT@@J (+ MT|1l MT&J) MTjjl) MT#$l (POLAR MT@@J (+ MT|1l MT#J) MTjjl) MT0$l (POLAR MT@@J (- MT|1l MT#J) MTjjl) MT$$l (POLAR MT@@J (- MT|1l MT&J) MTjjl) MTl$l (POLAR MT@@J (+ MT|1l MT&J MT#J) MTjjl) MT&$l (POLAR MT@@J (- MT|1l MT&J MT#J) MTjjl) MT#% (LIST MT@@J MTj$l MTl$l MT1$l MT#$l MT@$l MT0$l MT$$l MT&$l MTQ$l ) ) ) (T (SETQ MT#% (LIST MT@@J MTj$l MT@$l MTQ$l))) ) (SETQ MTO0 (SSGET "CP" MT#%)) (IF MTO0 (SETQ MTO0 (MT##l MTO0)) ) (SETQ MT&0l 0 MT?0l () ) (IF MTO0 (PROGN (IF (> (SSLENGTH MTO0) 0) (SETQ MTl%l T) (SETQ MTl%l NIL) ) (REPEAT (SSLENGTH MTO0) (SETQ MT# (SSNAME MTO0 MT&0l)) (IF (MTj@l MT#) (SETQ MT?0l (APPEND (LIST MT#) MT?0l)) ) (SETQ MT&0l (1+ MT&0l)) ) (IF (AND MT?0l (ENTGET (CAR MT?0l))) (PROGN (MT&ll MT@@J MT?0l) (IF (AND MT00J (> (LENGTH MT00J) 0)) (PROGN (SETQ MT10l (LENGTH MT00J) MT#0l 0 MT00l NIL MT?$l 1e32 ) (REPEAT MT10l (SETQ MTLO (NTH MT#0l MT00J) MTQ&l (NTH 2 MTLO) MTl&l (NTH 3 MTLO) MT|0l (NTH 4 MTLO) ) (IF (EQUAL MT|0l 0.0 0.0000001) (SETQ MT|0l (* MTjjl 0.00001)) ) (SETQ MTO$l (LIST (CAR MT@@J) (CADR MT@@J)) MT?J@ (LIST (CAR (NTH 1 MTLO)) (CADR (NTH 1 MTLO)) ) MTJJ@ (POLAR MT?J@ MTl&l MT|0l) MTOJQ (POLAR MTO$l (- MT|1l PI) MT|0l) MTJL@ (+ (ANGLE MT?J@ MTOJQ) MT&J) MT@L@ (+ (ANGLE MTJJ@ MTO$l) MT&J) MT|$l (POLAR MT?J@ MT@L@ 100) MT%$l (POLAR MTO$l MTJL@ 100) MT?Ol (POLAR MTO$l (ANGLE MTO$l MTJJ@) 100) MTjOl (INTERS MTO$l MT?Ol MT?J@ MT|$l NIL) MT?Ol (POLAR MT?J@ (ANGLE MT?J@ MTOJQ) 100) MT@Ol (INTERS MT?J@ MT?Ol MTO$l MT%$l NIL) MTQJ (DISTANCE MTO$l MT@Ol) MT#|J (DISTANCE MT?J@ MTjOl) MT?|l (DISTANCE MTJJ@ MTOJQ) MT@|l (+ (/ (* MTQJ (DISTANCE MT?J@ MT@Ol)) 2.0) (/ (* MTQJ (DISTANCE MTOJQ MT@Ol)) 2.0) ) MTQ|l (+ (/ (* MT#|J (DISTANCE MTO$l MTjOl)) 2.0) (/ (* MT#|J (DISTANCE MTJJ@ MTjOl)) 2.0) ) MT%|l (+ MT@|l MTQ|l) MTO|l (ABS (- MT?|l MT|0l)) ) (IF (ZEROP MTO|l) (SETQ MT||l 1e20) (SETQ MT||l (* (/ MT|0l MTO|l) 2.0)) ) (IF MT&%l (SETQ MT%0l MT%|l) (PROGN (SETQ MT%0l (+ MT%|l (EXPT MT||l 2))) (IF (>= (* (EXPT MT||l 2) MTOjl) 100) (SETQ MT%0l 1e32) ) ) ) (IF (< MT%0l MT?$l) (SETQ MT?$l MT%0l MT00l MT#0l ) ) (SETQ MT#0l (1+ MT#0l)) ) (IF MT00l (PROGN (SETQ MT$0l (NTH MT00l MT00J)) (IF (< (NTH 4 MT$0l) MTjjl) (SETQ MT&|l (CAR MT$0l) MTQ0l (NTH 4 MT$0l) MTl0l (NTH 1 MT$0l) ) (SETQ MT$0l NIL MT&|l NIL MTQ0l NIL MTl0l NIL ) ) ) (SETQ MT$0l NIL MT1|l NIL MT@0l NIL MTO0l NIL ) ) ) (SETQ MT&|l NIL) ) ) (SETQ MT&|l NIL) ) ) ) ) ) (IF MT1%l (PROGN (SETQ MTQOl (POLAR MTQ@J (+ MT%1l (/ (MT0 MT#|l) 2.0)) MTjjl)) (SETQ MTlOl (POLAR MTQ@J MT%1l MTjjl)) (SETQ MT&Ol (POLAR MTQ@J (- MT%1l (/ (MT0 MT#|l) 2.0)) MTjjl)) (COND ((AND (> MT#|l 100) (<= MT#|l 180)) (SETQ MT1Ol (POLAR MTQ@J (+ MT%1l MT#J) MTjjl) MT0Ol (POLAR MTQ@J (- MT%1l MT#J) MTjjl) MT#% (LIST MTQ@J MTQOl MT1Ol MTlOl MT0Ol MT&Ol) ) ) ((AND (> MT#|l 180) (< MT#|l 270)) (SETQ MT1Ol (POLAR MTQ@J (+ MT%1l MT&J) MTjjl) MT#Ol (POLAR MTQ@J (+ MT%1l MT#J) MTjjl) MT0Ol (POLAR MTQ@J (- MT%1l MT#J) MTjjl) MT$Ol (POLAR MTQ@J (- MT%1l MT&J) MTjjl) MT#% (LIST MTQ@J MTQOl MT1Ol MT#Ol MTlOl MT0Ol MT$Ol MT&Ol) ) ) ((> MT#|l 270) (SETQ MT1Ol (POLAR MTQ@J (+ MT%1l MT&J) MTjjl) MT#Ol (POLAR MTQ@J (+ MT%1l MT#J) MTjjl) MT0Ol (POLAR MTQ@J (- MT%1l MT#J) MTjjl) MT$Ol (POLAR MTQ@J (- MT%1l MT&J) MTjjl) MTOOl (POLAR MTQ@J (+ MT%1l MT&J MT#J) MTjjl) MT|Ol (POLAR MTQ@J (- MT%1l MT&J MT#J) MTjjl) MT#% (LIST MTQ@J MTQOl MTOOl MT1Ol MT#Ol MTlOl MT0Ol MT$Ol MT|Ol MT&Ol ) ) ) (T (SETQ MT#% (LIST MTQ@J MTQOl MTlOl MT&Ol))) ) (SETQ MT0|l (SSGET "CP" MT#%)) (IF MT0|l (SETQ MT0|l (MT##l MT0|l)) ) (SETQ MT&0l 0 MTj0l () ) (IF MT0|l (PROGN (IF (> (SSLENGTH MT0|l) 0) (SETQ MT1%l T) (SETQ MT1%l NIL) ) (REPEAT (SSLENGTH MT0|l) (SETQ MT# (SSNAME MT0|l MT&0l)) (IF (MTj@l MT#) (SETQ MTj0l (APPEND (LIST MT#) MTj0l)) ) (SETQ MT&0l (1+ MT&0l)) ) (IF (AND MTj0l (ENTGET (CAR MTj0l))) (PROGN (MT&ll MTQ@J MTj0l) (IF (AND MT00J (> (LENGTH MT00J) 0)) (PROGN (SETQ MT10l (LENGTH MT00J)) (SETQ MT#0l 0 MT00l NIL MT?$l 1e32 ) (REPEAT MT10l (SETQ MTLO (NTH MT#0l MT00J) MTQ&l (NTH 2 MTLO) MTl&l (NTH 3 MTLO) MT|0l (NTH 4 MTLO) ) (IF (EQUAL MT|0l 0.0 0.0000001) (SETQ MT|0l (* MTjjl 0.00001)) ) (SETQ MTO$l (LIST (CAR MTQ@J) (CADR MTQ@J)) MT?J@ (LIST (CAR (NTH 1 MTLO)) (CADR (NTH 1 MTLO)) ) MTJJ@ (POLAR MT?J@ MTl&l MT|0l) MTOJQ (POLAR MTO$l (- MT%1l PI) MT|0l) MTJL@ (+ (ANGLE MT?J@ MTOJQ) MT&J) MT@L@ (+ (ANGLE MTJJ@ MTO$l) MT&J) MT|$l (POLAR MT?J@ MT@L@ 100) MT%$l (POLAR MTO$l MTJL@ 100) MT?Ol (POLAR MTO$l (ANGLE MTO$l MTJJ@) 100) MTjOl (INTERS MTO$l MT?Ol MT?J@ MT|$l NIL) MT?Ol (POLAR MT?J@ (ANGLE MT?J@ MTOJQ) 100) MT@Ol (INTERS MT?J@ MT?Ol MTO$l MT%$l NIL) MTQJ (DISTANCE MTO$l MT@Ol) MT#|J (DISTANCE MT?J@ MTjOl) MT?|l (DISTANCE MTJJ@ MTOJQ) MT@|l (+ (/ (* MTQJ (DISTANCE MT?J@ MT@Ol)) 2.0) (/ (* MTQJ (DISTANCE MTOJQ MT@Ol)) 2.0) ) MTQ|l (+ (/ (* MT#|J (DISTANCE MTO$l MTjOl)) 2.0) (/ (* MT#|J (DISTANCE MTJJ@ MTjOl)) 2.0) ) MT%|l (+ MT@|l MTQ|l) MTO|l (ABS (- MT?|l MT|0l)) ) (IF (ZEROP MTO|l) (SETQ MT||l 1e20) (SETQ MT||l (* (/ MT|0l MTO|l) 2.0)) ) (IF MT&%l (SETQ MT%0l MT%|l) (PROGN (SETQ MT%0l (+ MT%|l (EXPT MT||l 2))) (IF (>= (* (EXPT MT||l 2) MTOjl) 100) (SETQ MT%0l 1e32) ) ) ) (IF (< MT%0l MT?$l) (SETQ MT?$l MT%0l MT00l MT#0l ) ) (SETQ MT#0l (1+ MT#0l)) ) (IF MT00l (PROGN (SETQ MT$0l (NTH MT00l MT00J)) (IF (< (NTH 4 MT$0l) MTjjl) (SETQ MT1|l (CAR MT$0l) MT@0l (NTH 4 MT$0l) MTO0l (NTH 1 MT$0l) ) (SETQ MT$0l NIL MT1|l NIL MT@0l NIL MTO0l NIL ) ) ) (SETQ MT$0l NIL MT1|l NIL MT@0l NIL MTO0l NIL ) ) ) (SETQ MT1|l NIL) ) ) (SETQ MT1|l NIL) ) ) ) ) ) (IF (NOT MT&|l) (SETQ MTl%l NIL) ) (IF (NOT MT1|l) (SETQ MT1%l NIL) ) (SETQ MT#%l NIL) (COND ((AND MT&|l MT1|l (EQ MT&|l MT1|l) (= MTQ0l 0) (= MT@0l 0)) (SETQ MT%?l NIL MT?jl T ) ) ((AND MT&|l MT1|l (EQUAL MT&|l MT1|l)) (SETQ MT#%l T) (IF (< MTQ0l MT@0l) (PROGN (SETQ MT$?l MT&|l MT#?l MT@@J MTO?l MTl0l MT$|l T ) (MTO@l MT$?l) (IF MT0%l (SETQ MT1?l MT0%l) ) (IF (NOT (EQUAL (CDR (ASSOC 0 (ENTGET MT1?l))) "POLYLINE")) (PROGN (COMMAND "PEDIT" MT1?l "Y" "") (SETQ MT1?l (ENTLAST)) ) ) (MTj1l MT$?l MTO?l T) (SETQ MT$?l MTO1l MT&|l MT$?l MT1|l MT$?l ) ) (PROGN (SETQ MT$?l MT1|l MT#?l MTQ@J MTO?l MTO0l MT$|l NIL ) (MTO@l MT$?l) (IF MT$%l (SETQ MT1?l MT$%l) ) (IF (NOT (EQUAL (CDR (ASSOC 0 (ENTGET MT1?l))) "POLYLINE")) (PROGN (COMMAND "PEDIT" MT1?l "Y" "") (SETQ MT1?l (ENTLAST)) ) ) (MTj1l MT$?l MTO?l NIL) (SETQ MT$?l MTO1l MT1|l MT$?l MT&|l MT$?l ) ) ) (MT&&l) (IF (NOT (MEMBER MT1?l MT|#l)) (SETQ MT|#l (APPEND MT|#l (LIST MT1?l))) ) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (IF MT$|l (PROGN (SETQ MT$?l MT1|l MT#?l MTQ@J MTO?l MTO0l ) (IF MT$%l (SETQ MT1?l MT$%l) ) (MTj1l MT$?l MTO?l NIL) ) (PROGN (SETQ MT$?l MT&|l MT#?l MT@@J MTO?l MTl0l MTL@ T ) (IF MT0%l (SETQ MT1?l MT0%l) ) (MTj1l MT$?l MTO?l T) ) ) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (MT&&l) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (IF (NOT (MEMBER MT1?l MT|#l)) (SETQ MT|#l (APPEND MT|#l (LIST MT1?l))) ) (IF MT$?l (SETQ MT|#l (APPEND MT|#l (LIST MT$?l)) MTQ%l (1+ MTQ%l) MT%?l NIL MT?jl T ) ) ) ((OR (AND MT&|l (ENTGET MT&|l) (NOT (EQUAL MT&|l MT1?l))) (AND MT1|l (ENTGET MT1|l) (NOT (EQUAL MT&|l MT1?l))) ) (IF (AND MT&|l (ENTGET MT&|l)) (PROGN (SETQ MT$?l MT&|l MT#?l MT@@J MTO?l MTl0l ) (MTO@l MT$?l) (IF MT0%l (SETQ MT1?l MT0%l) ) (IF (NOT (EQUAL (CDR (ASSOC 0 (ENTGET MT1?l))) "POLYLINE")) (PROGN (COMMAND "PEDIT" MT1?l "Y" "") (SETQ MT1?l (ENTLAST)) ) ) (MTj1l MT$?l MTO?l T) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (MT&&l) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (IF (NOT (MEMBER MT1?l MT|#l)) (SETQ MT|#l (APPEND MT|#l (LIST MT1?l))) ) (IF MT$?l (SETQ MT|#l (APPEND MT|#l (LIST MT$?l)) MTQ%l (1+ MTQ%l) MT%?l T MT?jl T MT0%l MT$?l ) ) ) ) (IF (AND MT1|l (ENTGET MT1|l)) (PROGN (SETQ MT$?l MT1|l MT#?l MTQ@J MTO?l MTO0l ) (MTO@l MT$?l) (IF MT$%l (SETQ MT1?l MT$%l) ) (IF (NOT (EQUAL (CDR (ASSOC 0 (ENTGET MT1?l))) "POLYLINE")) (PROGN (COMMAND "PEDIT" MT1?l "Y" "") (SETQ MT1?l (ENTLAST)) ) ) (MTj1l MT$?l MTO?l NIL) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (MT&&l) (IF (MT?& MT$?l) (SETQ MT$?l (ENTLAST)) ) (IF (NOT (MEMBER MT1?l MT|#l)) (SETQ MT|#l (APPEND MT|#l (LIST MT1?l))) ) (IF MT$?l (SETQ MT|#l (APPEND MT|#l (LIST MT$?l)) MTQ%l (1+ MTQ%l) MT%?l T MT?jl T MT$%l MT$?l ) ) ) ) ) (T (SETQ MT%?l NIL)) ) (IF (> (LENGTH MT|#l) MT|jl) (SETQ MT%?l NIL) ) ) (DEFUN MTO%l (MT|%l MT%%l / MT??& MTOJ) (SETQ MT??& NIL) (WHILE (NOT MT??&) (INITGET "Y N") (SETQ MTOJ (GETKWORD (STRCAT MT|%l " (Y/N) <" MT%%l "> :"))) (IF MTOJ (SETQ MT??& MTOJ) (SETQ MT??& MT%%l) ) ) ) (DEFUN MTj?& (/ MTOJ MT@?& MTQ?&) (INITGET (+ 1 2 4)) (SETQ MTjjl (GETDIST "\nEnter or Pick Tolerance :")) (SETQ MT@?& NIL) (WHILE (NOT MT@?&) (SETQ MT@?& (GETINT (STRCAT "\nEnter Window Angle (1 - 360) <" (ITOA MT$jl) ">: " ) ) ) (IF MT@?& (IF (AND (> MT@?& 0) (< MT@?& 361)) (SETQ MT$jl MT@?&) (SETQ MT@?& NIL) ) (SETQ MT@?& MT$jl) ) ) (SETQ MTOJ NIL) (WHILE (NOT MTOJ) (INITGET "D A") (SETQ MTOJ (GETKWORD (STRCAT "Choose Guidance Criteria - Distance or Angle (D/A) <" MT#jl "> :" ) ) ) (IF MTOJ (SETQ MT#jl MTOJ) (SETQ MTOJ MT#jl) ) ) (IF (EQUAL MT#jl "D") (SETQ MT&%l T) (SETQ MT&%l NIL) ) (IF (EQUAL MT#jl "A") (PROGN (SETQ MTQ?& NIL) (WHILE (NOT MTQ?&) (SETQ MTQ?& (GETREAL (STRCAT "\nAngular Selectivity (wide to narrow = 0 to 100) <" (RTOS MTOjl) ">: " ) ) ) (IF MTQ?& (IF (AND (>= MTQ?& 0) (<= MTQ?& 100)) (SETQ MTOjl MTQ?&) (SETQ MTQ?& NIL) ) (SETQ MTQ?& MTOjl) ) ) ) ) (SETQ MTOJ NIL) (WHILE (NOT MTOJ) (INITGET "M S C") (SETQ MTOJ (GETKWORD (STRCAT "Choose Join method - Move, Split or Connect (M/S/C) <" MT0jl "> :" ) ) ) (IF MTOJ (SETQ MT0jl MTOJ) (SETQ MTOJ MT0jl) ) ) (SETQ MT@jl (MTO%l "OPEN closed Polylines" MT@jl)) (IF (= MT@jl "N") (SETQ MTl?& NIL) (SETQ MTl?& T) ) (IF (= MTQjl "N") (SETQ MT@@l NIL) (SETQ MT@@l T) ) (SETQ MTQjl (MTO%l "Limit by LAYER" MTQjl)) (IF (= MTQjl "N") (SETQ MT@@l NIL) (SETQ MT@@l T) ) (SETQ MTljl (MTO%l "Limit by COLOR" MTljl)) (IF (= MTljl "N") (SETQ MTl@l NIL) (SETQ MTl@l T) ) (SETQ MT&jl (MTO%l "Limit by LINETYPE" MT&jl)) (IF (= MT&jl "N") (SETQ MT1@l NIL) (SETQ MT1@l T) ) (SETQ MT1jl (MTO%l "Limit by ELEVATION" MT1jl)) (IF (= MT1jl "N") (SETQ MT0@l NIL) (SETQ MT0@l T) ) (SETQ MTOJ (GETSTRING (STRCAT "Maximum Join Entites is set at " (ITOA MT|jl) " Do you want to change it (y/) :" ) ) ) (IF (EQ (STRCASE MTOJ) "Y") (PROGN (INITGET (+ 1 2 4)) (SETQ MT|jl (GETINT "\nEnter new value for Maximum Join Entities :") ) ) ) ) (DEFUN MT&?& (/ MT1?&) (PRINC (STRCAT "\nTolerance = " (RTOS MTjjl 2 4) " ")) (PRINC "Method = ") (COND ((EQUAL MT0jl "M") (PRINC "Move ")) ((EQUAL MT0jl "S") (PRINC "Split ")) ((EQUAL MT0jl "C") (PRINC "Connect ")) ) (PRINC " Guidance = ") (IF (EQUAL MT#jl "D") (PRINC "Distance") (PRINC (STRCAT "Angle " (RTOS MTOjl))) ) (PRINC (STRCAT " Window Angle = " (ITOA MT$jl))) (IF (OR MT@@l MTl@l MT1@l MT0@l) (PROGN (SETQ MT1?& "\nLimits: ") (IF MT@@l (SETQ MT1?& (STRCAT MT1?& " Layer ")) ) (IF MTl@l (SETQ MT1?& (STRCAT MT1?& " Color ")) ) (IF MT1@l (SETQ MT1?& (STRCAT MT1?& " Linetype ")) ) (IF MT0@l (SETQ MT1?& (STRCAT MT1?& " Elevation ")) ) (PRINC MT1?&) ) (PRINC "\nLimits are OFF") ) (IF MTl?& (PRINC " CLOSED will be OPENED") ) (IF (/= MT|jl 500) (PRINC (STRCAT "\nMaximum Join Entities is " (ITOA MT|jl))) ) ) (DEFUN C:JOIN (/ MT#?& MTL@ MTJ&J MTOJ MT|O@ MT0?& MT$?& MTO?& MT|?& MT%?& MT?j& MTjj& MT@j& MTQj& MTlj& MT&j& MT1j& MT#j& MT?0 MTL&@ MT0j& MT&JQ MT1JQ ) (SETQ MT?@ *ERROR* ; *ERROR* MT&?l MTL@ T MT$?& "N" ) (MTO&) (MT|J) (SETVAR "SORTENTS" 3) (IF (/= (GETVAR "TREEDEPTH") 5020) (SETVAR "TREEDEPTH" 5020) ) (PRINC "\n JOIN v1.22 (c) 1995 TCI Software") (MTJ1) (IF MT#1 (PROGN (PRINC (STRCAT "\n" (ITOA (LENGTH MT#1)) " Linetypes need to be redefined as Continuous" "\nThis will cause a REGEN - OK to Continue (Y/N) : " ) ) (SETQ MT|O@ (STRCASE (GETSTRING "? "))) (IF (EQUAL MT|O@ "Y") (PROGN (MT$1 T) (MTO1 T) (SETQ MT1@@ T MT|O@ T ) (COMMAND "regen") ) (SETQ MT1@@ NIL MT|O@ NIL ) ) ) (SETQ MT1@@ NIL MT|O@ T ) ) (IF MT|O@ (PROGN (SETQ MT$?& (MTO%l "\nDo you want to disable UNDO" MT$?&)) (IF (AND (= MT$?& "Y") (> (GETVAR "UNDOCTL") 0)) (PROGN (COMMAND "UNDO" "C" "N") (SETQ MT0?& T)) (SETQ MT0?& NIL) ) (PRINC "\nFor the most reliable operation, Viewres should be set to over 5000 and" ) (PRINC "\n all Entities you want to process should be completely On-Screen." ) (SETQ MTL@ (GETSTRING "\nIs your Viewres set to over 5000 /n ?") ) (IF (EQUAL (STRCASE MTL@) "N") (PROGN (COMMAND "zoom" "E") (COMMAND "viewres" "Y" "10000") (COMMAND "zoom" "P") ) ) (IF (NOT MTjjl) (MTj?&) ) (WHILE MTL@ (MT&?&) (SETQ MTOJ (GETSTRING "\nDo you want to Change Settings :")) (IF (NOT (OR (= (STRCASE MTOJ) "N") (= MTOJ ""))) (MTj?&) (SETQ MTL@ NIL) ) ) (PRINC "\nPick Entities to JOIN : ") (SETQ MTQ (SSGET)) (IF MTQ (PROGN (SETQ MT|OQ (GETVAR "viewctr") MT@|Q (GETVAR "viewsize") MT$j& (POLAR MT|OQ 3.927 (* 0.707 MT@|Q)) MTOj& (POLAR MT|OQ 0.7854 (* 0.707 MT@|Q)) MT@#l (CAR MT$j&) MTj#l (CAR MTOj&) MTQ#l (CADR MT$j&) MTl#l (CADR MTOj&) ) (SETQ MT&JJ (SSLENGTH MTQ) MT@%l 0 ) (WHILE (< MT@%l MT&JJ) (SETQ MT@@J NIL MTQ@J NIL MT|1l NIL MT%1l NIL MTl%l T MT1%l T MT|#l () MTQ%l 0 MT1?l NIL MT0%l NIL MT$%l NIL ) (SETQ MT# (SSNAME MTQ MT@%l)) (SETQ MT@%l (1+ MT@%l)) (IF (ENTGET MT#) (PROGN (SETQ MT?jl NIL MT|?l NIL ) (SETQ MT1?l MT# MT?@l MT# ) (SETQ MTJJ (ENTGET MT#)) (SETQ MTJ&J (MT% 0)) (COND ((= MTJ&J "POLYLINE") (IF (= (LOGAND (MT% 70) 121) 0) (MT%#l) ) ) ((= MTJ&J "LINE") (IF (EQUAL (CDDR (MT% 10)) (CDDR (MT% 11))) (PROGN (COMMAND "PEDIT" MT# "Y" "") (SETQ MT# (ENTLAST) MTO?& MT# ) (SETQ MT1?l MT# MT?@l MT# ) (SETQ MTJJ (ENTGET MT#)) (MT%#l) (IF (NOT MT?jl) (COMMAND "EXPLODE" MTO?&) (COMMAND) ) ) ) ) ((= MTJ&J "ARC") (COMMAND "PEDIT" MT# "Y" "") (SETQ MT# (ENTLAST) MTO?& MT# ) (SETQ MT1?l MT# MT?@l MT# ) (SETQ MTJJ (ENTGET MT#)) (MT%#l) (IF (NOT MT?jl) (COMMAND "EXPLODE" MTO?&) (COMMAND) ) ) (T (SETQ MT%?l NIL)) ) (WHILE (AND MT%?l (MT%jl)) (MT%#l)) ) ) (IF (AND MT|#l (> (LENGTH MT|#l) 1) (ENTGET MT?@l) (AND (EQUAL (CDR (ASSOC 0 (ENTGET MT?@l))) "POLYLINE") (EQUAL (LOGAND (CDR (ASSOC 70 (ENTGET MT?@l))) 1) 0) ) ) (PROGN (SETQ MT0j& ()) (MAPCAR (quote (LAMBDA (MTOJ) (IF (NOT (MT?& MTOJ)) (PROGN (IF (AND MT0j& (> (LENGTH MT0j&) 0)) (SETQ MT0j& (APPEND MT0j& (LIST MTOJ))) (SETQ MT0j& (LIST MTOJ)) ) ) ) ) ) MT|#l ) (SETQ MT|#l MT0j&) (SETQ MT#?& NIL) (MT|L) (SETQ MT|?& () MT%?& () MT?j& () ) (SETQ MTjj& (ENTGET (CAR MT|#l))) (SETQ MTjll (ASSOC 8 MTjj&)) (SETQ MT@j& (LIST (LIST (CONS 0 "SEQEND") MTjll))) (SETQ MT|?& (MTQll MTjj&) MTL&@ 1 ) (SETQ MTjj& (LIST (CDR MTjj&))) (MT0Ql MT|?&) (SETQ MTQj& MT$Ql MTlj& MTOQl MT&j& NIL ) (REPEAT (1- (LENGTH MT|#l)) (SETQ MT1j& (ENTGET (NTH MTL&@ MT|#l))) (IF MT1j& (PROGN (SETQ MT%?& (MTQll MT1j&) MTL&@ (1+ MTL&@) ) (MT0Ql MT%?&) (SETQ MT#j& MT$Ql MT?0 MTOQl ) (COND ((EQUAL MTQj& MT#j& 0.0001) (SETQ MT|?& (APPEND (MT1Ql (MT@ll MT%?&)) MT|?&) ) ) ((EQUAL MTQj& MT?0 0.0001) (SETQ MT|?& (APPEND (MT1Ql MT%?&) MT|?&)) ) ((EQUAL MTlj& MT#j& 0.0001) (SETQ MT|?& (APPEND (MT1Ql MT|?&) MT%?&)) ) ((EQUAL MTlj& MT?0 0.0001) (SETQ MT|?& (APPEND (MT1Ql MT|?&) (MT@ll MT%?&)) ) ) (T (SETQ MT&j& T)) ) (MT0Ql MT|?&) (SETQ MTQj& MT$Ql MTlj& MTOQl ) ) (SETQ MTL&@ (1+ MTL&@)) ) ) (SETQ MT|?& (MT|Ql MT|?&)) (SETQ MT?j& (APPEND MTjj& MT|?&)) (SETQ MT?j& (APPEND MT?j& MT@j&)) (SETQ MT&JQ () MT1JQ MT|#l ) (MAPCAR (quote (LAMBDA (MTOJ) (SETQ MT1JQ (CDR MT1JQ)) (IF (NOT (MEMBER MTOJ MT1JQ)) (PROGN (IF (AND MT&JQ (> (LENGTH MT&JQ) 0)) (SETQ MT&JQ (APPEND MT&JQ (LIST MTOJ))) (SETQ MT&JQ (LIST MTOJ)) ) ) ) ) ) MT|#l ) (SETQ MT|#l MT&JQ) (IF (NOT MT&j&) (PROGN (MAPCAR (quote (LAMBDA (MTOJ) (ENTDEL MTOJ))) MT|#l) (MAPCAR (quote (LAMBDA (MTOJ) (ENTMAKE MTOJ))) MT?j& ) (IF (AND MT#%l (NOT MTl?&)) (COMMAND "PEDIT" "L" "C" "") ) (IF MTl?& (MT%@l) ) (IF (MT?& MT1?l) (SETQ MT1?l (ENTLAST)) ) ) ) (MT%L) ) ) ) ) ) ) ) (SETQ MT1?l NIL MT#?l NIL MT0?l NIL MT$?l NIL MTO?l NIL MT|?l NIL MT%?l NIL MT?jl NIL MT&JJ NIL MT@%l NIL ) (SETVAR "HIGHLIGHT" 1) (IF MT0?& (COMMAND "UNDO" "") ) (IF (AND MT1@@ MT#1) (PROGN (MTO1 NIL) (COMMAND "regen")) ) (IF (FINDFILE "CONTIN.LIN") (COMMAND "shell" "DEL CONTIN.LIN") ) (IF (FINDFILE "ORIG.LIN") (COMMAND "shell" "DEL ORIG.LIN") ) (MTL) (PRINC) ) (DEFUN MT-JOIN (MT$#Q MT|j& MT%j& MT?@& MTj@& MT@@& MTQ@& MTl@& MT&@& MT1@& MT#@& MT0@& / MT#?& MTL@ MTJ&J MT0?& MT|?& MT%?& MT?j& MTjj& MT@j& MTQj& MTlj& MT&j& MT1j& MT#j& MT?0 MTL&@ MTO?& ) (SETQ MTQ MT$#Q MTjjl MT|j& MT0jl MT%j& MT#jl MT?@& MT$jl MTj@& MTl?& MT@@& MT@@l MTQ@& MTl@l MTl@& MT1@l MT&@& MT0@l MT1@& MTOjl MT#@& MT|jl MT0@& ) (COND ((NOT MTOjl) (SETQ MTOjl 90)) ((< MTOjl 0) (SETQ MTOjl 0)) ((> MTOjl 100) (SETQ MTOjl 100)) ) (COND ((NOT MT|jl) (SETQ MT|jl 500)) ((< MT|jl 1) (SETQ MT|jl 1)) ((> MT|jl 32760) (SETQ MT|jl 32760)) ) (IF (EQUAL MT#jl "D") (SETQ MT&%l T) (SETQ MT&%l NIL) ) (SETQ MT?@ *ERROR* ; *ERROR* MT&?l MTL@ T ) (MTO&) (MT|J) (SETVAR "SORTENTS" 3) (IF (/= (GETVAR "TREEDEPTH") 5020) (SETVAR "TREEDEPTH" 5020) ) (COMMAND "zoom" "E") (COMMAND "viewres" "Y" "10000") (COMMAND "zoom" ".9x") (PRINC "\n JOIN v1.22 (c) 1995 TCI Software") (MTJ1) (IF MT#1 (PROGN (PRINC (STRCAT "\n" (ITOA (LENGTH MT#1)) " Linetypes are being redefined as Continuous" ) ) (MT$1 T) (MTO1 T) (SETQ MT1@@ T) (COMMAND "regen") ) (SETQ MT1@@ NIL) ) (IF (> (GETVAR "UNDOCTL") 0) (PROGN (COMMAND "UNDO" "C" "N") (SETQ MT0?& T)) (SETQ MT0?& NIL) ) (IF (NOT MTQ) (SETQ MTQ (SSGET "X")) ) (IF MTQ (PROGN (SETQ MT|OQ (GETVAR "viewctr") MT@|Q (GETVAR "viewsize") MT$j& (POLAR MT|OQ 3.927 (* 0.707 MT@|Q)) MTOj& (POLAR MT|OQ 0.7854 (* 0.707 MT@|Q)) MT@#l (CAR MT$j&) MTj#l (CAR MTOj&) MTQ#l (CADR MT$j&) MTl#l (CADR MTOj&) ) (SETQ MT&JJ (SSLENGTH MTQ) MT@%l 0 ) (WHILE (< MT@%l MT&JJ) (SETQ MT@@J NIL MTQ@J NIL MT|1l NIL MT%1l NIL MTl%l T MT1%l T MT|#l () MTQ%l 0 MT1?l NIL MT0%l NIL MT$%l NIL ) (SETQ MT# (SSNAME MTQ MT@%l)) (SETQ MT@%l (1+ MT@%l)) (IF (ENTGET MT#) (PROGN (SETQ MT?jl NIL MT|?l NIL ) (SETQ MT1?l MT# MT?@l MT# ) (SETQ MTJJ (ENTGET MT#)) (SETQ MTJ&J (MT% 0)) (COND ((= MTJ&J "POLYLINE") (IF (= (LOGAND (MT% 70) 121) 0) (MT%#l) ) ) ((= MTJ&J "LINE") (IF (EQUAL (CDDR (MT% 10)) (CDDR (MT% 11))) (PROGN (COMMAND "PEDIT" MT# "Y" "") (SETQ MT# (ENTLAST) MTO?& MT# ) (SETQ MT1?l MT# MT?@l MT# ) (SETQ MTJJ (ENTGET MT#)) (MT%#l) (IF (NOT MT?jl) (COMMAND "EXPLODE" MTO?&) (COMMAND) ) ) ) ) ((= MTJ&J "ARC") (COMMAND "PEDIT" MT# "Y" "") (SETQ MT# (ENTLAST) MTO?& MT# ) (SETQ MT1?l MT# MT?@l MT# ) (SETQ MTJJ (ENTGET MT#)) (MT%#l) (IF (NOT MT?jl) (COMMAND "EXPLODE" MTO?&) (COMMAND) ) ) (T (SETQ MT%?l NIL)) ) (WHILE (AND MT%?l (MT%jl)) (MT%#l)) ) ) (IF (AND MT|#l (> (LENGTH MT|#l) 1) (ENTGET MT?@l) (AND (EQUAL (CDR (ASSOC 0 (ENTGET MT?@l))) "POLYLINE") (EQUAL (LOGAND (CDR (ASSOC 70 (ENTGET MT?@l))) 1) 0) ) ) (PROGN (SETQ MT0j& ()) (MAPCAR (quote (LAMBDA (MTOJ) (IF (NOT (MT?& MTOJ)) (PROGN (IF (AND MT0j& (> (LENGTH MT0j&) 0)) (SETQ MT0j& (APPEND MT0j& (LIST MTOJ))) (SETQ MT0j& (LIST MTOJ)) ) ) ) ) ) MT|#l ) (SETQ MT|#l MT0j&) (SETQ MT#?& NIL) (MT|L) (SETQ MT|?& () MT%?& () MT?j& () ) (SETQ MTjj& (ENTGET (CAR MT|#l))) (SETQ MTjll (ASSOC 8 MTjj&)) (SETQ MT@j& (LIST (LIST (CONS 0 "SEQEND") MTjll))) (SETQ MT|?& (MTQll MTjj&) MTL&@ 1 ) (SETQ MTjj& (LIST (CDR MTjj&))) (MT0Ql MT|?&) (SETQ MTQj& MT$Ql MTlj& MTOQl MT&j& NIL ) (REPEAT (1- (LENGTH MT|#l)) (SETQ MT1j& (ENTGET (NTH MTL&@ MT|#l))) (IF MT1j& (PROGN (SETQ MT%?& (MTQll MT1j&) MTL&@ (1+ MTL&@) ) (MT0Ql MT%?&) (SETQ MT#j& MT$Ql MT?0 MTOQl ) (COND ((EQUAL MTQj& MT#j& 0.0001) (SETQ MT|?& (APPEND (MT1Ql (MT@ll MT%?&)) MT|?&)) ) ((EQUAL MTQj& MT?0 0.0001) (SETQ MT|?& (APPEND (MT1Ql MT%?&) MT|?&)) ) ((EQUAL MTlj& MT#j& 0.0001) (SETQ MT|?& (APPEND (MT1Ql MT|?&) MT%?&)) ) ((EQUAL MTlj& MT?0 0.0001) (SETQ MT|?& (APPEND (MT1Ql MT|?&) (MT@ll MT%?&))) ) (T (SETQ MT&j& T)) ) (MT0Ql MT|?&) (SETQ MTQj& MT$Ql MTlj& MTOQl ) ) (SETQ MTL&@ (1+ MTL&@)) ) ) (SETQ MT|?& (MT|Ql MT|?&)) (SETQ MT?j& (APPEND MTjj& MT|?&)) (SETQ MT?j& (APPEND MT?j& MT@j&)) (SETQ MT&JQ () MT1JQ MT|#l ) (MAPCAR (quote (LAMBDA (MTOJ) (SETQ MT1JQ (CDR MT1JQ)) (IF (NOT (MEMBER MTOJ MT1JQ)) (PROGN (IF (AND MT&JQ (> (LENGTH MT&JQ) 0)) (SETQ MT&JQ (APPEND MT&JQ (LIST MTOJ))) (SETQ MT&JQ (LIST MTOJ)) ) ) ) ) ) MT|#l ) (SETQ MT|#l MT&JQ) (IF (NOT MT&j&) (PROGN (MAPCAR (quote (LAMBDA (MTOJ) (ENTDEL MTOJ))) MT|#l) (MAPCAR (quote (LAMBDA (MTOJ) (ENTMAKE MTOJ))) MT?j&) (IF (AND MT#%l (NOT MTl?&)) (COMMAND "PEDIT" "L" "C" "") ) (IF MTl?& (MT%@l) ) (IF (MT?& MT1?l) (SETQ MT1?l (ENTLAST)) ) ) ) (MT%L) ) ) ) ) ) (SETQ MT1?l NIL MT#?l NIL MT0?l NIL MT$?l NIL MTO?l NIL MT|?l NIL MT%?l NIL MT?jl NIL MT&JJ NIL MT@%l NIL ) (SETVAR "HIGHLIGHT" 1) (IF MT0?& (COMMAND "UNDO" "") ) (IF (AND MT1@@ MT#1) (PROGN (MTO1 NIL) (COMMAND "regen")) ) (IF (FINDFILE "CONTIN.LIN") (COMMAND "shell" "DEL CONTIN.LIN") ) (IF (FINDFILE "ORIG.LIN") (COMMAND "shell" "DEL ORIG.LIN") ) (MTL) (PRINC) ) (PRINC "Loaded") (PRINC)