Особенности использования КОМПАС-МАСТЕР

 

КОМПАС-МАСТЕР 5-это ориентированные на прикладного программиста инструментальные средства разработки дополнительных модулей (прикладных библиотек и приложений) для программного пакета КОМПАС 3D. КОМПАС-МАСТЕР предназначен для организации вызова функций КОМПАС 3D из программ на языках программирования Си++, Паскаль, Бейсик. С помощью КОМПАС-МАСТЕР программист может выполнить любые действия, доступные пользователю КОМПАС 3D в интерактивном режиме.

В программах на Паскале и Си++ часто приходится пользоваться готовыми функциями и процедурами, хранящимися в библиотеках функций. Вместе с компиляторами распространяются как стандартные библиотеки функций (математические функции, функции ввода/вывода, контейнерные библиотеки и др.), так и библиотеки, разработанные для конкретной среды программирования (например, VCL для Borland Delphi и C++ Builder). Большое количество библиотек разрабатываются различными фирмами и предлагаются как самостоятельные продукты.

Наиболее простым способом использования библиотек является статическая компоновка, когда связи исполняемого файла программы с библиотечными функциями создаются до начала работы программы и впоследствии не изменяются.

При статической компоновке для использования библиотечных функций в Объектном Паскале требуется библиотечный модуль *.dcu. Этот модуль подключается к модулям разрабатываемой программы с помощью служебного слова uses. В результате подключения модуля можно пользоваться процедурами, функциями, классами и переменными, описанными в интерфейсной части подключенного модуля. Реализация этих процедур и функций содержится в файле *. dcu в двоичном виде. В Delphi при большом количестве связанных по смыслу модулей они могут объединяться в пакеты - файлы с расширением *. dcp, например, vcl50. dcp.

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

При сборке проекта компилятор генерирует вызовы библиотечных функций в соответствии с их описанием, а компоновщик добавляет в исполняемый файл приложения двоичный код этих функции из dcu- или dcp-файлов.

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

С библиотеками статической компоновки возникает проблема - трудно обеспечить модульность программ на уровне исполняемых файлов. При использовании многими программами код библиотечных функций дублируется. Встраивание функций внутрь исполняемых файлов не позволяет безболезненно обновлять версии библиотек. Для обновления статически компонуемых функций обязательно придется снова выполнять сборку приложения.

В ОС Windows и во многих других современных операционных системах поддерживается модульность приложений на уровне операционной системы. Для этого есть несколько подходов. Один из них - применение динамически загружаемых библиотек (они называются также просто динамическими библиотеками, DLL) Приложе-ние может состоять не из единственного исполняемого файла, а из некоторого мно-жества таких файлов. Конечно, есть головной ЕХЕ-файл, запускаемый пользователем, а также может быть несколько файлов динамических библиотек (обычно с расширениями *.DLL). Эти библиотеки содержат функции, доступные для вызова из различных приложений. Загрузка и выгрузка DLL из оперативной памяти выполняется операционной системой без вмешательства приложения. Несколько приложений могут одновременно пользоваться одной и той же динамической библиотекой. Такое использование функций называется динамической компоновкой.

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

Для разработки программы в Delphi на Объектном Паскале с использованием функций DLL требуются 2 файла: (1) заголовочный модуль *.dcu с описанием библиотечных функций в интерфейсном разделе и с "заглушками" функций в разделе реализации и (2) файл *. dll с реализацией библиотечных функций. При сборке проекта компилятор оформляет вызов в соответствии с описанием функции, а компоновщик добавляет в исполняемый файл код функции-заглушки из раздела реализации заголовочного модуля. Функция-заглушка сама по себе сложных действий не выполняет, она организована таким образом, что либо загружает DLL и вызывает из нее соответствующую функцию, либо, если DLL загружена, вызывает из нее функцию сразу. Длительность вызова функции из DLL выполняется ненамного дольше вызова статически компонуемой функции. Библиотека DLL (файл *. dll) может присутствовать на ПК в единственном экземпляре - либо в каталоге WINDOWS\SYSTEM, если пользователей у этой DLL очень много, либо в каталоге основного пакета, если она используется только этим пакетом и его дополнительными модулями.

КОМПАС 9 включает в себя набор библиотек DLL, в которых реализована функциональная часть системы для работы с моделью чертежа (т.е. для создания и обработки структур данных, представляющих чертежи и другие графические документы), математические функции с реализацией различных алгоритмов вычислительной геометрии, различные функции для формирования и обработки чертежей. В исполняемом файле KOMPASW.EXE реализован пользовательский интерфейс системы, а по мере необходимости для выполнения команд пользователя вызываются необходимые функции из различных DLL. В состав КОМПАС-МАСТЕР входят заголовочные модули для основных DLL, входящих в состав КОМПАС 5. Общее количество импортируемых функций - около 300, их можно вызывать из программ на Си++ и Delphi. Описание этих функций содержится в файле помощи APPTOOLS. HLP.

