Message 1 of 6
Grid Northing & Easting for layout
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have been messing with this code and got it to where it is almosgt perfect for my needs. One thing I can't figure out is how to have the Northing & Easting to be represented with a comma. For example: "N123,456 E1,234,567". Any assistance would be greatly appreciated.
(defun c:ADDGRIDTICKS ()
(setvar "CMDECHO" 0)
(command "-osnap" "off")
(setq VP1 nil
interval 0
scale 0
)
(while (not (and (= (cdr(assoc 70 VP1)) 1 ) (= (cdr(assoc 0 VP1)) "LWPOLYLINE" )) )
(setq VP1 (entget(car (entsel "\nSelect Rectangle: "))))
)
(while (not (or (= interval 10) (= interval 50) (= interval 100)))
(setq interval (getint "\nEnter Interval: [10/50/100] "))
)
(while (not (or (= scale 50) (= scale 100) (= scale 200) (= scale 500) (= scale 1000) (= scale 1250)))
(setq scale (getint "\nEnter Scale: [50/100/200/500/1000/1250] "))
)
(setq txtH (* 0.04 scale))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun xRound (x)
(setq A (atoi(substr
(rtos x 2 4)
(- (vl-string-search "." (rtos x 2 4)) 2)
2))
x1 (substr
(rtos x 2 4) 1
(- (vl-string-search "." (rtos x 2 4)) 3)
)
x2 (cond
((= interval 10)
(cond
((< A 5)(setq x2 "00"))
((and (>= A 5) (< A 15))(setq x2 "100"))
((and (>= A 15) (< A 25))(setq x2 "200"))
((and (>= A 25) (< A 35))(setq x2 "300"))
((and (>= A 35) (< A 45))(setq x2 "400"))
((and (>= A 45) (< A 55))(setq x2 "500"))
((and (>= A 55) (< A 65))(setq x2 "600"))
((and (>= A 65) (< A 75))(setq x2 "700"))
((and (>= A 75) (< A 85))(setq x2 "800"))
((and (>= A 85) (< A 95))(setq x2 "900"))
((>= A 95)(setq x2 "100"))
))
((= interval 50)
(cond
((< A 25)(setq x2 "00"))
((and (>= A 25) (< A 75))(setq x2 "50"))
((>= A 75)(setq x2 "100"))
))
((= interval 100)
(cond
((< A 50)(setq x2 "00"))
((>= A 50)(setq x2 "100"))
))
)
)
(if (= x2 "100")
(setq x1 (itoa (+ (atoi x1) 1))
x2 "00")
)
(setq G1x (strcat x1 x2))
(while (<= (atoi G1x) x)
(cond
( (= interval 10) (setq G1x (itoa (+ (atoi G1x) 10))) )
( (= interval 50) (setq G1x (itoa (+ (atoi G1x) 50))) )
( (= interval 100) (setq G1x (itoa (+ (atoi G1x) 100))) )
)
)
)
(defun FindN (A B)
(rtos (+
(*
(/
(-(cadr B)(cadr A))
(-(car B)(car A))
)
(- (atoi Ex) (car A)))
(cadr A))
2 4)
)
(defun FindN2 (A B)
(rtos (- (cadr A)
(*
(/
(-(cadr A)(cadr B))
(-(car B)(car A))
)
(- (atoi Ex)(car A)))
)
2 4)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Get Rec Points ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq RC ())
(foreach n VP1
(cond
((= (car n) 10) (setq RC (cons (cdr n) RC)) )
)
)
(setq RCx (list (car (nth 0 RC))(car (nth 1 RC))(car (nth 2 RC))(car (nth 3 RC))) )
(cond
( (and (<= (nth 0 RCx)(nth 1 RCx)) (<= (nth 0 RCx)(nth 2 RCx))(<= (nth 0 RCx)(nth 3 RCx)))
(setq pt1 (nth 0 RC)) )
( (and (<= (nth 1 RCx)(nth 0 RCx)) (<= (nth 1 RCx)(nth 2 RCx))(<= (nth 1 RCx)(nth 3 RCx)))
(setq pt1 (nth 1 RC)) )
( (and (<= (nth 2 RCx)(nth 1 RCx)) (<= (nth 2 RCx)(nth 0 RCx))(<= (nth 2 RCx)(nth 3 RCx)))
(setq pt1 (nth 2 RC)) )
( (and (<= (nth 3 RCx)(nth 1 RCx)) (<= (nth 3 RCx)(nth 2 RCx))(<= (nth 3 RCx)(nth 0 RCx)))
(setq pt1 (nth 3 RC)) )
)
(foreach n RC
(cond
((and (= (car n) (car pt1))(> (cadr n) (cadr pt1)))
(setq pt1 n))
)
)
(setq RC2 ())
(foreach n RC
(cond
((not(= n pt1))(setq RC2(cons n RC2)) )
)
)
(cond
( (and (> (cadr(nth 0 RC2))(cadr(nth 1 RC2))) (> (cadr(nth 0 RC2))(cadr(nth 2 RC2))) )
(setq pt2 (nth 0 RC2)) )
( (and (> (cadr(nth 1 RC2))(cadr(nth 0 RC2))) (> (cadr(nth 1 RC2))(cadr(nth 2 RC2))) )
(setq pt2 (nth 1 RC2)) )
( (and (> (cadr(nth 2 RC2))(cadr(nth 1 RC2))) (> (cadr(nth 2 RC2))(cadr(nth 0 RC2))) )
(setq pt2 (nth 2 RC2)) )
)
(setq RC3 ())
(foreach n RC2
(cond
((not(= n pt2))(setq RC3(cons n RC3)) )
)
)
(if
(> (caar RC3)(caar(cdr RC3)))
(setq pt3 (car RC3)
pt4 (nth 1 RC3))
(setq pt3 (nth 1 RC3)
pt4 (car RC3))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Eastings and Grid Ticks ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "-LAYER" "M" "Survey Grid" "C" "5" "" "")
(command "-STYLE" "Survey Grid" "arial" "0.0" "1.0" "0.0" "N" "N" "N")
(setq Ex (xRound (car pt1)))
(while (< (atof Ex) (car pt2))
(setq
Ey (FindN pt1 pt2)
Ey2 (if (> (atoi Ex) (car pt4))
(FindN pt4 pt3)
(FindN2 pt1 pt4)
)
StPt (strcat Ex "," Ey)
EndPt (strcat Ex "," Ey2)
)
(command "LINE" StPt (strcat Ex "," (rtos (-(atof Ey) (* scale 0.4)) 2 4)) "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 10 gline))) 2 4) "," (rtos (caddr (assoc 10 gline)) 2 4))
txt2 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 11 gline))) 2 4) "," (rtos (caddr (assoc 11 gline)) 2 4))
txt (strcat "E" (rtos (cadr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt1 "S" "Survey Grid" "H" txtH "R" txt2 "J" "BR" txt2 txt "")
(command "LINE" (strcat Ex "," (rtos (+(atof Ey2) (* scale 0.4)) 2 4)) EndPt "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 10 gline))) 2 4) "," (rtos (caddr (assoc 10 gline)) 2 4))
txt2 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 11 gline))) 2 4) "," (rtos (caddr (assoc 11 gline)) 2 4))
txt (strcat "E" (rtos (cadr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt1 "S" "Survey Grid" "H" txtH "R" txt2 "J" "BL" txt2 txt "")
(setq GTy (atoi (xRound (atof Ey2)) ))
(while (< GTy (atof Ey))
(setq
a (* scale 0.075)
Lx1 (list (- (atof Ex) a) GTy)
Lx2 (list (+ (atof Ex) a) GTy)
Ly1 (list (atof Ex) (- GTy a))
Ly2 (list (atof Ex) (+ GTy a))
)
(command "LINE" Lx1 Lx2 ""
"LINE" Ly1 Ly2 "")
(setq GTy (+ GTy interval))
)
(setq Ex (rtos (+ (atof Ex) interval) 2 4))
)
(if (not (= (cadr pt1) (cadr pt2)))
(progn
(setq Ex (xRound (car pt2)))
(while (< (atof Ex) (car pt3))
(setq
Ey (FindN2 pt2 pt3)
Ey2 (if (> (atoi Ex) (car pt4))
(FindN pt4 pt3)
(FindN2 pt1 pt4)
)
StPt (strcat Ex "," Ey)
EndPt (strcat Ex "," Ey2)
)
(command "LINE" StPt (strcat Ex "," (rtos (-(atof Ey) (* scale 0.4)) 2 4)) "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 10 gline))) 2 4) "," (rtos (caddr (assoc 10 gline)) 2 4))
txt2 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 11 gline))) 2 4) "," (rtos (caddr (assoc 11 gline)) 2 4))
txt (strcat "E" (rtos (cadr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt1 "S" "Survey Grid" "H" txtH "R" txt2 "J" "BL" txt2 txt "")
(command "LINE" (strcat Ex "," (rtos (+(atof Ey2) (* scale 0.4)) 2 4)) EndPt "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 10 gline))) 2 4) "," (rtos (caddr (assoc 10 gline)) 2 4))
txt2 (strcat (rtos (+ (* 0.0001 scale) (cadr (assoc 11 gline))) 2 4) "," (rtos (caddr (assoc 11 gline)) 2 4))
txt (strcat "E" (rtos (cadr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt1 "S" "Survey Grid" "H" txtH "R" txt2 "J" "BR" txt2 txt "")
(setq GTy (atoi (xRound (atof Ey2)) ))
(while (< GTy (atof Ey))
(setq
a (* scale 0.005)
Lx1 (list (- (atof Ex) a) GTy)
Lx2 (list (+ (atof Ex) a) GTy)
Ly1 (list (atof Ex) (- GTy a))
Ly2 (list (atof Ex) (+ GTy a))
)
(command "LINE" Lx1 Lx2 ""
"LINE" Ly1 Ly2 "")
(setq GTy (+ GTy interval))
)
(setq Ex (rtos (+ (atof Ex) interval) 2 4))
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Northings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun FindE (A B)
(rtos (+
(*
(/
(-(car B)(car A))
(-(cadr B)(cadr A))
)
(- (atoi Ex) (cadr A)))
(car A))
2 4)
)
(defun FindE2 (A B)
(rtos (- (car A)
(*
(/
(-(car A)(car B))
(-(cadr B)(cadr A))
)
(- (atoi Ex)(car A)))
)
2 4)
)
(setq Ex (xRound (cadr pt2)))
(while (> (atof Ex) (cadr pt2))
(setq Ex (rtos (- (atof Ex) interval) 2 4))
)
(while (> (atof Ex) (cadr pt3))
(setq
Ey (FindE pt2 pt3)
Ey2 (if (> (atoi Ex) (cadr pt1))
(FindE pt2 pt1)
(FindE2 pt1 pt4)
)
StPt (strcat Ey "," Ex)
EndPt (strcat Ey2 "," Ex)
)
(command "LINE" StPt (strcat (rtos (-(atof Ey) (* scale 0.4)) 2 4) "," Ex) "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (cadr (assoc 10 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 10 gline))) 2 4))
txt2 (strcat (rtos (cadr (assoc 11 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 11 gline))) 2 4))
txt (strcat "N" (rtos (caddr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt2 "S" "Survey Grid" "H" txtH "R" txt1 "J" "BL" txt1 txt "")
(command "LINE" EndPt (strcat (rtos (+(atof Ey2) (* scale 0.4)) 2 4) "," Ex) "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (cadr (assoc 10 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 10 gline))) 2 4))
txt2 (strcat (rtos (cadr (assoc 11 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 11 gline))) 2 4))
txt (strcat "N" (rtos (caddr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt1 "S" "Survey Grid" "H" txtH "R" txt2 "J" "BR" txt2 txt "")
(setq Ex (rtos (- (atof Ex) interval) 2 4))
)
(if (not (= (cadr pt1) (cadr pt2)))
(progn
(setq Ex (xRound (cadr pt3)))
(while (> (atof Ex) (cadr pt3))
(setq Ex (rtos (- (atof Ex) interval) 2 4))
)
(while (> (atof Ex) (cadr pt4))
(setq
Ey (FindE pt3 pt4)
Ey2 (if (> (atoi Ex) (cadr pt1))
(FindE2 pt2 pt1)
(FindE pt1 pt4)
)
StPt (strcat Ey "," Ex)
EndPt (strcat Ey2 "," Ex)
)
(command "LINE" StPt (strcat (rtos (-(atof Ey) (* scale 0.4)) 2 4) "," Ex) "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (cadr (assoc 10 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 10 gline))) 2 4))
txt2 (strcat (rtos (cadr (assoc 11 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 11 gline))) 2 4))
txt (strcat "N" (rtos (caddr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt2 "S" "Survey Grid" "H" txtH "R" txt1 "J" "BL" txt1 txt "")
(command "LINE" EndPt (strcat (rtos (+(atof Ey2) (* scale 0.4)) 2 4) "," Ex) "")
(setq gline (entget (ssname (ssget "L") 0))
txt1 (strcat (rtos (cadr (assoc 10 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 10 gline))) 2 4))
txt2 (strcat (rtos (cadr (assoc 11 gline)) 2 4) "," (rtos (+ (* 0.0001 scale) (caddr (assoc 11 gline))) 2 4))
txt (strcat "N" (rtos (caddr(assoc 10 gline)) 2 0) )
)
(command "-mtext" txt1 "S" "Survey Grid" "H" txtH "R" txt2 "J" "BR" txt2 txt "")
(setq Ex (rtos (- (atof Ex) interval) 2 4))
)
)
)
(command "-osnap" "End,Mid,Cen,Int,Perp,Near")
(setvar "CMDECHO" 1)
(princ)
)