;THIS FUNCTION ADDS A NORTHING AND EASTING LEADER LABEL TO YOUR ;DRAWING AT AND FOR A SPECIFIED POINT (defun c:NEA () (sETVAR "CMDECHO" 0) ;********ERROR HANDLER********************** (defun *Error* (msg) (if (/= msg "Function cancelled") (princ (strcat "\nError: " msg)) ) (terpri) (setq *error* olderr) (princ) ) ;*********************************************** (graphscr) (SETQ OSM (GETVAR "OSMODE")) ;get current osnap mode and save to OSM variable (SETVAR "OSMODE" 1) ;set osnap to endpoint (GRTEXT -1 "Nea.lsp - KWM '96") (setq a " N " b " E " pnt1 (getpoint "\nNorthing & Easting of which point?") ) (setq east (rtos (car pnt1) 2 2) north (rtos (cadr pnt1) 2 2) coord (strcat a north b east) ) (setq pnt2 pnt1)(terpri) (terpri) (setq y (entget (car(entsel "Select first line for angle point data: ")))) (setq p1 (cdr (assoc 10 y))) (setq p2 (cdr (assoc 11 y))) (setq angl1 (angle p1 p2)) (terpri) (setq z (entget (car(entsel "Select second line for angle point data: ")))) (setq p3 (cdr (assoc 10 z))) (setq p4 (cdr (assoc 11 z))) (setq angl2 (angle p3 p4)) (terpri) (SETVAR "OSMODE" 0) ;set osnap mode to none (setq angl3 (- angl1 angl2)) (setq angl3 (abs angl3)) (setq angg1 (angtos angl3 1 4)) (setq angg angl3) (if (= pi angl3) (setq angla (* 0.5 pi)) (if (= (* 0.5 pi) angl3) (setq angla (* 0.5 pi)) (if (= (* 1.5 pi) angl3) (setq angla (* 0.5 pi)) (if (= (* 2 pi) angl3) (setq angla (* 0.5 pi)) (if (>= angl3 (* 1.75 pi)) (setq angla (- (* 2 pi) angl3)) (if (> angl3 (* 1.5 pi)) (setq angla (- angl3 (* 1.5 PI))) (if (>= angl3 (* 1.25 pi)) (setq angla (- (* 1.5 pi) angl3)) (if (> angl3 pi) (setq angla (- angl3 pi)) (if (>= angl3 (* pi 0.75))(setq angla (- pi angl3)) (if (> angl3 (* 0.5 pi))(setq angla (- angl3 (* 0.5 pi))) (setq angla angl3) ))))))))));end ifs (if (and (>= angla (* 0.22222 pi)) (<= angla (* 0.2777777778 pi))) (Alert " Angle is close to 45 deg. boundary may be off by as much as 5 deg. Please Verify accuracy")) (if (and (>= angla 0.0) (<= angla (* 0.02777777778 pi))) (Alert " Angle is close to 90 deg. boundary may be off by as much as 90 deg. Please Verify accuracy")) (setq angl3 (* angla (/ 180 pi))) (setq angl3 (abs angl3)) (setq deg (fix angl3)) (setq degfloat (float deg)) (setq decimal (- angl3 degfloat)) (setq minute (* decimal 60.0)) (setq min (fix minute)) (setq minfloat (float min)) (setq secdec (- minute minfloat)) (setq second (* secdec 60)) (setq sec (fix second)) (setq secfloat (float sec)) (setq sectest (- second secfloat)) (if (>= sectest 0.50)(setq sec (1+ sec))) (if (= sec 60) (progn (setq sec 0) (setq min (1+ min)) )) (if (= min 60) (progn (setq min 0) (setq deg (1+ deg)) )) (if (< deg 10)(setq deg (strcat "0" (rtos deg 2 0))) (setq deg (rtos deg 2 0))) (if (< min 10)(setq min (strcat "0" (rtos min 2 0))) (setq min (rtos min 2 0))) (if (< sec 10)(setq sec (strcat "0" (rtos sec 2 0))) (setq sec (rtos sec 2 0))) (setq tx (strcat "> POINT=" deg "%%d" min (chr 39) sec (chr 34))) (terpri) (setq pnt3 (getpoint "End of Leader: "))(terpri) (setq ang1 (angle pnt1 pnt2)) (setq text (getvar "TEXTSIZE")) (setq linesize (* text 12.0)) (if (or (<= ang1 (/ pi 2.0))(>= ang1 (* pi 1.5))) (progn (setq ang2 0.0) (setq pnt4 (polar pnt3 ang2 linesize)) (setq pnt7 (polar pnt3 0.0 text)) )) (if (and (<= ang1 (* pi 1.5))(>= ang1 (/ pi 2.0))) (progn (setq ang2 pi) (setq pnt4 (polar pnt3 ang2 linesize)) (setq pnt7 (polar pnt4 0.0 text)) )) (setq pnt5 (polar pnt7 (* pi 1.5)(* text 1.33))) (setq pnt6 (polar pnt7 (* pi 1.5)(* text 3))) (setq pnt8 (polar pnt7 (/ pi 2)(+(/ text 1) text))) (setq pnt9 (polar pnt7 (/ pi 2)(/ text 3))) (setq pnt11 (polar pnt7 (* pi 0.42929784)(* 2.0395833 TEXT))) (setq pnt12 (polar pnt7 (* pi 0.4645)(* 2.445833 text))) (setq pnt13 (polar pnt7 (* 0.44952932 pi)(* 2.9 text))) (setq station (getstring "\nStation (include '+'): ")) (terpri) (command "LINE" pnt2 pnt3 pnt4 "") (command "TEXT" pnt5 0.0 (strcat "N" (chr 32) north )) (command "TEXT" pnt6 0.0 (strcat "E" (chr 32) east )) (command "TEXT" pnt8 0.0 tx) (command "TEXT" pnt9 0.0 (strcat "STA " station)) (command "arc" pnt11 pnt12 pnt13) (SETVAR "OSMODE" OSM) ;set osnap back to original setting ie. OSM variable setting (terpri) ) |