Язык управления диалогами (DCL) - это высокоуровневый язык описания и интерпретатор в AutoCAD для создания простых графических диалогов. Расширения AutoLISP используют его для взаимодействия с пользователем в среде AutoCAD.
Особенности и использование
В отличие от других основных API-интерфейсов GUI, DCL не является полным набором инструментов GUI для программирования приложений. Он предназначен только для предоставления простых диалогов в AutoCAD. Он включает в себя основные виджеты формы, такие как текстовые поля, кнопки, флажки и списки. DCL объектно-ориентированный ; он позволяет повторно использовать через наследование и композицию.
Синтаксис DCL основан на определении и использовании «плиток». «Плитка» представляет собой виджет графического интерфейса пользователя, например текстовое поле или текстовую метку. Плитки также представляют собой виджеты, содержащие другие виджеты, такие как столбцы, группы переключателей и сами диалоги. DCL предоставляет встроенные плитки для всех основных виджетов, а новые плитки можно определять посредством наследования и композиции других плиток.
DCL позволяет взаимодействовать с диалоговым окном во время выполнения с помощью кода Lisp. С некоторыми виджетами могут быть связаны действия путем присвоения имени функции AutoLISP, которая будет запускаться, и значений, которые будут ей переданы. В отличие от других типов графических интерфейсов, диалоговые окна DCL нельзя существенно изменить во время выполнения. Содержимое определенных виджетов, таких как текстовые поля и поля списков, можно изменить, но виджеты нельзя удалить из диалогового окна или добавить в него.
Пример
Вот пример файла DCL (и сопутствующего файла AutoLISP ), демонстрирующего основные возможности DCL.
name_button: button { label = "Отправить имя"; действие = "(изменить-имя)"; }привет: диалог { label = "Пример DCL"; : edit_box { label = "Имя:"; ключ = "имя"; } : name_button { ключ = "имя-отправки"; } : text { ключ = "приветствие"; } ok_only;}
Диалог создается путем наследования от встроенного «диалогового окна» плитки. Свойства задаются в диалоговом окне и других виджетах парами имя / значение. Плитки можно размещать внутри диалогового окна, просто дав им имена или задавая им имена и задавая дополнительные свойства. Новая плитка ('name_button') определяется для использования путем присвоения ей имени и указания свойств для нее.
; DCL сохраняется как "hello.dcl" ( defun change-name () ( set_tile "приветствие" ( 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 при определенных событиях, а Лисп может манипулировать содержимым тайлов во время работы диалога.
Альтернативные технологии
Для создания более общих графических интерфейсов пользователя и других расширений в САПР AutoDesk предлагает несколько других вариантов. ObjectARX API для C ++ позволяет расширениям быть построены как в Microsoft Visual Studio. VBA позволяет перетащить и падение программирования для AutoCAD , как для Microsoft Office и других приложений.
Начиная с AutoCAD 2007 и более поздних версий программы AutoLISP или Visual-LISP могут вызывать подпрограммы, написанные в Visual Studio .NET (VB или C #). Теперь программисты могут создавать диалоги на VB или C #, которые имеют полный набор элементов управления, имеющихся в .NET Forms API, и могут быть вызваны и доступны из Visual-LISP.