10 - 2000

AutoCAD Map 2000 + LDD как инструментальная объектно-ориентированная ГИС

Сергей Гончаренко, Михаил Гуральник, Сергей Соколенко

Когда мы рассказываем потенциальным пользователям о продуктах компании Autodesk, и прежде всего о ее флагманских продуктах для ГИС и планировки — AutoCAD Map 2000 и Land Developer Desktop (включая Survey и Civil Design), нас очень часто спрашивают о том, можно ли и насколько просто расширить эти продукты, приспособить их для своих конкретных задач… Это правомерный и правильный вопрос, а для ГИС такая его постановка оправдана вдвойне, так как пользователю нужен не инструментальный пакет, сколь бы мощными ни были его базовые возможности, а именно прикладная ГИС-система.

Невозможно кратко рассказать о действительно мощных и гибких средствах расширения. Отметим только основные моменты и возможности.

Компания Autodesk была одним из пионеров открытых архитектур. AutoCAD всегда отличался уникальной, беспрецедентной открытостью и возможностями расширения. Это одна из главных причин его феноменального успеха.

AutoCAD — это как бы двуликий Янус. На сегодняшний день можно утверждать, что весь известный пользователям (непрограммистам) AutoCAD (при всей мощи) — это только краешек, верхушка айсберга, так сказать, «видимость». А его «скрытая за кадром» сущность — это открытая объектная архитектура ядра, базовой платформы. Именно этот «фундаментальный переход на объектную технологию» (так и написано!), как подчеркивается в материалах фирмы, и составляет самую главную черту нового поколения продуктов Autodesk, получивших номер 2000. Здесь — вершки и корешки. И несмотря на то что большинство пользователей этого даже не увидят, Autodesk — эта поистине великая фирма — поддерживает уникальную открытость архитектуры AutoCAD, возможности расширения, поскольку этого требует системная методология, в этом залог, предпосылка его взрывного развития, появления огромного числа приложений. И в этом — отличие от многих «мировых» ГИС, которые придут к такой архитектуре лишь через несколько лет... Можно сказать, что AutoCAD — это система не столько для пользователей, сколько для разработчиков. Только начинают они не с нуля (С++), а с мощнейшей библиотеки классов. А пользователям предназначены приложения над AutoCAD или Map.

Именно на этом пути с помощью открытой компонентной архитектуры можно разрешить диалектическое противоречие современных программных систем, связанное с попытками достижения двух взаимно противоположных целей, — противоречие между мощью и универсальностью, с одной стороны, и размером, стоимостью, необходимостью специализированных операций конкретного пользователя — с другой.

Итак, абсолютно все в AutoCAD — от примитивов до элементов интерфейса — предоставляется разработчику как иерархия объектов (классов), их свойств и методов. Со всеми этими объектами можно не только работать с помощью псевдокомпилируемых языков — Visual Lisp и Visual Basic (на них нельзя создавать собственные объекты), но и создавать высокоэффективные откомпилированные программы (arx — DLL) и собственные объекты с помощью Visual C++ 6.0 и дополнительной среды и библиотеки классов ObjectARX.

Разработчики могут добавлять в AutoCAD собственные объекты — и в дальнейшем работа с ними ничем не будем отличаться от работы со встроенными примитивами. Можно даже реализовать перенос уже готовых объектных приложений на платформу AutoCAD, встроить их. Современное ПО для AutoCAD структурируется не только по функциональному, но и по объектному принципу, то есть поставка в виде объектов скоро станет обычным делом. Видимо, вскоре появятся сотни самых разнообразных пользовательских (заказных) объектов, доступных при наличии небольших программных модулей (технология, чем-то напоминающая известную технологию plug-in).

У этих объектов может быть свое, сколь угодно сложное поведение при редактировании и запросах (в том числе учет контекста). Например, в ГИС инженерных сетей можно иметь дело не с блоками или полилиниями, а с колодцами, участками газопроводов, задвижками и т.д. AutoCAD стал как бы объектной графической СУБД, позволяя работать не только с декларативной (чисто графической), но и с процедурной (поведенческой) информацией, обеспечивая в объектах единство процедурного и декларативного знания. Происходит как бы интеграция, «сращивание» ГИС, развитых СУБД, систем имитационного моделирования.

