Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текстовый документ OpenDocument.doc
Скачиваний:
76
Добавлен:
22.05.2015
Размер:
271.36 Кб
Скачать

3.2. Модели данных в IndorCad/Road

Одним из главных понятий, используемых в САПР IndorCAD, является Слой – совокупность объектов, имеющих отношение к одной поверхности (существовавшей когда-то, существующей, проектной или иной). Объекты, относящиеся к слою, могут быть точечными, линейно-протяжёнными, площадными. К точечным объектам относятся, например, съёмочные точки поверхности, дорожные знаки, деревья и кустарники, колодцы, опоры линий электропередач и т.д. К линейно-протяжённым – структурные линии рельефа, водопропускные трубы, инженерные коммуникации и т.д. К площадным объектам относятся здания, водоёмы и др. Так же к слою могут относиться абстрактные нематериальные объекты, которые не участвуют в формировании поверхности, а являются объектами, реализующими способ представления поверхности (изолинии, изоконтуры) или вспомогательными объектами (например, подписи).

IndorCAD является открытой для расширения системой. Это означает, что её возможности не ограничиваются объектами и функциональностью, заложенными в базовую программу. В системе предусмотрена возможность расширения её функциональности сторонними разработчиками, используя технологию ActiveX, поэтому этот раздел будет интересен и полезен тем, кто обладает некоторыми навыками программирования и готов участвовать в развитии этой системы.

В ядро системы встроены лишь базовые типы данных для моделирования поверхностей на основе триангуляции Делоне с ограничениями [21] (точки, структурные линии, регионы) и функции (построение поверхности по исходным данным, несколько способов отображения поверхностей, построение произвольных разрезов, формирование проектных чертежей), а так же технология подключения внешних модулей.

Архитектура IndorCAD. В процессе запуска система сканирует каталог, из которого она была запущена, и ищёт файлы, являющиеся модулями расширения IndorCAD. Каждый модуль расширения является, по сути, динамически загружаемой библиотекой Windows (DLL), имеющей расширение PLC (для идентификации того, что файл является модулем IndorCAD) и экспортирующей три процедуры: процедуру инициализации модуля, функцию получения описания модуля и процедуру завершения работы модуля. Для каждого найденного модуля, экспортирующего указанные процедуры, система запрашивает описание модуля и затем вызывает процедуру его инициализации, передав в качестве параметра указатель на объект – приложение IndorCAD.

В процедуре инициализации модуль может зарегистрировать типы данных, реализованных в данном модуле, процедуры импорта и экспорта, которые предоставляет данный модуль, добавить кнопки на панели инструментов главного окна приложения и дополнительные пункты меню главного окна. Регистрация типов данных, процедур импорта и экспорта, а так же кнопок и пунктов меню осуществляется через ActiveX-интерфейс.

Создание дополнительных объектов IndorCAD. Каждый объект IndorCAD обязан предоставить через ActiveX-интерфейс некоторый минимальный набор методов для обеспечения доступа к этому объекту. Ядро IndorCAD работает с объектами проекта и слоёв практически полностью через ActiveX-интерфейс. Создатель дополнительного объекта IndorCAD может определить поведение своего класса данных, реализовывая те или иные интерфейсы: будет ли объект данного класса отображаться в окне плана проекта; будет ли участвовать в формировании чертежа плана; должен ли объект отображаться в дереве структуры проекта; разрешена ли привязка к данному типу объекта; будет ли объект участвовать в формировании поверхности слоя, к которому он относится, и т.д. Всего насчитывается более двадцати интерфейсов, которые могут предоставлять объекты IndorCAD. Каждый из этих интерфейсов – набор нескольких процедур или функций, реализация которых в большинстве случаев достаточно тривиальна и не представляет проблем для программистов, владеющих технологией ActiveX.

Практически всегда создание нового класса данных ведётся по одной и той же схеме. В первую очередь реализуется класс, ответственный за создание экземпляра класса данных, затем в классе данных реализуется минимальный интерфейс объекта IndorCAD. Для обеспечения возможности создавать, редактировать и отображать объекты реализуется интерфейс отображения объекта в окне плана, а так же инструменты создания и редактирования свойств объектов нового класса данных. Далее идёт наращивание функциональности нового класса объектов путём реализации тех или иных интерфейсов.

Рассмотрим, как система IndorCAD использует интерфейсы внешних объектов на примере построения триангуляционной модели поверхности слоя. На уровне ядра системы предусмотрена возможность обратиться к любому объекту IndorCAD и запросить у него дерево его структуры (то есть сам объект, а так же все объекты, находящиеся в его ветви в дереве структуры проекта). Триангуляционная модель поверхности так же является объектом IndorCAD, относящимся к слою. При необходимости построить поверхность, образованную объектами слоя, объект Триангуляция "просит" свой слой выдать все объекты IndorCAD, которые данный слой содержит в себе. Все объекты слоя последовательно передаются объекту Триангуляция, которая проверяет, поддерживает ли данный объект слоя интерфейс, позволяющий ему добавлять свои данные в поверхность. Если объект не поддерживает такого интерфейса, то он игнорируется, иначе вызывается метод этого интерфейса, в который передаётся объект Триангуляция, и объект слоя может добавить в исходные данные для построения поверхности какие-либо свои данные (точки, структурные рёбра и т.д.).

После получения всех объектов считается, что все исходные данные для построения триангуляции собраны, и вызывается метод ядра IndorCAD для построения триангуляционной модели поверхности. Если у объекта, участвующего в формировании поверхности слоя, изменяются свойства, влияющие на формирование поверхности, он информирует слой о необходимости перестроить модель поверхности. При этом модель поверхности не перестраивается сразу, а только уничтожается. Построена она будет лишь по мере необходимости (например, при попытке построить сечение поверхности или отобразить её в окне плана).

Аналогичным образом работают многие другие функции IndorCAD. При отображении проекта в 3D-виде, подсистема отображения трёхмерного вида "просит" проект выдать все свои объекты, выбирая из них те, которые реализуют интерфейс отображения своих данных в 3D-вид.

Следует отметить, что практически все классы объектов, используемые в настоящее время в САПР IndorCAD, не зависят напрямую друг от друга, что позволяет, комбинируя сочетания тех или иных классов объектов, создавать различные приложения, построенные на ядре IndorCAD. Примерами таких приложений, существующих в настоящее время, являются: система подготовки топографических планов IndorCAD/Topo, система автоматизированного проектирования автомобильных дорог IndorCAD/Road [19], а также готовящиеся к выпуску системы проектирования генеральных планов IndorCAD/Site, железных дорог IndorCAD/Rail и проектирования ремонта автомобильных дорог IndorCAD/Renew.