Для программной реализации всех трехмерных операций, которые пользователи выполняют в трехмерных документах системы КОМПАС-3D, в API реализован единый интерфейс ksEntity – интерфейс элемента модели. Этот интерфейс можно получить с помощью метода ksPart::NewEntity, которому необходимо передать тип создаваемого элемента. Типов элементов в системе, как и в API системы, большое множество. Каждому из них отвечает своя целочисленная константа и
Члены данных интерфейса ksEntity соответствуют свойствам трехмерных элементов модели (о свойствах трехмерной модели читайте в подразд. «Свойства трехмерных объектов» разд. «Твердотельное моделирование в КОМПАС-3D» гл. 3).
Среди методов наиболее важными являются три следующих:
• Create – создает трехмерную операцию или объект вспомогательной геометрии по заданным настройкам;
• ColorParam – возвращает указатель на интерфейс настроек цвета и оптических свойств элемента;
• GetDefinition – получает указатель на интерфейс параметров объекта определенного типа (параметры данного трехмерного элемента). Именно с помощью этого метода можно получить указатель на любой интерфейс, приведенный в столбце «Интерфейс параметров» табл. 6.6.
Таким образом, создание какой-либо трехмерной операции пользовательской программой сводится к такой последовательности шагов.
1. Инициализация главного интерфейса приложения API – KompasObject. Он инициализируется один раз для всего сеанса работы программы.
2. Инициализация интерфейса трехмерного документ ksDocument3D, с последующим созданием нового документа или получением указателя на активный документ.
3. Создание компонента и получение на него указателя (интерфейс ksPart). Для сборки это может быть готовый компонент, компонент, вставленный из файла или созданный «на месте». Для детали необходимо получить указатель на компонент типа pTop_Part.
4. Создание с помощью метода ksPart::NewEntity интерфейса нужной нам операции. При этом в метод передается соответствующий идентификатор (например, для выдавливания – o3d_bossExtrusion).
5. Получение с помощью метода ksEntity::GetDefinition указателя на интерфейс параметров конкретной операции (для выдавливания этим интерфейсом является ksBossExtrusionDefinition). Настройка этих параметров необходимым пользователю образом.
6. Создание операции с помощью метода ksEntity::Create.
Кроме перечисленных, в API системы КОМПАС существует еще большое множество различных интерфейсов, отвечающих за тот или иной аспект работы с программой. Небольшая их часть описана в табл. 6.7.
Пример программной реализации трехмерной операции
Рассмотрим выполнение трехмерной формообразующей операции вручную (то есть в самом КОМПАС) и с помощью воображаемого подключаемого модуля. В качестве примера выберем обычную операцию выдавливания на основе несложного эскиза, содержащего изображение окружности. Раздел var функции, реализующей выполнение операции, должен выглядеть подобно листингу 6.1.
var
doc3 : ksDocument3D;
// интерфейс трехмерного документа
doc2 : ksDocument2D;
// интерфейс графического документа
// используется для создания изображения в эскизе
iPart : ksPart;
// интерфейс детали
planeXOY : ksEntity;
// интерфейс плоскости, на которой будет размещен эскиз
iSketch : ksEntity;
// интерфейс эскиза
iSketchDef : ksSketchDefinition;
// интерфейс параметров эскиза
iBossExtrusion : ksEntity;
// интерфейс операции выдавливания
iBossDef : ksCutExtrusionDefinition;
// интерфейс параметров операции выдавливания
color : ksColorParam;
// интерфейс параметров цвета операции выдавливания