You can not directly use command in action_tile function, need to use (done_dialog number) in action_tile and catch the number after start_dialog, call command accordingly. this will need to turn off dialog interface and run command, then show the dialog again.
As for your codes, there is no need to vanish_dialog, call_command, re-appear_dialog procedure, can simply close the dialog and call command.
optimized codes as following, hope this give you a clue.
(defun c:myimgscale
(/ *error* dch dcl des
) )
)
)
)
)
) ; end defun
) ; end setq
) ; end not
(princ "\nUnable to open DCL for writing.") )
'(
"ed : edit_box { alignment = left; width = 20; edit_width = 10; fixed_width = true;}"
""
"txt2 : dialog { spacer; key = \"dcl\";"
" : boxed_radio_column { key=\042key\042; label = \"Τύπος Κειμένου\"; height = 1.0;"
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button01\"; label = \"1. --> 1:500\";"
" }" ; radio_button
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button02\"; label = \"2. --> 1:2000\";"
" }" ; radio_button
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button03\"; label = \"3. --> 1:2500\";"
" }" ; radio_button
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button04\"; label = \"4. --> 1:4000\";"
" }" ; radio_button
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button05\"; label = \"5. --> 1:5000\";"
" }" ; radio_button
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button06\"; label = \"6. --> 1:10000\";"
" }" ; radio_button
" : radio_button { height = 1.0; width = 20; is_tab_stop = true;"
" key = \"radio_button07\"; label = \"7. --> 1:50000\";"
" }" ; radio_button
" }" ;end boxed_column
; " : row { width = 20;"
; " : button { key = \"OK\"; label = \"OK\"; is_default = true;"
; " is_cancel = true; fixed_width = true; width = 10; }"
; " }" ; end row
" ok_only;"
" }" ; end dialog
) ;end list
) ; end foreach
) ; end setq
(<= dch 0)
)
(princ "\nUnable to load DCL file.") )
(princ "\nUnable to display 'txt2' dialog.") )
(t
;|
(action_tile
"radio_button01"
"(command \"_scale\" 2) (setq sngReturn 1))"
)
(action_tile
"radio_button02"
"((lambda (/ ent) (while (not (setq ent (car (entsel))))) (command \"_scale\" ent \"\" (cdr (assoc 11 (entget ent))) 0.5)) (setq sngReturn 2))"
)
(action_tile
"radio_button03"
"((lambda (/ ent) (while (not (setq ent (car (entsel))))) (command \"_scale\" ent \"\" (cdr (assoc 11 (entget ent))) 0.4)) (setq sngReturn 3))"
)
(action_tile
"radio_button04"
"((lambda (/ ent) (while (not (setq ent (car (entsel))))) (command \"_scale\" ent \"\" (cdr (assoc 11 (entget ent))) 0.25)) (setq sngReturn 4))"
)
(action_tile
"radio_button05"
"((lambda (/ ent) (while (not (setq ent (car (entsel))))) (command \"_scale\" ent \"\" (cdr (assoc 11 (entget ent))) 0.20)) (setq sngReturn 5))"
)
(action_tile
"radio_button06"
"((lambda (/ ent) (while (not (setq ent (car (entsel))))) (command \"_scale\" ent \"\" (cdr (assoc 11 (entget ent))) 0.10)) (setq sngReturn 6))"
)
(action_tile
"radio_button07"
"((lambda (/ ent) (while (not (setq ent (car (entsel))))) (command \"_scale\" ent \"\" (cdr (assoc 11 (entget ent))) 0.02)) (setq sngReturn 7))"
)
|;
(if (setq sngReturn
(cond ((eq sngReturn
"radio_button01") 2.
) ((eq sngReturn
"radio_button02") 0.50) ((eq sngReturn
"radio_button03") 0.40) ((eq sngReturn
"radio_button04") 0.25) ((eq sngReturn
"radio_button05") 0.20) ((eq sngReturn
"radio_button06") 0.10) ((eq sngReturn
"radio_button07") 0.02) )
)
ent
""
sngReturn
)
)
)
)
) ; end cond
(*error* nil)
) ; end defun