Составил Виктор Ткаченко,
http://www.cad.dp.ua/,
статья обновлена в соответствии с ситуацией на 1.01.2008

Начиная с версии 12 AutoCAD предусматривает возможность самостоятельного написания диалоговых окон, отличных от определенных в системе. Для этой цели был разработан специальный язык – DCL (Dialogue Control Language, или другими словами – язык управления диалоговыми окнами). Следует отметить, что Autodesk свято как правило свято придерживается принципов совместимости своих программных стандартов, и при пререходе на Windows-версию AutoCAD, язык DCL не притерпел никаких серьезных изменений, и приложения написанные для AutoCAD R12 (DOS) работают и под AutoCAD R14 (Windows), равно как и под всеми последующими версиями AutoCAD.

Кроме массы достоинств, которые влечет использование диалоговых окон в пользовательских приложениях под AutoCAD существуют и определенные недостатки. К ним можно прежде всего отнести отсутствие встроенных средств отладки – в качестве отладчика используется сам AutoCAD, который пишет сообщения об ошибках в файл acad.dce, а так же трудности с осуществлением дизайна окон (в сложных окнах эстетическое оформление расположения элементов довольно затруднено). Для облегчения программирования диалоговых окон и существуют специальные программы наиболее удачные из которых мы и рассмотрим в этой статье.

DCL Code Generator

разработчик MetroTech Solutions

DCL Code Generator v.1.01

Данная программа (рис. 1) представляет собой lisp-приложение, работающее в среде AutoCAD. Как видно на рисунке, идея работы с диалогом состоит в перемещении элементов из одной колонки (базовые элементы DCL) в другую (DCL-элементы текущего диалога). Важным является возможность просмотра диалога, а также файла, содержащего сообщения об ошибках ACAD.DCE прямо из DCL Code Generator. Не смотря на то, что программа shareware, она позволяет записывать результаты работы в файл внутреннего формата с расширением dcg, что бы затем вернуться к редактированию.


Рис. 1. DCL Code Generator v.1.01

Не смотря на то, что версия 1.01 рассчитана на AutoCAD R12, она вполне нормально (спасибо Autolisp) работает и под AutoCAD R14, AutoCAD 2000 и последующими версиями AutoCAD. Недостает только новых функций DCL (а таковых не много – text_part, concatination и paragraph) и возможности загрузить DCL-файл – здесь используется WCEDIT (exp-приложение для AutoCAD R12 DOS). Справка к DCL Code Generator переведена мною в WinHelp формат и включена в комплект, который можно скачать ниже.

Скачать DCL Code Generator 1.01.

В настоящее время поддержка данной программы прекращена разработчиком. В сети так же можно встретить версию DCL Code Generator 2.0 , но это урезаная DEMO-версия без возможности сохранения созданных диалогов.

Protobox

разработчик CADGINEERING Consulting

Еще один редактор DCL-файлов, работающий внутри AutoCAD. Реализован в двух вариантах – как приложение Autolisp (PBmain.lsp), и Visual Lisp-приложение (PBmain.vlx), добавлена поддержка новых функций DCL, можно создавать и редактировать свои DCL-обьекты (Прототипы) а так же подсистемы (к примеру указывать позволяет работать с несколькими блоками как с одним). Кроме этого приложение может генерировать загружающий DCL файл на Lisp или С, а так же записывать файл с перечнем диалогов, их имен, ключевых слов и меток.


Рис. 2. Protobox v.2.2

К сожалению версия 2.2 не может загружать уже созданные DCL-файлы (на выбор предлагается загрузить example.dcl, DDMODES.DCL и DDCHPROP.DCL, но я подозреваю, что они включены в исходный код редактора).

Скачать Protobox v.2.2

DCL&Lisp Generator

Разработчик Kieu Minh Tuan

В отличии от встроенной в AutoCAD среды разработки VisualLisp IDE, которая поддерживает создание файлов диалоговых окон DCL в текстовом редакторе, DCL&Lisp Generator осуществляет визуальное создание диалогов подобно как в среде разработки Visual Basic. После создания диалога достаточно нажать на кнопку “Generate” чтобы программа автоматически сгенерировала файл определения диалога и код AutoLisp для загрузки диалога в AutoCAD. Кроме этого DCL&Lisp Generator осуществляет помощь пользователю в назначении обработчика событий и переменных для компонентов диалога. Сильной стороной программы так же является удобный редактор AutoLisp и DCL файлов, содержащий много общих AutoLisp-подпрограмм, размещенных на панели инструментов, что поможет разработчику писать код быстрее.

DCL&Lisp Generator может работать под всеми версиями AutoCAD, начиная с AutoCAD 12.


Рис. 4. DCL&Lisp Generator

Полнофункциональную облегченную версию DCL&AutoLisp Generator Lite можно скачать с сайта разработчика.

  • В отличии от полной версии DCL&AutoLisp Generator имеет следующие ограничения:
  • вы не можете создавать диалоги со столбцами, строками группами переключателей и списками изображений (ImageList).
  • Панель инструментов позволяет вставлять код AutoLisp только для функций getpoint и drawline.
  • не поддерживается опция Drawing2Lisp, которая позволяет конвертировать чертежные примитивы из чертежа AutoCAD в код AutoLisp.

ObjectDCL