На логическом уровне можно считать, что «поведение» хранится в чертеже, хотя это DLL определенного вида. Они подгружаются только тогда, когда встречается соответствующий объект, — так называемая загрузка по требованию (on demand). Интересно, что «поведение» может быть разделено на две части: интерфейс пользователя и поддержку отрисовки (arx) и стандартного редактирования объекта (dbx). Без первой части нельзя создать новый объект, но можно работать с существующими. А при отсутствии второй части объекты превращаются в так называемые прокси, объекты-представители, которые только видимы, но недоступны для редактирования. При этом возможны различные степени, уровни защиты — разработчик может разрешить или запретить те или иные операции. (Таким образом, кстати, впервые решается проблема защиты dwg-файлов от редактирования.)

У заказных объектов обрабатывается каждая отдельная ручка (но все ручки одного цвета). Можно даже ввести свои привязки. Можно запрещать отдельные универсальные команды — Break, Explode. Можно добавлять к примитиву свои поля, которые хранятся в нем же (плюс свои функции). Можно реализовать дерево объектов: выбор — подсветка на карте плюс работа с OPM. В OPM все надо программировать, кроме немногого.

Кроме того, можно (и нужно) работать с объектной моделью через ActiveX(OLE)-интерфейс (для VBA, Visual Lisp, Visual C++). Хотя она беднее, чем COM-объектная модель ObjectARX, в объектной модели ActiveX есть кое-что, чего нет в объектной модели ObjARX. Естественно, существует возможность создавать и собственные ActiveX-объекты, с которыми можно будет работать на VB.

Объектная технология, реализованная в продукте ObjectARX, — это предпосылка и залог взрывного роста приложений. Собственно, по пути этой технологии и пошло развитие как самого AutoCAD (сплайны, мультилинии, эллипсы, растры и т.д.), так и приложений к нему.

Полностью объектными стали AutoCAD Map 2000, CAD Overlay 2000 и Land Developer Desktop. Речь идет не просто об объектной модели, которая поставляется бесплатно «в той же коробке» и ActiveX-интерфейсы которой доступны из VBA, Visual Lisp, C++. Кроме того, имеется среда разработки для профессиональных программистов, участников сети ADN. Продается специальная лицензия на AEC Object Modeling Framework для LDD, позволяющая создавать высокоэффективные приложения для LDD на основе богатой библиотеки классов.

Интересно, что в пакете компании Autodesk — Actrix — реализованы так называемые активные формы, то есть готовые объекты. Очевидно, что эта технология будет встроена в следующее поколение AutoCAD.

Несколько слов об отечественных разработках. Подразделение GEOCAD Systems АО «АРКАДА» в сентябре выпускает версию пакета «Топокад» для AutoCAD 2000, где отечественные линейные топографические условные знаки будут представлены как объекты, то есть в них будет заложена логика отрисовки знаков и их модификации при редактировании с учетом контекста. Анонсированы также объектные версии приложений на основе AutoCAD Map для предприятий, эксплуатирующих газовые сети, — ГАЗКАД и для предприятий электросвязи — «Телеком».

Нельзя также не отметить книги, пособия по программированию для современного AutoCAD (как переводные, так и отечественные), курсы, сеть авторизованных системных центров, в частности по ГИС, организацию обмена опытом. Ну и, конечно, результатом всего этого становится существование работоспособных коллективов разработчиков, создающих необходимые пользователям продукты и системы.

В целом преимущества объектного подхода особенно очевидны при создании ГИС для сложных предметных областей, например инженерных коммуникаций, и, видимо, в ближайшее время «мировая виртуальная корпорация» разработчиков приложений для AutoCAD, AutoCAD Map и Land Developer Desktop выпустит на рынок десятки новых пакетов для ГИС, созданных по объектной технологии.

Все это означает качественно новый уровень программного обеспечения, компонентную архитектуру систем, расширяемость и развитие.

«САПР и графика» 10'2000