Урок 4. Диалоговое окно.

Важным компонентом приложений в AutoCAD являются диалоговые окна. В них отображается полезная информация, пользователи в удобной форме вводят исходные данные, меняются настройки программы. Язык программирования LISP не имеет своих диалоговых окон. Поэтому приложения, написанные на языке LISP, использую для написания диалоговых окон язык DCL.

В этом уроке мы создадим диалоговое окно для программы, которую мы написали в предыдущем уроке. Напомню, что эта программа строит куб со сторонами 200. Давайте изменим эту программу так, чтобы она рисовала не куб, а параллелепипед, стороны которого (длина, ширина, высота) мы будем задавать при помощи диалогового окна см. Рис. 1.

Диалоговое окно DCL

Рис. 1.   Диалоговое окно DCL

Но вначале давайте его создадим.

В конце статьи смотрите видео к этому уроку.

Откройте AutoCAD. Далее запускаем редактор Visual LISP, набрав в командной строке VLISP.

Создаем новый файл Рис. 2.

Диалоговое окно

Рис. 2.   Новый файл

Далее нажимаем «Файл» / «Сохранить как» и в открывшимся окне «Сохранения файла» находим папку «MyLisp». См. Рис. 3.

Создание файла DCL.

Рис. 3.   Создание файла DCL.

В поле «Тип файла» щелкаем по стрелке вниз и выбираем пункт «Исходные DCL-файлы». В поле «Имя файла» вводим «mp_paral» и нажимаем «Сохранить».

Затем в окно текстового редактора, набираем текст нашей программы или копируем его с сайта. См. Рис. 4.

Диалоговое окно

Рис. 4.   Программный код DCL.

Программный код на языке DCL

mp_paral: dialog {label = "Параллелепипед"; // начало диалога

    : spacer{height=1;} // вставка пустой строки

    : text {label = "Введите размеры:"; key = "t1";}   // текстовое поле
    : edit_box {label = "Длина мм:"; key = "eb_Dl"; edit_width=10; value = "";}      // редактируемые
    : edit_box {label = "Ширина мм:"; key = "eb_Sh"; edit_width=10; value = "";}  // текстовые
    : edit_box {label = "Высота мм:"; key = "eb_Hi"; edit_width=10; value = "";}    // поля

    : spacer{height=1;}   // вставка пустой строки

    ok_cancel;   // добавление кнопок ОК и Отмена
}  // окончание диалога

 Скачать диалоговое окно Mp_paral.dcl Скачать диалоговое окно Mp_paral.dcl (Размер файла: 392 bytes)

Чтобы проверить действительно ли у нас получилось нужное диалоговое окно:

См. Рис. 5.

Просмотр DCL из редактора

Рис. 5.    Просмотр DCL из редактора

В главном меню выбираем  «Сервис», далее переводим указатель мыши на «Инструменты интерфейса» и щелкаем на «Просмотр DCL из редактора».

Появится окно «Введите имя диалогового окна» см. Рис. 6.

Имя диалогового окна.

Рис. 6.    Имя диалогового окна.

Нажимаем «ОК» и в рабочем окне AutoCAD появится наше диалоговое окно. Если мы не допустили ошибки, то оно будет выглядеть так же, как на Рис.1.

Диалоговое окно DCL

Рис. 1.   Диалоговое окно DCL

Для того, чтобы закрыть диалоговое окно, нажмите на любую из кнопок (ОК или Отмена).

Что делать если диалоговое окно DCL не отображается?

Директива описания диалога.

Файл, написанный на языке DCL, состоит из логических единиц – директив. Программный код диалогового окна начинается с директивы описания диалога. В общем виде она имеет следующий вид:

<Name> : dialog { <атрибуты окна> 
    <поля> 
}

<Name> —  это имя, по которому диалоговое окно из LISP программы вызывается на экран (в нашем случае это mp_paral).

Далее следует «:», ключевое слово dialog, и фигурная открывающаяся скобка «{»

Параметр <атрибуты окна> представляет собой последовательность атрибутов и их значений. В общем виде это выглядит следующим образом:

<Атрибут> = <значение>;

В нашем случае атрибут это label, а его значение «Параллелепипед». Этот атрибут задает начальный заголовок диалогового окна.

После атрибута и его значения ставиться «;»

Параметр <поля> является набором директив описание полей (текстового поля, редактируемого текстового поля, кнопок)

Директива описания диалога заканчивается закрывающей фигурной скобкой «}».

