hi, try this function
- [color="darkgreen"];|function - [b]MAP-SHEET[/b]argument - Type ------------------------ n - scale, number mX - max X, number mY - max Y, number $ - suffix, string ------------------------- Return value: A string ---------------------------example : (MAP-SHEET 10000 30000 20000 "105-9")n, 10000 = scale 1:10000 mX, 30000 = maximum X range of sheet mY, 20000 = maximum Y range of sheet $, "105-9" = suffix of upper level sheetreturns: suffix of newly selected sheet|;[/color](defun [color="blue"][b]MAP-SHEET[/b][/color] (n mX mY $ / ls % d l p p1 p2 k)[color="green"];hanhphuc 12.12.2016[/color] (if (setq ls '((250000 150000 100000) (100000 60000 40000) (50000 30000 20000) (25000 15000 10000) (10000 6000 4000) (5000 3000 2000) (2000 1200 800) (1000 600 400) (500 300 200) ) l (assoc n ls) p1 (getpoint (strcat "\nPick upper left corner of sheet - [M 1:" (itoa n) "] ")) ) (progn (princ "\nHover the mouse over & pick a box.. \n") (while (and p1 (setq p (grread t 1 0)) (= 5 (car p)) (setq p2 (cadr p))) (princ (strcat "\rSHEET " (cond (%)(""))" ")) (setq d (mapcar '- p2 p1) ls (reverse (mapcar '+ '(1 -101) (mapcar ''((x y) (fix (/ x y))) d (cdr l)))) k (mapcar '+ '(1 -1) (mapcar ''((x y) (fix (/ x y))) d (cdr l))) k (- (* (1+ (cadr k)) (/ mY (caddr l))) (car k)) % (if ;(vl-some ''((x) (or (minusp x) (> (abs x) 600000))) (list (car d) (- (cadr d)))); for Square only (or (> (abs (car d)) mX) (> (abs (cadr d)) mY) (minusp (car d)) (minusp (- (cadr d)))) "\rOut of range!! " (cond ($ (apply 'strcat (append (mapcar 'itoa (list (/ (car l) 1000) k)) (list "-" $)))) ((vl-string-right-trim "-" (apply 'strcat (mapcar ''((x) (strcat (itoa x) "-")) (cons (/ (car l) 1000) (mapcar 'abs ls))) ) ) ) ) ) ) ) ) ) (if (and % (/= % "\rOut of range!! ")) (substr % (+ 2 (vl-string-search "-" %))) "" ) )
Example call
[code] [color="red"]([color="blue"]MAP-SHEET [color="darkgreen"]10000 30000 20000 [color="magenta"]"105-9"[color="red"])Pick upper left corner of sheet - [M 1:10000]Hover the mouse over & pick a box..SHEET 10-7-105-9 [color="red"]; |