Don't worry about the drawing format, you weren't to know.
I've decreased the sensitivity passed to the innermost point function by a factor of 10. It now seems to work without erroring. The problem was inside this function, and the decrease seems to have solved the problem.
Be aware you have a lot of irregular shaped polylines that could also cause problems because of the method used to find the point (offsets). It might also be wise to not process the whole set at once. This set was nearly 3000 polylines. Decreasing the sensitivity further may speed the process up but at a cost of a less accurate point
This is where to change it. The red figure was initially 0.001 and is now working properly at 0.01
i_pt (gc:MostInnerPoint l_obj 0.01)
When you said block I didn't envision a block with a single attribute. The current routine is inserting a new block so the attribute displays the default attribute value. Is the routine supposed to copy the original block as opposed to inserting a new one? This should be easy to to impliment if so.
Attached is the updated lisp.
I am not one of the robots you're looking for