Подсчет количества операций в модели и сборке

Автор zeratul, 20.03.17, 10:12:44

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

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

zeratul

Добрый день! Как то писал уже подобную тему, но так и не получилось у меня ничего доделать и разобраться с проблемой считывания количества операций.


Используем 1С. Подключаемся к Компасу и используем API функции.

Когда происходит считывание сборки формат *.a3d,  не могу понять как мне считать количество операции только данной сборки минуя детали?
На данный момент считывание количества операций делаю так

         Active = kompas_v5.Document3d.open(Объект.Path,True);
         If Active Then
           
            КоличествоВсегоОпераций = 0;
         
            doc3D = kompas_v5.ActiveDocument3D;
            PColl = doc3D.PartCollection(True);
            Если doc3D.IsDetail()<> 1 Тогда
               Для j = 0 По 1 Цикл//PColl.GetCount() - 1 Цикл
                  iPart = doc3D.GetPart(j);
                  If iPart.excluded Then
                     Continue;
                  EndIf;
                  КоличествоОпераций = iPart.EntityCollection(110).getcount();
                  КоличествоВсегоОпераций = КоличествоВсегоОпераций + КоличествоОпераций;                     
               КонецЦикла;
                                 EndIf;
                           EndIf;


Пробовал делать так:

kompas_v5.ActiveDocument3D.EntityCollection(110,false).getcount()
Но в таком случае всегда возвращается 0.


Делал еще так

IPart - интерфейс COM

doc3D = kompas_v5.ActiveDocument3D;
PColl = doc3D.PartCollection(True);
Если doc3D.IsDetail()<> 1 Тогда
               
Для j = 0 По 1 Цикл

iPart = doc3D.GetPart(j);
If iPart.excluded Then
Continue;
EndIf;
КоличествоОпераций = iPart.EntityCollection(110).getcount();

в данном случае неверно идет подсчет, так как мне надо подсчитать количество операций именно самого документа doc3D



KrissKross

В первом случае
чтение данных элементов сборки
необходимо
привести к главной сборке

doc3D = kompas_v5.ActiveDocument3D;
//Добавить приведение к главной сборке
_mainSB = (ksPart)_doc3D.GetPart(-1);

PColl = _mainSB.PartCollection(True);

Во втором случае
чтение компонентов сборки
попробуйте открыть деталь
kompas_v5.Document3d.open(Объект.Path,True);