В основном, для создания полноценных подключаемых модулей достаточно методов и свойств интерфейсов API 5.
Примечание
В этом разделе рассмотрены главные интерфейсы и их методы, касающиеся только работы в трехмерном редакторе КОМПАС-3D.
Главным интерфейсом API системы КОМПАС является KompasObject. Получить указатель на этот интерфейс (если быть точным, на интерфейс приложения API 5) можно с помощью экспортной функции CreateKompasObject(). Методы этого интерфейса, главные из которых представлены в табл. 6.1, реализуют наиболее общие функции работы с документами системы, системными настройками, файлами, а также дают возможность получить указатели на другие интерфейсы (интерфейсы динамического массива, работы с математическими функциями, библиотек моделей или фрагментов и различных структур параметров определенного типа).
Описание прототипов всех приведенных функций, а также других методов, составляющих интерфейс KompasObject, вы найдете в справке по API КОМПАС. Файл этой справки размещается в каталоге SDK, находящейся в папке, в которой установлен КОМПАС (например, по умолчанию это C:\Program Files\ASCON\KOMPAS-3D V10\SDK).
Другой важный интерфейс API 5 – интерфейс документа модели ksDocument3D.
Получить его можно с помощью методов интерфейса KompasObject:
• ActiveDocument3D – для уже существующего и активного в данный момент документа;
• Document3D – если вы планируете создавать новый трехмерный документ.
Примечание
Графические документы имеют собственный интерфейс – ksDocument2D, со своими специфическими свойствами и методами. Этот интерфейс здесь не описывается, но нам не раз придется с ним сталкиваться даже при трехмерном программировании, поскольку изображения в эскизах трехмерных операций создаются именно с помощью функций, присутствующих в ksDocument2D.
Свойства (члены данных) этого интерфейса позволяют динамически управлять настройками любого трехмерного документа системы из вашего модуля. Наиболее используемые из них приведены в табл. 6.2.
Методы этого интерфейса позволяют программно управлять трехмерным документом, как сборкой и ее компонентами, так и отдельной деталью. Обратите внимание: именно управлять самим документом, но не выполнять в нем трехмерные операции! Методы, которые могут пригодиться вам при программировании подключаемых модулей, собраны в табл. 6.3.
Важнейший из перечисленных в табл. 6.3 методов – ksDocument3D::GetPart. Входящим параметром этой функции является целочисленная переменная type_, которая определяет, интерфейс какого именно компонента сборки возвращать. Данная переменная имеет несколько предопределенных значений (констант):
• plnPlace_Part (равняется –4) – метод возвращает указатель на компонент, который находится в режиме контекстного редактирования (то есть редактирования «на месте»);
• pNew_Part (–3) – создает в модели новый компонент и возвращает указатель на него;
• pEdit_Part (–2) – возвращает указатель на редактируемый компонент (с помощью библиотеки);
• pTop_Part (–1) – верхний компонент, в состав которого входит или новый, или редактируемый, или указанный компонент;
• все остальные значения (от 0 и выше) отвечают номеру компонента в дереве построения, то есть возвращается указатель на существующий в сборке компонент.
Метод ksDocument3D::GetPart возвращает указатель на интерфейс детали или компонента сборки – ksPart. Свойства и методы этого интерфейса (часть из которых приведена в табл. 6.4 и табл. 6.5) управляют состоянием компонентов сборки, они почти полностью дублируют команды контекстного меню и панели свойств, доступные пользователю при работе с тем или иным компонентом.
Как видите, все эти методы лишь управляют состоянием компонента (задают видимость, размещение, определяют, запущено ли редактирование компонента), но не дают возможность ничего создавать (выполнять операции).