Среди методов наиболее важными являются три следующих:

• 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.

Таблица 6.7. Некоторые дополнительные интерфейсы API КОМПАС

Пример программной реализации трехмерной операции

Рассмотрим выполнение трехмерной формообразующей операции вручную (то есть в самом КОМПАС) и с помощью воображаемого подключаемого модуля. В качестве примера выберем обычную операцию выдавливания на основе несложного эскиза, содержащего изображение окружности. Раздел var функции, реализующей выполнение операции, должен выглядеть подобно листингу 6.1.

Листинг 6.1. Раздел объявлений функции построения операции выдавливания

var

doc3 : ksDocument3D;

// интерфейс трехмерного документа

doc2 : ksDocument2D;

// интерфейс графического документа

// используется для создания изображения в эскизе

iPart : ksPart;

// интерфейс детали

planeXOY : ksEntity;

// интерфейс плоскости, на которой будет размещен эскиз

iSketch : ksEntity;

// интерфейс эскиза

iSketchDef : ksSketchDefinition;

// интерфейс параметров эскиза

iBossExtrusion : ksEntity;

// интерфейс операции выдавливания

iBossDef : ksCutExtrusionDefinition;

// интерфейс параметров операции выдавливания

color : ksColorParam;

// интерфейс параметров цвета операции выдавливания

Предположим, что документ-деталь и эскиз с окружностью радиусом 40 мм на плоскости XY уже созданы (это значит, что объекты doc3, doc2, planeXOY, iSketch, iSketchDef уже созданы и проинициализированы).

Для выполнения операции выдавливания пользователь на панели инструментов Редактирование детали нажимает кнопку Операция выдавливания. При этом на панели свойств, которая по умолчанию закреплена в нижней части окна программы, отображаются вкладки с настройками данной операции (некоторые значения установлены по умолчанию), в результате чего пользователь получает возможность изменять эти настройки (рис. 6.15).

Рис. 6.15. Настройки операции выдавливания на панели свойств

Программно это все реализуется следующим образом (листинг 6.2).

Листинг 6.2. Получение интерфейсов операции выдавливания и ее параметров

// iPart – указатель на объект класса ksPart,

// верхний элемент дерева построения детали

// создание интерфейса операции выдавливания

// с помощью метода ksPart::NewEntity,

// которому передаем идентификатор o3d_bossExtrusion

iBossExtrusion := ksEntity(iPart.NewEntity(o3d_bossExtrusion));

if (iBossExtrusion <> nil) then

begin

// если создание прошло успешно

// инициализируем интерфейс настроек операции выдавливания

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

end;

end;

Несколько замечаний. Данный фрагмент кода будет работать лишь в версиях КОМПАС-3D V8 Plus или выше, поскольку в этих версиях появилась возможность многотельного моделирования. При написании программ для более ранних версий КОМПАС, в качестве первой (подчеркиваю – лишь первой) операции выдавливания вместо константы типа o3d_bossExtrusіon следует использовать o3d_baseExtrusіon, то есть базовую операцию выдавливания (так как в КОМПАС-3D V8 и более ранних версиях в детали могло быть лишь одно тело, имеющее общую базовую формообразующую операцию). Для всех следующих операций нужно применять o3d_bossExtrusіon, как и в КОМПАС-3D V8 Plus и более поздних версиях. Еще одно отличие версии КОМПАС-3D V8 Plus от предыдущих состоит в названии класса для получения определения интерфейса (параметров операции). При многотельном моделировании можно сразу использовать ksBossExtrusіonDefіnіtіon, в более ранних версиях КОМПАС первым всегда должен применяться интерфейс ksBaseExtrusіonDefіnіtіon, а все следующие за ним – ksBossExtrusіonDefіnіtіon. Это, тем не менее, не приводит к серьезным усложнениям, так как методы и свойства этих двух классов идентичны.

Все сказанное касается и других формообразующих операций (за исключением вырезания, которое по определению не может быть базовой операцией). Из чего следует, что в более ранних версиях КОМПАС и для кинематической операции, и для операции по сечениям первой всегда следует реализовать базовую операцию.

Совет

Даже если вы создаете плагин для версии КОМПАС-3D V8 Plus или выше, все равно желательно не забывать о первой операции, как о базовой. Мало ли в какой версии КОМПАС будут работать пользователи с

Вы читаете КОМПАС-3D V10 на 100 %
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату