@alex_mcturk hi,
when dealing with dcl, the main program should be a big while loop where you open the dialog, set your tiles default value than comes all (action_tile) calls than (start_dialog) call then a (cond) where you test what_next according (done_dialog). the while loop is continue as long as what_next is bigger than 1.
here is a dcl skeleton program how it should be done (untested)
this ensures that after you specify the point, the dialog is reopen and the tiles value will be set again 😀
enjoy
Moshe
(defun c:dclSkeleton (/ dclfname dcl_id what_next)
(if (and
(setq dclfname (findfile "SelectPoint.dcl")) ; get dcl file from supprt files search path
(setq dcl_id (load_dialog dclfname)) ; get dcl id
)
(progn
(initial) ; prepare variables before dialog open
(setq what_next 2)
(While (> what_next 1)
(if (not (new_dialog "SelectPointDialog" dcl_id "" '(-1 -1))) ; open dialog
(exit)
)
; set tiles here, list, popup_list edit_box etc...
(set_tiles_values)
(action_tile "select_point" "(done_dialog 2)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq what_next (start_dialog)) ; start dialog
(cond
((= what_next 2)
(setq pt (getpoint "\nSpecify point: "))
); case
((= what_next 1) ; OK
; do your job
; ......
; ......
; do clean up + save variables + exit
); case
((= what_next 0) ; Cancel
; do your job
; ......
; ......
; do clean up without saving variables + exit
); case
); cond
); while
(unload_dialog dcl_id)
); progn
); if
(princ)
); c:dclSkeleton