Для ОС Windows фирма Microsoft с начала 90-х гг. развивала технологии, которые бы позволили разрабатывать модульные программы таким образом, чтобы отдельные модули можно было писать на различных языках программирования, чтобы они были легко заменяемыми и пригодными для использования в распределенных приложениях. В сформировавшемся виде эти технологии получили название СОМ (ComponentObjectModel) - модель компонентных объектов. Модель СОМ описывает, как в Windows следует оформлять объекты на уровне исполняемых файлов, а не на уровне исходного текста на языке программирования. Важнейшим понятием в СОМ является понятие "интерфейс" - это совокупность методов, которая может быть реализована в различных объектах, но обязательно соответствует опубликованному описанию этого интерфейса (в нем задаются прототипы методов интерфейса).
Когда разработчики действуют на основе спецификации СОМ, то получаются легко наращиваемые, переносимые и доступные объекты (исполняемые файлы). Например, все объекты СОМ могут быть доступны из разных языков и с разных (в т.ч. удаленных) рабочих мест. Кроме того, программисты имеют право выбора своего языка для разработки объектов СОМ. Единственным требованием является поддержка языком программирования генерации двоичной таблицы виртуальных функций (vTable) объекта СОМ. Сейчас почти все новые системные библиотеки функций фирма Microsoft поставляет в виде объектов СОМ (например, библиотека DirectX), а не в виде API для языка Си.
Среди языков, из которых возможен доступ к объектам СОМ, до недавнего времени исключением являлся VisualBasic, не поддерживающий таблиц виртуальных функций. Из этого языка можно было обратиться только к единственному стандартному интерфейсу с именем IDispatch. Этот интерфейс обеспечивает альтернативный способ доступа к СОМ-объекту для клиентов, которые не могут явно обратиться к интерфейсам объекта, содержащимся в vTable. В интерфейсе IDispatch есть методы, позволяющие узнать, какие именно методы есть в данном СОМ-объекте, а затем вызывать эти методы по именам. СОМ-объекты с интерфейсом IDispatch часто называются объектами автоматизации (т.к. первоначально они применялись для управления готовыми программными пакетами из различных внешних программ, например, для управления MSWord из программы на VisualBasic). Объекты автоматизации работают довольно медленно, но их реализация несколько проще по сравнению с "полноценными" объектами СОМ.
В архитектуре КОМПАС 3D предусмотрена поддержка объектов автоматизации. Функции, доступные для вызова из DLL, можно также вызывать в форме методов различных объектов автоматизации (их количество составляет несколько десятков). Действия, выполняемые пакетом КОМПАС 3D, конечно, при обоих способах вызова выполняются одни и те же. Некоторые возможности КОМПАС 3D недоступны в виде функций DLL, а открыты только в форме объектов автоматизации или полноценных СОМ-объектов. В основном эти возможности касаются функций трехмерного моделирования в подсистеме КОМПАС-3D.
При использовании объектов автоматизации требуются специальные заголовочные модули с описанием методов объектов автоматизации. Все необходимые файлы входят в комплект средств КОМПАС-МАСТЕР.
В данном учебном курсе основное внимание уделяется использованию КОМПАС-МАСТЕР посредством объектов автоматизации из среды разработки Delphi 7. Работа с объектами автоматизации несколько упрощает изучение КОМПАС-МАСТЕР, т.к. позволяет рассматривать доступные функции КОМПАС 3D отдельными группами и контролировать их использование в исходном тексте программ, учитывая назначение объектов автоматизации. При необходимости переход от использования объектов автоматизации к работе с функциями библиотек DLL выполняется не слишком сложно, т.к. имена методов объектов автоматизации и функций DLL в большинстве случаев похожи или полностью совпадают.
1.4 Анализ разработок в исследуемой сфере
Дополнительные модули КОМПАС 3D, написанные с использованием КОМПАС-МАСТЕР, можно разделить на две группы - прикладные библиотеки и приложения.
Прикладные библиотеки предназначены для автоматизации выполнения чертежей стандартных деталей. Одна и та же деталь, например, шайба или болт, может иметь различные размеры, определяемые ГОСТом. В принципе, можно было бы хранить изображения деталей во фрагментах чертежей, но не всегда удается выполнить масштабирование детали до нужных размеров - некоторые размеры могут меняться непропорционально. Прикладные библиотеки позволяют строить изображения стандартных деталей (возможно, различные виды детали), упрощая пользователю выбор их размеров из допустимого набора. Прикладная библиотека обычно предлагает выбрать деталь из реализованного в библиотеке набора, потом показывает диалоговое окно для указания параметров конкретной детали, а затем предлагает пользователю указать местоположение и ориентацию детали на чертеже.
Различных стандартных деталей в ГОСТе определено довольно много, поэтому задача разработки новых прикладных библиотек остается актуальной. Цель настоящего курса как раз и состоит в изучении возможностей, предоставляемых КОМПАС-МАСТЕР для написания прикладных библиотек.
К приложениям на базе КОМПАС-МАСТЕР относят более сложные, по сравнению с прикладными библиотеками, программные продукты. В них может выполняться большое количество расчетов, автоматическая подготовка целых чертежей, в том числе сборочных, формирование различных вспомогательных документов. Примерами подобных приложений являются продукты, реализующие методики проектирования изделий определенного класса - пружин, валов с произвольным количеством ступеней, зубчатых передач и др. Расчеты, выполняемые приложениями, могут быть достаточно сложными. Но конечной целью применения таких продуктов остается получение конструкторской документации, и для формирования графических документов с помощью средств КОМПАС-МАСТЕР они используют систему КОМПАС 3D.
1.4.1 Прикладные библиотеки КОМПАС 9
В комплект поставки демонстрационной версии КОМПАС 9 входит несколько прикладных библиотек. Часть из них тоже являются демонстрационными версиями, позволяющими ознакомиться с назначением библиотеки и увидеть перечень реализованных в ней деталей, но не выполняющими построений на чертежах. Файлы прикладных библиотек, хотя и являются обычными динамическими библиотеками Windows, обычно имеют расширение *.RTW, а не *.DLL. Прикладные библиотеки чаще всего располагаются в папке C:\ProgramFiles\KOMPAS 9 DemoXLibs (не следует путать их с библиотеками фрагментов * .LFR, в которых хранятся готовые части чертежей, а не исполняемый код, написанный с помощью КОМПА-СМАСТЕР).
Некоторые прикладные библиотеки являются достаточно объемными продуктами и располагаются в отдельных подкаталогах внутри C:\ProgramFiles\KOMPAS3DDemo\Libs. Эти библиотеки могут включать в себя еще несколько DLL и различные файлы данных.
Просматривая содержимое папки библиотек, можно заменить вложенные папки LOAD и файлы *.LOA. Это текстовые файлы, в которых прикладные библиотеки хранят таблицы параметров стандартных деталей. Такой подход позволяет при необходимости расширить или исправить список параметров деталей, не изменяя самой прикладной библиотеки.
Для работы со стандартными библиотеками в КОМПАС 3D предназначен Meнеджер библиотек, вызываемый из меню Сервис. Подключенные библиотеки перечисляются в отдельном разделе в нижней части меню Сервис. Если библиотека больше не нужна, то ее можно отключить, чтобы освободить занятую библиотекой память.
При выборе команды, соответствующей подключенной библиотеке, пользователь получает возможность выбора одной из команд этой библиотеки. Иерархически упорядоченный перечень команд библиотеки обычно называется структурой библиотеки. Структура библиотеки поразному выглядит в различных режимах работы библиотеки (они переключаются в окне Менеджера библиотек командами меню Библиотека).
В режиме Диалог на экране показывается диалоговое окно. В левой части выводится список команд текущей библиотеки, возможно, сгруппированных по разделам. В правой части отображаются слайды, облегчающие поиск нужной команды.
В режиме Меню структура показывается в виде стандартного иерархического меню Windows.
В режиме Окно структура библиотеки отображается в немодальном окне Windows, которое не блокирует работу с основным окном КОМПАС 3D.
В режиме Панель структура библиотеки, как и в режиме Окно, выводится в немодальном окне Windows. Но несколько по-другому выглядит само окно - оно разделено на три части, относительные размеры которых можно изменять.
После выбора команды библиотеки обычно появляется окно для указания параметров построения стандартной детали. Это окно может содержать параметры размеров, параметры для выбора видов и др. Показанное на рисунке 1.1 окно является достаточно сложным, оно позволяет указать параметры не отдельной детали, а их совокупности - стандартного крепежного изделия (например, шпилька-шайба-гайка-гайка). Конструкторская библиотека содержит готовые наборы крепежных изделий; возможно сохранение созданных пользователем наборов и их использование в последующих сеансах работы ( рисунок 1.1)/