получение количества гибов (API7)

Автор jkl, 05.11.25, 19:12:01

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

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

jkl

Доброго времени суток. Знающие люди подскажите как можно получить количество гибов если листовое тело создано по незамкнутому контуру (сечению) и кол-во гибов если несколько гибов создано одной опирацией...

тоесть из интерфейса ISheetMetalBends я могу получить операцию "Сгиб1", а вот до Сгиб(1) и Сгиб(2) не могу добраться... направте в нужную сторону

pas2h

В данном случае наиболее простым вижу перебор всех компонентов дерева (с раскрытием узлов) в поисках сгибов. Примерный код:
//получаем файл модели
doc3D = (IKompasDocument3D)appl.ActiveDocument;           
if (doc3D == null)
    return;
Console.WriteLine(doc3D.Name);

IPart7 iPart = doc3D.TopPart;
IFeature7 iFeat = iPart.Owner;

//начальное кол-во гибов - 0
int bends = 0;

//перебираем дерево построения
foreach (var cFeat in iFeat.SubFeatures[0, true, true])
{
    //раскрываем объект дерева (если это возможно)
    if (cFeat.SubFeatures[0, true, true] != null)
    {
        //перебираем состав объекта дерева
        foreach (var sFeat in cFeat.SubFeatures[0, true, true])
        {
            //проверяем тип компонента объекта
            // 11001 - соответствует (?) сгибу
            if (sFeat.type == 11001) bends++; 
        }
    }
}
Console.WriteLine($"Кол-во гибов: {bends}");
+ Благодарностей: 1

jkl

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