Тема: Проверка Диалога
Как сделать так, чтоб при нажатии OK, выполнялась проверка значений в edit_box и т.п. и вслучае если что не так, возвращала диалог и значения в форме оставались
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → DCL → Проверка Диалога
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как сделать так, чтоб при нажатии OK, выполнялась проверка значений в edit_box и т.п. и вслучае если что не так, возвращала диалог и значения в форме оставались
Не вызывать (done_dialog) если проверка не прошла.
Через action_tile проще см код,
; 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)
(setq d2 0)
(setq sh1 0)
(setq sh2 0)
(setq b1 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))
(set_tile "d2" (rtos d2 2 0))
(set_tile "sh1" (rtos sh1 2 0))
(set_tile "sh2" (rtos sh2 2 0))
(set_tile "b1" (rtos b1 2 0))
(action_tile "accept"
(strcat
"(setq L1 (atoi (get_tile \"LD1\")))"
"(setq L2 (atoi (get_tile \"LD2\")))"
"(setq d1 (atoi (get_tile \"d1\")))"
"(setq d2 (atoi (get_tile \"d2\")))"
"(setq sh1 (atoi (get_tile \"sh1\")))"
"(setq sh2 (atoi (get_tile \"sh2\")))"
"(done_dialog 1)"
);strcat
);action_tile
(action_tile "mousep2"
(strcat
"(setq L1 (atoi (get_tile \"LD1\")))"
"(setq L2 (atoi (get_tile \"LD2\")))"
"(setq d1 (atoi (get_tile \"d1\")))"
"(setq d2 (atoi (get_tile \"d2\")))"
"(setq sh1 (atoi (get_tile \"sh1\")))"
"(setq sh2 (atoi (get_tile \"sh2\")))"
"(done_dialog 4)"
);strcat
);action_tile
(action_tile "mousep3"
(strcat
"(setq L1 (atoi (get_tile \"LD1\")))"
"(setq L2 (atoi (get_tile \"LD2\")))"
"(setq d1 (atoi (get_tile \"d1\")))"
"(setq d2 (atoi (get_tile \"d2\")))"
"(setq sh1 (atoi (get_tile \"sh1\")))"
"(setq sh2 (atoi (get_tile \"sh2\")))"
"(done_dialog 5)"
);strcat
);action_tile
(action_tile "mousep4"
(strcat
"(setq L1 (atoi (get_tile \"LD1\")))"
"(setq L2 (atoi (get_tile \"LD2\")))"
"(setq d1 (atoi (get_tile \"d1\")))"
"(setq d2 (atoi (get_tile \"d2\")))"
"(setq sh1 (atoi (get_tile \"sh1\")))"
"(setq sh2 (atoi (get_tile \"sh2\")))"
"(done_dialog 6)"
);strcat
);action_tile
(action_tile "b1"
(strcat
"(setq b1 (atoi (get_tile \"b1\")))"
"(cond
((= b1 0) (mode_tile \"sh2\" 1))
((= b1 1) (mode_tile \"sh1\" 1))
((= b1 2) (mode_tile \"LD2\" 1))
((= b1 3) (mode_tile \"LD1\" 1))
)";cond
);strcat
);action_tile
(setq step (start_dialog))
(cond
((= step 4) (setq L1 (getdist "\nВведите длину вертикальных стержней: ")));step4
((= step 5) (setq L2 (getdist "\nВведите длину горизонтальных стержней: ")));step5
((= step 6) (setq pt1 (getpoint "\nНачальная точка: "))
(setq pt2 (getpoint pt1 "\nКонечная точка: "))
(setq L1 (- (nth 1 pt2) (nth 1 pt1)))
(setq L2 (- (nth 0 pt2) (nth 0 pt1)))
);step6
);cond
);while
(unload_dialog dcl_id)
(princ)
)
Он клнечно не такой чистый как у не которых но все же
Я возможно где то скобку проглотил так что код скорее всего не рабоий
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → DCL → Проверка Диалога
Форум работает на PunBB, при поддержке Informer Technologies, Inc