Вопрос об операции "Сшивка поверхностей"

Автор Akew, 26.01.16, 17:37:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Akew

Имеется массив (IModelObject *) импортированных поверхностей модели (IImportedSurface).
Эти поверхности требуется объединить, насколько позволяет их топология (т.е., условия операции сшивки в КОМПАС), с помощью операции "Сшивка поверхностей" (ISurfaceSewer).

Для этого я намереваюсь:
1. Создавать ISurfaceSewer
2. Добавлять в нее эти поверхности, по одной, пока операция не будет создана (т.е., будут выбраны поверхности, которые, с "точки зрения" КОМПАСа, будут соответствовать условиям сшивки).
   Для одной операции сшивки этот цикл будет повторяться до тех пор, пока будут происходить изменения (т.е., добавления поверхностей в эту операцию).
3. Для поверхностей, которые останутся, аналогично будут создаваться новые операции сшивки.
И так далее, пока не будет обработан весь массив поверхностей.

С созданием операции "Сшивка поверхностей", п.1., все замечательно.

Для п.2, посредством метода ISurfaceSewer::get_Shells, получаю массив VARIANT оболочек (уже в виде интерфейсов IBody7 *, а не исходных IModelObject *, - уж такова реализация этого метода):

_variant_t importedSurfacesInCurrentSewer;
HRESULT hr = currentISurfaceSewer->get_Shells( &importedSurfacesInCurrentSewer );

Массив формируется, как положено. Однако, не понятно, как из IBody7 получить интерфейсы поверхностей, которые были заданы при создании операции.
Кроме того, тип данного объекта IBody7, полученного по свойству IBody7::GetType(), вернул 11009, - непонятно, что это за тип.

Спасибо всем, кто откликнется.


#1
По поводу IBody7::GetType(), вернул 11009 - ksObjectBody7 = $00002B01, вопросов быть недолжно - твёрдое тело.
IBody7 - твёрдое, вновь созданное тело и поверхности у него свои.

Akew

Цитироватьвновь созданное тело
Со вторым вопросом понятно. А как быть с первым, - как можно изменить перечень поверхностей, заданных в операции (т.е., отредактировать операцию)?


Akew

Спасибо, разобрался.

Моя ошибка была в том, что я по-привычке приводил сшиваемые поверхности к IModelObject, как я делал это в других операциях с поверхностями и гранями (в которых только так и работало), а не к IBody7, как это требуется здесь.