Тема: Временный выход из диалогового окна.
Проблема заключается в следующем при временном выходе из диалогового окна сбрасываются значения.
Причем edit_box сохраняет значения, а вот popup_list значения сбрасывает.
Вот коды
DCL
// DEM proba: dialog {label="Сетка"; :popup_list {label="Тип сетки";key="b1";value="0";list="Тип1 \nТип2 \nТип3 \nТип4";edit_width=6;} :spacer{height=1;} :row {label="Вертикальные стержни"; :popup_list {label="Диаметр V";key="d1";list="\n6 \n8 \n10 \n12 \n14 \n16 \n18 \n20 \n22 \n25 \n28 \n32 \n36 \n40";edit_width=4;} :edit_box{label="LD1:";value="0";key="LD1";} :button{label="Длина V<";key="mousep2";fixed_width=true; action="(done_dialog 4)";} }//end of row {label=" ";} :row {label="Горизонтальные стержни"; :popup_list {label="Диаметр G";key="d2";list="\n6 \n8 \n10 \n12 \n14 \n16 \n18 \n20 \n22 \n25 \n28 \n32 \n36 \n40";edit_width=4;} :edit_box{label="LD2:";value="0";key="LD2";} :button{label="Длина G<";key="mousep3";fixed_width=true; action="(done_dialog 5)";} }//end of row spacer_1; ok_button; }// end of dialog
LSP
; DEM ; (defun C:setka1 (/ dcl_id step pt d1 d2) (setq dcl_id (load_dialog "proba.dcl")) (setq step 2) (setq L1 0) (setq L2 0) (setq d1 0) (while (>= step 2) (if (null (new_dialog "proba" dcl_id))(exit)) (set_tile "LD1" (rtos L1 2 0)) (set_tile "LD2" (rtos L2 2 0)) (set_tile "d1" (rtos d1 2 0)) (action_tile "accept" (strcat "(setq L1 (atof (get_tile \"LD1\")))" "(setq L2 (atof (get_tile \"LD2\")))" "(setq d1 (atof (get_tile \"d1\")))" "(setq d2 (atof (get_tile \"d2\")))" "(done_dialog 1)" );strcat );action_tile (setq step (start_dialog)) (cond ((= step 4) (setq L1 (getdist "\nВведите длину вертикальных стержней: "))) ((= step 5) (setq L2 (getdist "\nВведите длину горизонтальных стержней: "))) );cond );while (unload_dialog dcl_id) (princ "\nДлина1=") (princ (rtos L1)) (princ "\nДлина2=") (princ (rtos L2)) (princ "\nДиаметр1=") (princ (rtos d1)) (princ "\nДиаметр2=") (princ (rtos d2)) (princ) );defun