I haven't tested this but just off the top of my head: If you have a block inserted onto a grid, seems like the coordinate of that block could be used to map which cell in the grid the block is inserted in. Take the X coordinate from the block insertion point and subtract that value from the X coordinate of vertical line 'A'. Call the result DeltaX. Take the Y coordinate from the block insertion point and subtract that value from the Y coordinate of horizontal line '01'. Call that result DeltaY. Then it's just a matter of testing the DeltaX and DeltaY values against a numerical range to determine grid location.
For example, to find the main column letter:
(setq ColumnWidth 1838.0167)
(cond
( (<= 0 DeltaX ColumnWidth) "A")
( (<= ColumWidth DeltaX (* 2 ColumnWidth)) "B")
( (<= (* 2 ColumnWidth) DeltaX (* 3 ColumnWidth)) "C")
...
)
Repeat that idea for DeltaY to find the main row number
Then once you get the main column and row numbers, repeat the entire process getting a new DeltaX and a new DeltaY relative from the intersection of the main column and row numbers. Make sense?
My question, can lisp pull the numbers from both the Map Grid and smaller squares by making one simple pick with in the smaller square. The format of the return will be "floor-mapgrid-smallersquare" For example 01-E06-458 would be location number.