Как включить диалоговое окно в автокаде
Диалоговое окно Автокад. | AutoCAD
Диалоговые окна являются важным компонентом любого приложения.
Диалоговые окна используют:
- для отображения полезной информация,
- для удобного ввода исходных данных,
- для изменения настроек программы.
Создать диалоговое окно Автокад, не прибегая к сторонним программам, можно при помощи редактора Visual LISP. Для этого в редакторе Visual LISP используют язык DCL, который предназначен для программирования диалоговых окон.
Давайте для примера создадим диалоговое окно для более удобного ввода исходных данных прямого участка воздуховода.
Добавим в эту форму настройки программы – выбор формы сечения.
И в качестве полезной информации, при вводе исходных данных, покажем пользователю скорость движения воздуха.
В результате хотелось бы получить следующее диалоговое окно. См. Рис. 1.

Рис. 1. Диалоговое окно.
И так притупим:
Откройте Автокад.
Запустите редактор Visual LISP (наберите в командной строке VLIDE и нажмите <Enter>).
Нажмите на кнопку «Новый файл».
Затем на кнопку «Сохранить».
Откроется диалоговое окно «Сохранение файла». Найдите папку, в которой хотите сохранить файл (в моем случаи D:\MyLisp).
В строке Тип файла: выберите «Исходные DCL-файлы».
Задайте имя файла и нажмите на кнопку «Сохранить». См. Рис. 2.

Рис. 2. Создание DCL файла.
Директива описания диалога.
Программа, написанная на языке DCL, состоит из логических единиц – директив.
Программный код диалогового окна всегда начинается с директивы описания диалога.
В общем виде она имеет следующий вид:
<Name> : dialog { <атрибуты окна>; <поля> }
<Name> — это имя, по которому диалоговое окно из LISP программы вызывается на экран. Далее следует «:», ключевое слово dialog, и фигурная открывающаяся скобка «{»
Параметр <атрибуты окна> представляет собой последовательность атрибутов и их значений. В общем виде это выглядит следующим образом:
<Атрибут> = <значение>;
После атрибута и его значения ставиться «;»
Параметр <поля> является набором директив описание полей (текстового поля, редактируемого текстового поля, раскрывающегося списка, кнопок)
Директива описания диалога заканчивается закрывающей фигурной скобкой «}».
Давайте дадим имя диалогу:
pr_uch
Добавим атрибут:
label = "Прямой участок" ;
— начальный заголовок диалогового окна;
Добавим директиву описания поля кнопок:
ok_cancel;
— директива которая является ссылкой на группу кнопок (ОК и Отмена), описанную в базовом файле AutoCAD “base.dcl”
В результате получим. См. Рис. 3.
Рис. 3. Директива описания диалога.
Просмотр диалогового окна.
Чтобы посмотреть, как выглядит диалоговое окно, в главном меню выбираем «Сервис», далее переводим указатель мыши на «Инструменты интерфейса» и щелкаем на «Просмотр DCL из редактора».
См. Рис. 4.

Рис. 4. Просмотр DCL из редактора.
Появится окно «Введите имя диалогового окна» см. Рис. 5.
Рис. 5. Введите имя диалогового окна.
Нажимаем «ОК» и в рабочем окне AutoCAD появится диалоговое окно.
Что делать если диалоговое окно DCL не отображается?
Директивы описание полей.
Радиоколонка.
Далее добавим директиву описание радиоколонки (колонка переключателей):
:radio_column {label = "Выберите форму сечения"; key = "rc_S"; }
: - директива начинается с двоеточия; radio_column – ключевое слово директивы радиоколонки; Атрибуты: label = "Выберите форму сечения"; - заголовок радиоколонки; key = "rc_S"; - код поля, по которому к полю можно будет обратится из программ LISP.
См. Рис. 6.
Рис. 6. Директиву описания радиоколонки.
Радиокнопки.
Далее добавим два элемента внутрь радиоколонки:
Для круглого сечения:
:radio_button {label = "Круглый"; key = "rb_K"; value = "1"; }
: - директива начинается с двоеточия; radio_button – ключевое слово директивы радиокнопка; Атрибуты: label = "Круглый"; - заголовок радиокнопки; key = "rb_K"; - код поля, по которому к кнопке можно будет обратится из программ LISP; value = "1"; - соответствует включенной радиокнопке ( “0” – выключенной).
Для прямоугольного сечения:
:radio_button {label = "Прямоугольный"; key = "rb_P"; value = "0"; }
: - директива начинается с двоеточия; radio_button – ключевое слово директивы радиокнопка; Атрибуты: label = "Прямоугольный"; - заголовок радиокнопки; key = "rb_Р"; - код поля, по которому к полю можно будет обратится из программ LISP; value = "0"; - соответствует выключенной радиокнопке ( “1” – включенной). См. Рис. 7.

