- •1. Введение
- •2. Неавтоматизированное создание чертежей в AutoCad
- •3. Программирование в AutoCad
- •4. Элементы языка AutoLisp
- •5. Интегрированная среда Visual lisp
- •6. Применение функций AutoLisp
- •7. Функции вывода графических примитивов
- •8. Диалоги и диалоговые окна
- •Работа с диалогами из lisp-программ
- •Атрибуты заголовка диалога
- •Элементы диалога
- •Атрибуты элементов диалога
- •Переменные действия
- •Функции, работающие с графическими элементами
- •9. Управление работой AutoCad с помощью системных переменных
- •10. Меню и адаптации
- •11. Введение в технологию ActiveX
- •Безопасные массивы
- •Объекты и семейства
- •Варианты
- •Свойства
- •Другие функции ActiveX
- •События и реакторы
- •12. Программы, созданные на платформе AutoCad спдс GraphiCs
- •13. Специализированные программы для архитектуры и строительства
- •Ат Венцы
- •Комплекс программных продуктов, объединенных компанией аскон
- •Лоцман: спдс
- •Компас-график
8. Диалоги и диалоговые окна
Диалоговые окна относятся к средствам интерфейса между приложением и проектировщиком и позволяют:
в нужной форме отобразить какую-либо информацию;
организовать ввод данных;
выполнить настройки, необходимые для правильной работы приложения.
Диалоговые окна описываются с помощью диалогов.
Диалог – текст, описывающий одно диалоговое окно. В одном файле может быть записано несколько диалогов (для нескольких диалоговых окон). Они могут следовать в любом порядке, независимо от очередности их вызова из LISP-программы. Исходные тексты диалогов хранятся в текстовых файлах (файлах DOS) с расширением DCL.
Для диалоговых окон разработан специальный язык DCL (Dialog Control Language). Синтаксис языка DCL имеет много общего с языком C. Диалог состоит из совокупности директив.
Директива – логическая единица (предложение) языка DCL.
Форма записи предложений языка DCL – свободная. Между любыми элементами языка DCL (метками, разделительными символами, ключевыми словами, числами и строками) может быть любое количество пробелов.
Все элементы языка DCL чувствительны к регистру.
Пример диалога.
Запрограммируем диалог ввода данных для расчета шарнирно опертой балки, загруженной равномерно распределенной нагрузкой на участке. Расчетная схема балки и предполагаемый вид диалогового окна показаны на рис. 2.
|
|
Рисунок 2 – Расчетная схема балки и диалоговое окно для ввода исходных данных |
|
Текст диалога приведен ниже.
Balka: dialog { label="Расчет балки";
:edit_box { label="Пролет, м"; key="L"; value="6"; edit_width=5; }
:edit_box { label="Привязка слева, м"; key="a"; value="0"; edit_width=5; }
:edit_box { label="Длина нагрузки, м"; key="b"; value="0"; edit_width=5; }
:edit_box { label="Величина нагрузки, кН/м"; key="q"; value="0"; edit_width=5; }
:spacer { height=1; }
:radio_row { label="Вычисление прогибов";
:radio_button { label="Да"; key="fy"; value="1";}
:radio_button { label="Нет"; key="fn"; value="0";}}
:spacer { height=1; }
ok_cancel;
} // Конец диалога Balka
Первая строка (заголовок диалога) содержит имя диалога, ключевое слово dialog и название окна.
Далее описываются поля для ввода данных. Описание состоит из указания текста, который выводится в окно, кода элемента окна, значения, выводимого в окно, и ширины окна.
Коды элементов окна, указанные в key=…, используются для описания действий AutoLISPа после выхода из ячейки редактирования.
Значения, указанные в value=…, являются лишь средством оформления окна, и при описании диалога не попадают ни в какие переменные. При редактировании элемента окна результат редактирования сохраняется в системной переменной $value строкового типа. К переменной $value можно обращаться в LISP-программе при описании действий после выхода из ячейки редактирования.
Элемент диалога spacer выводит в окно пустую строку.
Элемент диалога radio_row описывает переключатель между несколькими возможными состояниями.
Элемент диалога ok_cancel описывает способы выхода из окна.
Символы // и далее до конца строки воспринимаются как комментарии.
При программировании диалогового окна можно проверить его внешний вид без загрузки DCL-файла в память. Это осуществляется через опции меню Tools Interface Tools Preview DCL in Editor.
