русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тексты изученных программ


Дата добавления: 2015-08-06; просмотров: 748; Нарушение авторских прав


npo_naprav: dialog {label = "Настройка данных направляющих";

:edit_box {label = "Ширина направляющей"; key = "kWid"; value = "40"; edit_width = 6;}

:edit_box {label = "Длина секции направляющей"; key = "kLen"; value = "600"; edit_width = 6;}

:edit_box {label = "Расстояние между направляющими"; key = "kDist"; value = "180"; edit_width = 6;}

:spacer {height = l;}

:edit_box {label = "Количество секций в каждой направляющей"; key = "kNumsection";

value = "6"; edit_width = 6;}

:edit_box {label = "Шаг расположения дросселей в секции направляющей"; key = "kStep";

value = "50"; edit_width = 6;}

:spacer {height = l;}

:radio_row {label = "Дроссели располагаются в секции направляющей";

:radio_button {label = "в один ряд"; key = "kOnerow"; value = "l";}

:radio_button {label = "в два ряда"; key = "kTworow"; value = "0"; }

}

:spacer {height = l;}

ok_cancel;

}

(DEFUN show_naprav (/ dcl_id)

(IF (< (SETQ dcl_id (LOAD_DIALOG "//Server/учебная/БМЕ 11-01/для 6 лабыПГПИО/Example_D1.dcl")) 0) (EXIT))

(IF (NOT (NEW_DIALOG "npo_naprav" dcl_id)) (EXIT))

(START_DIALOG)

(UNLOAD_DIALOG dcl_id)

(PRINC)

)