Рис. 7. Директивы описания радиокнопок.
Добавим следующие директивы:
Текстовое поле:
:text {value = "Введите расход и размер сечения"; key = "t1"; }
: - директива начинается с двоеточия; text – ключевое слово директивы текстовое поле; Атрибуты: value = "Введите расход и размер сечения"; - начальное значение текстового поля; key = "t1"; - код поля, по которому к полю можно будет обратится из программ LISP.
Редактируемое текстовое поле:
:edit_box {label = "Расход м3/ч:"; key = "eb_L"; edit_width=15; value = "150"; }
: - директива начинается с двоеточия; edit_box – ключевое слово директивы редактируемое текстовое поле; Атрибуты: label = "Расход м3/ч:"; - заголовок редактируемого текстового поля; key = "eb_L"; - код поля, по которому к полю можно будет обратится из программ LISP. edit_width=15; - ширина редактируемого текстового поля; value = "150"; - начальное значение редактируемого текстового поля;
Раскрывающийся список:
:popup_list{label="Сечение мм:"; key="pop1"; list="100" "\n125"; edit_width=15; }
: - директива начинается с двоеточия; popup_list – ключевое слово директивы раскрывающийся список; Атрибуты: label="Сечение мм:"; - заголовок раскрывающегося списка; key = "pop1"; - код поля, по которому к полю можно будет обратится из программ LISP; list="100" "\n125";- начальный список значение раскрывающегося списка; edit_width=15; - ширина раскрывающегося списка.
И снова редактируемое текстовое поле:
:edit_box {label = "Скорость м3/ч:"; key = "eb_V"; edit_width=15; value = "0"; }
: - директива начинается с двоеточия; edit_box – ключевое слово директивы редактируемое текстовое поле; Атрибуты: label = "Скорость м3/ч:"; - заголовок редактируемого текстового поля; key = "eb_V"; - код поля, по которому к полю можно будет обратится из программ LISP. edit_width=15; - ширина редактируемого текстового поля; value = "0"; - начальное значение редактируемого текстового поля;
См.Рис. 8.

Рис. 8 . Директивы описание полей.
Директива пустой строки.
Что проще было ориентироваться в нашем диалоговом окне, давайте добавим директивы пустой строки:
: spacer{height=1;} – директива вставки пустой строки.
: - директива начинается с двоеточия; spacer – ключевое слово директивы пустая строка; height=1; - атрибут задает высоту пустой строки.
См.Рис. 9.

Рис. 9. Окончательный вариант программы.
В результате наше диалоговое окно создано. Осталось научиться запускать и управлять им из LISP программы. Как это делать мы рассмотрим в следующей статье: «Пример LISP программы управления диалоговым окном в Автокад.»
Если у Вас появились вопросы, задавайте их в комментариях.
Если Вы нашли что-то полезное на моем сайте не забудьте порекомендовать статью в социальных сетях.
Пишите в комментариях или мне на почту Ваши пожелания о том, какие статьи Вы хотели бы увидеть на моем сайте.
Хотите получать информацию о выходе новых статей. Оформляйте подписку.
До новых встреч.
«Автор: Михаил Орлов»
Также на эту тему Вы можете почитать:
Мы не можем найти эту страницу
(* {{l10n_strings.REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}} *
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}} / 500 {{l10n_strings.TAGS}} {{$ item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings.LANGUAGE}} {{$ select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$ select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}} .Мы не можем найти эту страницу
(* {{l10n_strings.REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}} *
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}} / 500 {{l10n_strings.TAGS}} {{$ item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings.LANGUAGE}} {{$ select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$ select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}} .Мы не можем найти эту страницу
(* {{l10n_strings.REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}} *
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}} / 500 {{l10n_strings.TAGS}} {{$ item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings.LANGUAGE}} {{$ select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$ select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}} .Мы не можем найти эту страницу
(* {{l10n_strings.REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}} *
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}} / 500 {{l10n_strings.TAGS}} {{$ item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings.LANGUAGE}} {{$ select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$ select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}} .