Директивы описания полей.

Давайте подробнее рассмотрим директивы описания полей:

: spacer {height=1;} – директива вставки пустой строки.
height=1; - атрибут задает высоту пустой строки
: text  {label = "Введите размеры:"; key = "t1";}  - директива описания текстового поля.
label = "Введите размеры:"; - атрибут задает начальный заголовок поля.
"key = "t1"; - атрибут задает код поля, по которому к полю можно будет
обратится из программ LISP
: edit_box {label = "Длина  мм:"; key = "eb_Dl"; edit_width=10; value = "";} 
- директива описания редактируемого текстового поля.
label = "Длина  мм:"; - атрибут задает начальный заголовок поля.
key = "eb_Dl"; - атрибут задает код поля, по которому к полю можно будет 
обратится из программ LISP
edit_width=10; - атрибут задает ширину поля ввода.
value = ""; - атрибут задает начальное значения поля ввода.
ok_cancel; - директива  которая является ссылкой на группу кнопок 
(ОК и Отмена), описанную в базовом файле AutoCAD “base.dcl”

Смотрите видео к этому уроку:


Таким образом в этой статье мы рассмотрели пример создания диалогового окна.

Чтобы лучше, понять, как работают директивы и атрибуты, поэкспериментируйте с ними, поменяйте какие либо значения, посмотрите, как это повлияет на результат.
Смотрите следующий урок, в котором мы объединим диалоговое окно DCL с LISP программой: Пример программы LISP с диалоговым окном.
Пишите в комментариях: все ли у вас получилось?; трудно ли было выполнить этот урок?;
где у вас возникли трудности? Я с удовольствием отвечу на все ваши комментарии.
Если вы хотите получать новости с моего сайта. Оформляйте подписку.
До новых встреч.
«Автор: Михаил Орлов»

Google

Также на эту тему Вы можете почитать:

9 комментарии на “Урок 4. Диалоговое окно.

  1. Саша 06.07.2014 15:44

    Здравствуйте. Диалоговое окно не отображается, то есть ничего не происходит когда я нажимаю на «Просмотр DCL из редактора».

    • Михаил Орлов 08.07.2014 06:39

      Возможно, у Вас какая либо ошибка в тексте программы. Пришлите Вашу программу мне на почту: acadprog@gmail.com . Я посмотрю. Попробуйте скачать готовый текст программы с сайта.

  2. Благодарный 22.07.2014 17:38

    Хм.. Консоль Visual LISP выдает сообщение: Не удается создать временный файл для DCL: «C:/Program Files/Autodesk/Acade 2012/$vld$.dcl».
    Текст сначала сам написал, потом Ваш вставил

    • Михаил Орлов 22.07.2014 20:37

      Возможно у Вас кавычки “” отображаются в следующем виде «» . Должны быть только такие “”. Если проблема не в этом, пришлите Вашу программу мне на почту: acadprog@gmail.com. Я посмотрю. Попробуйте скачать готовый текст программы с сайта, щелкнув по надписи: Скачать DCL программу mp_paral.

      • Артур 24.07.2014 03:01

        Дело было в том, что папка у автокада была только для чтения, вот и не мог он создать временный файл.

    • Micle 05.11.2014 09:01

      У меня таже проблема: Не удается создать временный файл для DCL: «C:/Program Files/Autodesk/AutoCAD 2014/$vld$.dcl». Я думаю здесь проблема с правами доступа диска «С». Я сам изучаю уроки на рабочем компьютере, прав администратора нет. Может кто нибудь знает как изменить путь к папке для создания этого временного файла, например создать его где нибудь на другом диске?

  3. Сергей 31.07.2016 11:56

    Добрый день, Михаил! Спасибо за интересные уроки. Если Вас не затруднит, подскажите, пожалуйста, как изменить высоту текста в создаваемом диалоговом окне?

    • Михаил Орлов 01.08.2016 09:04

      Насколько мне известно, высоту текста в диалоговом окне DCL изменить нельзя.

Оставить комментарий

Ваш mail не будет опубликован.

Вы можете использовать HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>