По мере усложнения программных продуктов стали проявляться некоторые недостатки DLL. Во-первых, оказалось не слишком удобно заменять версии DLL - надо жестко соблюдать порядковые номера функций внутри этих DLL и имена файлов самих DLL должны быть одинаковыми, так что версии по именам файлов становятся неразличимы. Во-вторых, вызов функции из DLL очень похож на вызов функции из статической библиотеки, за исключением того, что при вызове выполняется проверка, была ли загружена эта DLL. После загрузки DLL попадает в область памяти, отведенную для приложения. Это обеспечивает высокую скорость вызова динамически компонуемых функций, но затрудняет разработку распределенных приложений, в которых библиотеки функций и использующие из приложения могут располагаться на разных компьютерах локальной сети или Интернет. Еще одна серьезная проблема возникла в связи с распространением объектно-ориентированного подхода. В DLL можно помещать классы, а не только отдельные функции. Но внутреннее устройство классов различных языков программирования довольно сильно отличается. Поэтому с помощью DLL оказывается невозможно использовать различные языки для написания объектно-ориентированных программ, например, написать на Си++ классы для использования из программ на Delphi или Visual Basic.

Для ОС Windows фирма Microsoft с начала 90-х гг. развивала технологии, которые бы позволили разрабатывать модульные программы таким образом, чтобы отдельные модули можно было писать на различных языках программирования, чтобы они были легко заменяемыми и пригодными для использования в распределенных приложениях. В сформировавшемся виде эти технологии получили название СОМ (Component Object Model) - модель компонентных объектов. Модель СОМ описывает, как в Windows следует оформлять объекты на уровне исполняемых файлов, а не на уровне исходного текста на языке программирования. Важнейшим понятием в СОМ является понятие "интерфейс" - это совокупность методов, которая может быть реализована в различных объектах, но обязательно соответствует опубликованному описанию этого интерфейса (в нем задаются прототипы методов интерфейса).

Когда разработчики действуют на основе спецификации СОМ, то получаются легко наращиваемые, переносимые и доступные объекты (исполняемые файлы). Например, все объекты СОМ могут быть доступны из разных языков и с разных (в т.ч. удаленных) рабочих мест. Кроме того, программисты имеют право выбора своего языка для разработки объектов СОМ. Единственным требованием является поддержка языком программирования генерации двоичной таблицы виртуальных функций (vTable) объекта СОМ. Сейчас почти все новые системные библиотеки функций фирма Microsoft поставляет в виде объектов СОМ (например, библиотека DirectX), а не в виде API для языка Си.

Среди языков, из которых возможен доступ к объектам СОМ, до недавнего времени исключением являлся Visual Basic, не поддерживающий таблиц виртуальных функций. Из этого языка можно было обратиться только к единственному стандартному интерфейсу с именем IDispatch. Этот интерфейс обеспечивает альтернативный способ доступа к СОМ-объекту для клиентов, которые не могут явно обратиться к интерфейсам объекта, содержащимся в vTable. В интерфейсе IDispatch есть методы, позволяющие узнать, какие именно методы есть в данном СОМ-объекте, а затем вызывать эти методы по именам. СОМ-объекты с интерфейсом IDispatch часто называются объектами автоматизации (т.к. первоначально они применялись для управления готовыми программными пакетами из различных внешних программ, например, для управления MS Word из программы на Visual Basic). Объекты автоматизации работают довольно медленно, но их реализация несколько проще по сравнению с "полноценными" объектами СОМ.

В архитектуре КОМПАС 3D предусмотрена поддержка объектов автоматизации. Функции, доступные для вызова из DLL, можно также вызывать в форме методов различных объектов автоматизации (их количество составляет несколько десятков). Действия, выполняемые пакетом КОМПАС 3D, конечно, при обоих способах вызова выполняются одни и те же. Некоторые возможности КОМПАС 3D недоступны в виде функций DLL, а открыты только в форме объектов автоматизации или полноценных СОМ-объектов. В основном эти возможности касаются функций трехмерного моделирования в подсистеме КОМПАС-3D.

При использовании объектов автоматизации требуются специальные заголовочные модули с описанием методов объектов автоматизации. Все необходимые файлы входят в комплект средств КОМПАС-МАСТЕР.

В данном учебном курсе основное внимание уделяется использованию КОМПАС-МАСТЕР посредством объектов автоматизации из среды разработки Delphi 7. Работа с объектами автоматизации несколько упрощает изучение КОМПАС-МАСТЕР, т.к. позволяет рассматривать доступные функции КОМПАС 3D отдельными группами и контролировать их использование в исходном тексте программ, учитывая назначение объектов автоматизации. При необходимости переход от использования объектов автоматизации к работе с функциями библиотек DLL выполняется не слишком сложно, т.к. имена методов объектов автоматизации и функций DLL в большинстве случаев похожи или полностью совпадают.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: