I'll try to help (likely better help on the way so bear with me). Caveat being I'm at 2 beers after a long day.
atof: As I've read your code atof isn't going to give you the result you desire. For example, plug (atof "6\" = 1'-0\"") into your console (it returns 6.0). Since you have a fixed number of scales you could get away with using 'cond' here. I see that your code is very similar to Afralisp.net's (amazing site!! I wish that guy also had tutorials on doing my taxes). I think he gets away with his code due to the leading integer value of each beam size being unique (not sure if I'm right here I'd have to look more).
A quick tip on dialog boxes: Although it's not necessary, and you added the 'progn' to your action_tile (very smart!!), pulling as much code as possible into a sub routine cures a lot of headaches (taking advantage of the (setq userClick T) part of the code).
So... finally, while typing I found the source of your error: You are trying to input your 'NAMES' list into the variable setting for dimscale (instead of SIZ?). Hence the nature of the error message. Wish I caught that 2 minutes ago ;-). I'll leave the rest of my post in case it's helpful.
If you want a radio buttons versions this only needs like 3 lines of code to work as its a Library function makes DCL on the fly from you supplied list.
There are examples in code.
(if (not AH:Butts)(load "Multi Radio buttons.lsp"))
(if (not but)(setq but 1))
(setq ans (ah:butts but "h" '("Choose scale " "1:1" "1:4" "1:8" "1:10"))) ; add more scales as required h is horizontal use V for vertical
ans holds same as list or you can use variable BUT which is what button number was pressed.
(ah:butts but "h" '("Choose scale " "1:1" "1:4" "1:8" "1:10"))
See image
(if (not AH:Butts)(load "Multi Radio buttons.lsp"))
(if (not but)(setq but 1))
(setq NAMES (list "Please choose scale" "1" "6 = 1'-0" "3 = 1'-0" "1-1/2 = 1'-0" "1 = 1'-0" "3/4 = 1'-0" "1/2 = 1'-0" "1/4 = 1'-0"))
(ah:butts but "v" names )
(Alert (strcat "button selected was " (rtos but 2 0)))
change this to get double spacing
;(if (or (= numch nil) (< numch 8))
(write-line "spacer_1 ;" fo)
;)
Do you know which line of code the error occurs at? Sometimes, if you're (VERY) lucky, the error doesn't occur when VLIDE is closed. For example, you might have the DCL file open in the editor.
Code is coming along nicely!! Great work!