Язык управления диалогом
Язык управления диалогами (DCL) — это язык описания и интерпретатор высокого уровня в AutoCAD для создания простых графических диалогов. Расширения AutoLISP используют его для взаимодействия с пользователем в среде AutoCAD.
Особенности и использование
[ редактировать ]В отличие от других основных API-интерфейсов с графическим интерфейсом, DCL не является полным набором инструментов графического интерфейса для программирования приложений. Он предназначен только для создания простых диалогов в AutoCAD. Он включает в себя базовые виджеты форм, такие как текстовые поля, кнопки, флажки и списки. DCL является объектно-ориентированным ; он позволяет повторное использование посредством наследования и композиции.
Синтаксис DCL основан на определении и использовании «плиток». «Плитка» представляет собой виджет графического интерфейса, например текстовое поле или текстовую метку. Плитки также представляют виджеты, которые содержат другие виджеты, такие как столбцы, группы переключателей и сами диалоги. DCL предоставляет встроенные плитки для всех основных виджетов, а новые плитки можно определять посредством наследования и композиции других плиток.
DCL позволяет взаимодействовать с диалогом во время выполнения с помощью кода Lisp. С некоторыми виджетами могут быть связаны действия, именуемые запускаемой функции AutoLISP и передаваемые ей значения. В отличие от других типов графических интерфейсов, диалоги DCL не могут быть существенно изменены во время выполнения. Содержимое некоторых виджетов, таких как текстовые поля и списки, можно изменить, но виджеты нельзя удалить из диалогового окна или добавить в него.
Пример
[ редактировать ]Вот пример файла DCL (и сопутствующего файла AutoLISP ), демонстрирующий основные функции DCL.
name_button : button {
label = "Submit name";
action = "(change-name)";
}
hello : dialog {
label = "DCL Example";
: edit_box {
label = "Name: ";
key = "name";
}
: name_button {
key = "submit-name";
}
: text {
key = "greeting";
}
ok_only;
}
Диалог создается путем наследования встроенной плитки «диалог». Свойства устанавливаются в диалоговом окне и других виджетах в парах имя/значение. Плитки можно разместить внутри диалогового окна, просто назвав их или назвав их и указав дополнительные свойства. Новая плитка («name_button») определяется для использования путем присвоения ей имени и указания свойств.
; DCL is saved as "hello.dcl"
(defun change-name ()
(set_tile "greeting" (strcat "Hello, " (get_tile "name") "!")))
(setq hello-dcl (load_dialog "hello.dcl"))
(new_dialog "hello" hello-dcl)
(start_dialog)
(unload_dialog hello-dcl)
Диалоговое окно DCL создается путем вызова ряда функций в файле AutoLisp. Плитки могут выполнять обратный вызов кода AutoLISP при определенных событиях, а Lisp может манипулировать содержимым плиток во время работы диалогового окна.
Альтернативные технологии
[ редактировать ]Для создания более общих графических интерфейсов и других расширений в САПР AutoDesk предлагает несколько других вариантов. API ObjectARX для C++ позволяет создавать расширения, как в Microsoft Visual Studio. VBA позволяет программировать с помощью перетаскивания для AutoCAD , Microsoft Office и других приложений.
Начиная с AutoCAD 2007 и более поздних версий, программы AutoLISP или Visual-LISP могут вызывать подпрограммы, написанные в Visual Studio .NET (VB или C#). Программисты теперь могут создавать диалоги на VB или C#, которые имеют полный набор элементов управления, имеющихся в API .NET Forms, и могут вызываться и получать к ним доступ из Visual-LISP.