ser:dialog {label = "Ввод фамилии пользователя";

:column{

:edit_box {label = "Фамилия"; edit_width = 40; alignment = centered;

value = ""; key = "usfam";

}// конец edit_box

:spacer {height = 1;}

:text {label = "Bы6op из списков подразделений";alignment = centered;}

:row {

:text {label = "Подразделение 001"; key = "s1";}



:popup_list {key = "p1"; is_enabled = true; label = ""; list = ""; width = 20;}

} // конец row

:row {

:text {label = "Подразделение 002"; key = "s2";}

:popup_list {key ="p2"; is_enabled = true; label = ""; list = ""; width = 20;}

} // конец row

:row {

:text {label = "Подразделение 003"; key = "s3";}

:popup_list {key = "p3"; is_enabled = true; label = ""; list = " "; width = 20;}

} // конец row

:row {

:text {label = "Подразделение 004"; key = "s4";}

:popup_list {key= "p4"; is_enabled = true; label = ""; list = ""; width = 20;}

}// конец row

:spacer {height = 1;}

ok_cancel;

}// конец column

defun usn (/ dcl_id fpolz i plist nlist spi str nsubd);Задание функции пользователя

;введенная фамилия заносится в глобальную переменную pv

(if (not pv) (setq pv ""));проверка пустого ввода

(if (< (setq dcl_id (load_dialog "//Server/учебная/Ручкин/Прикладные подсистемы САПР/Лабораторные работы ППС/Лаб_№6/Example_D2.dcl")) 0) (exit));загрузка диалога

(if (not (new_dialog "user" dcl_id)) (exit));начало диалога

(setq plist nil nlist nil i 0)

;Чтение файлов polz01.txt, polz02.txt, polz03.txt, polz04.txt

;количество подразделений - 4

(repeat 4

(setq spi nil)

(setq i (1+ i) fpolz (strcat "//Server/учебная/Ручкин/Прикладные подсистемы САПР/Лабораторные работы ППС/Лаб_№6/polz0" (itoa i) ".txt"));itoa переводит i из int в строку, strcat собирает строку

(if (findfile fpolz);поиск файла в доступных директориях

(progn

(setq fd (open (findfile fpolz) "r"));открываем файл для чтения

(setq str (read-line fd));чтение первой строки - названия подразделения

(setq nlist (append nlist (list str))); создание списка подразделений

(if str

(while (setq str (read-line fd));цикл чтения файла до конца

(setq spi (append spi

(list str)))

);while

);if str

(close fd);закрыли файл

(setq fd nil)

);prong

(setq nlist (append nlist (list nil)))

);if findfile

(setq plist (append plist (list spi)));формирование списка сотрудников

);repeat

;Заполнение списков диалогового окна

(setq i -1)

(repeat 4

(setq i (1+ i))

(if

(setq nsubd (nth i nlist))

(progn

;С помощью функции set_tile стандартные наименования подразделений

;меняются на элементы списка nlist

(set_tile (strcat "s" (itoa (1+ i))) nsubd)

(if (setq spi (nth i plist))

(progn

(start_list (strcat "p" (itoa (1+ i))))

(mapcar 'add_list spi)

(end_list)

) ;progn

);if

) ;progn

;гашение списка, если файл с фамилиями не найден,

;или число подразделенй меньше 4

(progn

(mode_tile (strcat "s" (itoa (1+ i))) 1)

(mode_tile (strcat "p" (itoa (1+ i))) 1)

);progn

);if

) ; repeat

;== Нужно добавить действия кнопок Инфо и Помощь

;;;косая черта для ввода кавычек ",т.е. (get_tile \"usfam\")

;;;вернет текущее имя пользователя,

;;;установленное в редактируемом поле (при выборе не из списка)

;;;или = пустой ввод => ДО: Фамилия не задана,

;;;иначе конец диалога => OK (код accept)

(action_tile "accept"

(strcat

"(if

(= (setq pv (get_tile \"usfam\"))

\"\")"

"(alert \"Фамилия не задана\")"

"(done_dialog))"

) ; strcat

); action-tile accept

(action_tile "cancel" "(done_dialog)")

;;;Переменная $value, используемая функцией action_tile

;;;для раскрывающегося списка popup_list принимает значения

;;;с номером выбранного пользователем элемента списка

(action_tile "p1" "(set_tile \"usfam\" (nth (atoi $value) (nth 0 plist)))")

(action_tile "p2" "(set_tile \"usfam\" (nth (atoi $value) (nth 1 plist)))")

(action_tile "p3" "(set_tile \"usfam\" (nth (atoi $value) (nth 2 plist)))")

(action_tile "p4" "(set_tile \"usfam\" (nth (atoi $value) (nth 3 plist)))")

(start_dialog)

(unload_dialog dcl_id)

(princ)

);defun usn

 

…………………………………………………………………………….

//Пример временного выхода из диалогового окна

texp:dialog {lаbеl = "Задание точки";

:text {label = "Введите координаты";}

:text {label = "или укажите точку на экране";}

:spacer {height=1;}

:row {

:column {

:edit_box {label = "X:"; value = "0"; key = "xp";}

:edit_box {label = "Y:"; value= "0"; key = "yp";}

:edit_box {label="Z:"; value="0"; key="zp";}

}//end of column

:button {label = "указать <"; key = "mousep"; height = 6;

fixed_width = true; action = "(done_dialog 3)";}

//Для достижения эффекта временного выхода из окна в атрибуте

//action кнопки с кодом mousep использована функция done_dialog

// с аргументом 3

}//end of row

:spacer {height = 1;}

ok_button;

}

;;;Пример программы управлением временным выходом

;;;из диалогового окна для задания координат точки

(defun text_point (/ dcl_id step pt)

(setq dcl_id (load_dialog "C:/LVR/MyDOCeducat/ПГП/Лекции ПГП/Диал_окна/Example_D3.dcl"))

(setq step 2)

(if (null pt) (setq pt (list 0.0 0.0 0.0)))

(while (>= step 2)

(if (null (new_dialog "texp" dcl_id)) (exit))

;rtos возвращает строку с числом,

;;где атрибуты: 2 - децимальные единицы, 2 - точность

(set_tile "xp" (rtos (car pt) 2 2))

(set_tile "yp" (rtos (cadr pt) 2 2))

(set_tile "zp" (rtos (caddr pt) 2 2))

(action_tile "accept"

(strcat

"(setq x (atof (get_tile \"xp\")))"

"(setq у (atof (get_tile \"yp\")))"

"(setq z (atof (get_tile \"zp\")))"

"(setq pt (list x у z))"

"(done_dialog 1)"

);strcat, atof возвращает число из строки "15"=>15

);action_tile

(setq step (start_dialog))

(cond

((= step 3) (setq pt (getpoint "\nУкажите точку: ")))

((= step 1)

(princ "\nТочка: (")

(princ (rtos x 2 2)) (princ " ")

(princ (rtos у 2 2)) (princ " ")

(princ (rtos z 2 2)) (princ ")")

);= step 1

);cond

);while

(unload_dialog dcl_id)

 

(princ)

)

dia1: dialog {label = "Диалоговое окно первого уровня";

:edit_box {label = "Ввод названия:"; key = "t1";}

:button {label = "Вызвать следующее окно"; key = "b1";}

ok_button;

}

dia2: dialog {label = "Диалоговое окно второго уровня";

:text {label = "Это вложенное окно"; key = "t2";}

:ok_button {label = "Вернуться";}

}

 

pass: dialog {label = "Диалоговое окно с паролем";

:edit_box {label = "Введите пароль:"; key= "e1"; password_char = "*";}

ok_button;

}

(defun show4 (/ dcl_id)

(if (< (setq dcl_id (load_dialog "C:/LVR/MyDOCeducat/ПГП/Лекции ПГП/Диал_окна/Example_D4.dcl")) 0) (exit))

(if (not (new_dialog "dia1" dcl_id)) (exit))

(action_tile "t1" "(setq mytxt $value)")

(action_tile "b1" "(opendia2 dcl_id)")

(start_dialog)

(unload_dialog dcl_id)

(princ)

); defun dia1

(defun opendia2 (dc /)

(if (not (new_dialog "dia2" dc)) (exit))

(start_dialog)

);defun dia2

 

Вывод:

Мы просмотрели файлы и отредактировали пути доступа к этим файлам: Example_D1, Example_D2, Example_D3, Example_D4, Example_D5, Show_D1, Show_D2, Show_D4, text_point.

Создали файлы: polz01, polz02, polz03, polz04.Благодаря этому изучили элементы языка DCL (Dialog Control Language).

 



<== предыдущая лекция | следующая лекция ==>
Выполнение работы | Continues.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.038 сек.