Тема: Временный выход из диалогового окна.

Проблема заключается в следующем при временном выходе из диалогового окна сбрасываются значения.
Причем 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

Re: Временный выход из диалогового окна.

Значением поля :popup_list, которое возвращает функция get_tile, является индекс соответствующей строки, а не то значение, которое в ней представлено. В общем случае, список значений необходимо хранить в отдельной переменной и получать из него текущее выбранное значение через функцию nth, используя индекс, возвращаемый функцией get_tile.
После временного выхода можно восстановить последнее выбранное значение с помощью set_tile лишь в том случае, если индекс был сохранен перед временным выходом.

Re: Временный выход из диалогового окна.

ЗЫ Спасибо сам разобралсся
надо было в остальных action_tile
добавить присвоение новой переменной