(DEFUN c:travmode (/ bm osm num quad dms dist quad1 quad2 brg1 brg2 brg3 brgstr brg ang ) (SETVAR "cmdecho" 0) (SETQ num nil quad "NE" dms nil dist nil quad1 nil quad2 nil brg1 nil brg2 nil brg3 nil brgstr nil brg nil ang (/ PI 2.0) ) (SETQ bm (GETVAR "blipmode")) (SETVAR "blipmode" 1) (PRINC ".") (PRINC "\nTRAVMODE") (SETQ pt1 (GETPOINT "\nPick point of beginning: ")) (SETVAR "blipmode" bm) (SETVAR "lastpoint" pt1) (IF (/= pt1 nil) (SETQ num "2") ) ;; BEGIN LOOP (WHILE num (SETQ num nil) (SETQ pt1 (GETVAR "lastpoint")) (TERPRI) (PRINC "\n (7)NW (9)NE (4)90 Left (8)Repeat Last Bearing" ) (PRINC "\n (1)SW (3)SE (6)90 Right (0)Draw Node") (SETQ num (GETSTRING "\nChoose a number: ")) (IF (= num "") (SETQ num nil) ) (IF (OR (= num "9") (= num "3") (= num "1") (= num "7") (= num "4") (= num "6") (= num "8") ) (PROGN (IF (OR (= num "4") (= num "6") ) (PROGN (COND ((AND (= num "4") (= quad "NE")) (SETQ quad "NW")) ((AND (= num "6") (= quad "NE")) (SETQ quad "SE")) ((AND (= num "4") (= quad "NW")) (SETQ quad "SW")) ((AND (= num "6") (= quad "NW")) (SETQ quad "NE")) ((AND (= num "4") (= quad "SE")) (SETQ quad "NE")) ((AND (= num "6") (= quad "SE")) (SETQ quad "SW")) ((AND (= num "4") (= quad "SW")) (SETQ quad "SE")) ((AND (= num "6") (= quad "SW")) (SETQ quad "NW")) ) ;cond (IF (= num "6") (SETQ ang (- ang (/ PI 2.0))) ) (IF (= num "4") (SETQ ang (+ ang (/ PI 2.0))) ) ) ;progn ) ;if (IF (OR (= num "9") (= num "3") (= num "1") (= num "7") ) (PROGN (COND ((= num "9") (SETQ quad "NE")) ((= num "3") (SETQ quad "SE")) ((= num "1") (SETQ quad "SW")) ((= num "7") (SETQ quad "NW")) ) ;cond (PRINC "\nBearing format : DD.MMSS (must include leading zeros.)" ) (SETQ dms (GETSTRING (STRCAT "\n Bearing " quad " : "))) (IF (/= dms "") (PROGN (SETQ quad1 (SUBSTR quad 1 1) quad2 (SUBSTR quad 2) brg1 (SUBSTR dms 1 2) brg2 (SUBSTR dms 4 2) brg3 (SUBSTR dms 6 2) brgstr (STRCAT quad1 brg1 "d" brg2 "'" brg3 (CHR 34) quad2) brg (+ (ATOF brg1) (/ (ATOF brg2) 60.0) (/ (ATOF brg3) 3600.0) ) ) (IF (= quad "NE") (SETQ ang (- (/ PI 2.0) (* PI (/ brg 180.0)))) ) (IF (= quad "NW") (SETQ ang (+ (/ PI 2.0) (* PI (/ brg 180.0)))) ) (IF (= quad "SW") (SETQ ang (- (* 1.5 PI) (* PI (/ brg 180.0)))) ) (IF (= quad "SE") (SETQ ang (+ (* 1.5 PI) (* PI (/ brg 180.0)))) ) ) ;progn ) ;if ) ;progn ) ;if (IF (AND (/= num nil) (/= dms "")) (PROGN (SETQ dist (GETDIST " Distance : ")) (IF (AND (/= dist 0.0) (/= dist nil)) (PROGN (SETQ pt2 (POLAR pt1 ang dist)) (SETQ osm (GETVAR "osmode")) (SETVAR "osmode" 0) (COMMAND "line" pt1 pt2 "") (SETVAR "osmode" osm) ) ;progn ) ;if ) ;progn ) ;if ) ;progn ) ;if (IF (= num "0") (PROGN (SETQ pt2 pt1) (COMMAND "point" pt2) ) ;progn ) ;if ) ;while (PRINC) ) ;END