Важным компонентом приложений в AutoCAD являются диалоговые окна. В них отображается полезная информация, пользователи в удобной форме вводят исходные данные, меняются настройки программы. Язык программирования LISP не имеет своих диалоговых окон. Поэтому приложения, написанные на языке LISP, использую для написания диалоговых окон язык DCL.
В этом уроке мы создадим диалоговое окно для программы, которую мы написали в предыдущем уроке. Напомню, что эта программа строит куб со сторонами 200. Давайте изменим эту программу так, чтобы она рисовала не куб, а параллелепипед, стороны которого (длина, ширина, высота) мы будем задавать при помощи диалогового окна см. Рис. 1.
Но вначале давайте его создадим.
В конце статьи смотрите видео к этому уроку.
Откройте AutoCAD. Далее запускаем редактор Visual LISP, набрав в командной строке VLISP.
Создаем новый файл Рис. 2.
Далее нажимаем «Файл» / «Сохранить как» и в открывшимся окне «Сохранения файла» находим папку «MyLisp». См. Рис. 3.
В поле «Тип файла» щелкаем по стрелке вниз и выбираем пункт «Исходные DCL-файлы». В поле «Имя файла» вводим «mp_paral» и нажимаем «Сохранить».
Затем в окно текстового редактора, набираем текст нашей программы или копируем его с сайта. См. Рис. 4.
Программный код на языке 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 (Размер файла: 392 bytes)
Чтобы проверить действительно ли у нас получилось нужное диалоговое окно:
См. Рис. 5.
В главном меню выбираем «Сервис», далее переводим указатель мыши на «Инструменты интерфейса» и щелкаем на «Просмотр DCL из редактора».
Появится окно «Введите имя диалогового окна» см. Рис. 6.
Нажимаем «ОК» и в рабочем окне AutoCAD появится наше диалоговое окно. Если мы не допустили ошибки, то оно будет выглядеть так же, как на Рис.1.
Для того, чтобы закрыть диалоговое окно, нажмите на любую из кнопок (ОК или Отмена).
Что делать если диалоговое окно 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 с диалоговым окном.
Пишите в комментариях: все ли у вас получилось?; трудно ли было выполнить этот урок?;
где у вас возникли трудности? Я с удовольствием отвечу на все ваши комментарии.
Если вы хотите получать новости с моего сайта. Оформляйте подписку.
До новых встреч.
«Автор: Михаил Орлов»
Здравствуйте. Диалоговое окно не отображается, то есть ничего не происходит когда я нажимаю на «Просмотр DCL из редактора».
Возможно, у Вас какая либо ошибка в тексте программы. Пришлите Вашу программу мне на почту: acadprog@gmail.com . Я посмотрю. Попробуйте скачать готовый текст программы с сайта.
Хм.. Консоль Visual LISP выдает сообщение: Не удается создать временный файл для DCL: «C:/Program Files/Autodesk/Acade 2012/$vld$.dcl».
Текст сначала сам написал, потом Ваш вставил
Возможно у Вас кавычки “” отображаются в следующем виде «» . Должны быть только такие “”. Если проблема не в этом, пришлите Вашу программу мне на почту: acadprog@gmail.com. Я посмотрю. Попробуйте скачать готовый текст программы с сайта, щелкнув по надписи: Скачать DCL программу mp_paral.
Дело было в том, что папка у автокада была только для чтения, вот и не мог он создать временный файл.
такая же проблема
Перейдите по Ссылке : http://acad-prog.ru/chto-delat-esli-dialogovoe-okno-dcl-ne-otobrazhaetsya/
У меня таже проблема: Не удается создать временный файл для DCL: «C:/Program Files/Autodesk/AutoCAD 2014/$vld$.dcl». Я думаю здесь проблема с правами доступа диска «С». Я сам изучаю уроки на рабочем компьютере, прав администратора нет. Может кто нибудь знает как изменить путь к папке для создания этого временного файла, например создать его где нибудь на другом диске?
Перейдите по Ссылке : http://acad-prog.ru/chto-delat-esli-dialogovoe-okno-dcl-ne-otobrazhaetsya/
Возможно это Вам поможет.
Добрый день, Михаил! Спасибо за интересные уроки. Если Вас не затруднит, подскажите, пожалуйста, как изменить высоту текста в создаваемом диалоговом окне?
Насколько мне известно, высоту текста в диалоговом окне DCL изменить нельзя.
Все получилось, спасибо за проект.