разработчик изначально 3rd Day Software, теперь DuctiSoft Inc.

В пояснении к этой программе автор писал, что будучи студентом ему приходилось часто делать программы с диалоговыми окнами. Бедность средств отладки настолько его замучила, что он написал свой DCL интерфейс, который уже на мой взгляд является серьезной альтернативой стандартному DCL.

Посудите сами. Все виды диалогов применительно к AutoCAD можно разделить на четыре группы:

  1. Modal – эти диалоги поддерживаются стандартным DCL. Пользователь не может выполнить никакой операции в AutoCAD до закрытия диалогового окна.
  2. Modeless – В этом случае пользователь может выполнять операции в AutoCAD, но диалоговое окно будет оставаться на экране и ждать пользовательского ввода (как плавающая панель инструментов).
  3. Dockable – диалог, который можно разместить на панели AutoCAD.
  4. Configuration Tab – позволяет пользователю создавать собственную панель в диалоге настройки AutoCAD.

Помимо всех перечисленных выше типов диалогов ObjectDCL позволяет встраивать в диалог такие элементы как календарь, таблицы, древовидные структуры и использовать возможности ObjectARX.

Новым так же является подход к программированию диалоговых окон. В ObjectDCL диалоги программируются в соответствии с принципами визуального программирования ( т. е. так как в Delphi или Visual C++ ), о чем наглядно говорит даже сам вид редактора ObjectDCL, напоминающий редакторы языков визуального программирования. Элементы перетаскиваются на рабочее поле с левой панели, а на правой панели отображаются их свойства.

Расмотрим перечень основных инструментальных средств доступных в ObjectDCL:

  • Label – аналог директивы Text в DCL
  • TextButton – аналог директивы Button в DCL
  • GraphicButton – отображает bmp,ico или jpg-файл
  • Frame – аналог директивы BoxedRow и BoxedColumn в DCL
  • TextBox – аналог директивы Edit_box в DCL
  • CheckBox – аналог директивы Toggle в DCL
  • OptionButton – аналог директивы Radio_Button в DCL
  • ComboBox – аналог директивы Popup_list в DCL
  • ListBox – аналог директивы List_box в DCL
  • ScrollBar – аналог директивы Slider в DCL
  • SliderBar – развите ScrollBar, более удобно позволяет указать с помощью мыши числовое значение.
  • PictureBox – отображение рисунка предопределенного пользователем при создании диалога.
  • TabControl – отображение таблиц (типа картотечных закладок)
  • MonthPicker – календарь
  • TreeControl – отображает древовидные структуры
  • Rectangle – декоративный элемент в виде прямоугольника
  • ProgressBar – отображает визуально время оставшееся до завершения выполнения операции
  • SpinButton – используется совместно с TextBox
  • UrlLink – ссылка на URL в диалоговом окне
  • AngleSlider – отображает выбранный угол в градусах
  • BlockView – позволяет отображать блоки, встроенные в текущий чертеж
  • SlideView – эквивалент Image и Image_button в DCL

Теперь о том, как это работает:
ObjectDCL состоит из двух частей – визуального редактора (приложения Windows) и загрузчика ObjectDCL ARX-runtime, который позволяет загружать скомпилированные диалоговые окна (файлы с расширением ODC). Редактор предназначен только для создания диалогов, а загрузчик должен быть в каждой системе, где эти диалоги должны работать.


Рис. 4. Среда разработки ObjectDCL

В настоящий момент ObjectDCL поддерживает AutoCAD 2004-2008, включая AutoCAD 2008 64-битный. Последняя версия ObjectDCL 2007 также включает ObjectDCL Distribution Kit – аналог загрузчика ObjectDCL.arx для распространения вместе с программами, разработанными с помощью ObjectDCL

Скачать ObjectDCL и ObjectDCL ARX-runtime

OpenDCL

В 2006 году Chad Wanless, владелец 3rd Day Software, открыл код своего программного продукта ObjectDCL 3.0 на условиях GNU-лицензии. Таким образом OpenDCL является результатом серьезной переработки кода ObjectDCL 3.0 сообществом разработчиков, которые исправили существовавшие баги, добавили новые возможности и внесли множество изменений.

В настоящий момент доступен OpenDCL версии 5.0, который поддерживает создание визуального пользовательского интерфейса для AutoLISP и Visual LISP в версиях AutoCAD от 2004 до 2008. Как и ObjectDCL, OpenDCL состоит из редактора и ObjectARX-приложения (runtime). Редактор позволяет вам создавать и модифицировать проекты диалогов и сохранять их в .odcl (или .odcl.lsp) файлы для распространения вместе с вашими AutoLISP или Visual LISP приложениями. ObjectARX-приложение (OpenDCL.16.arx или OpenDCL.17.arx файл) так же должно распространяться вместе с вашим приложением и загружаться в AutoCAD чтобы отображать диалоги, определенные .odcl (или .odcl.lsp) файлами.


Рис. 5. Среда разработки OpenDCL

OpenDCL доступен для загрузки в виде двух пакетов, один для распространения вместе с вашим приложением, а другой – среда разработки. Скачать их можно с сайта OpenDCL. Более подробную информацию о OpenDCL вы можете найти в статье “OpenDCL, как расширение возможностей DCL в AutoCAD”

Advertisements