Python API Перебор составляющих детали/сборки

Автор Albert1, 26.02.26, 08:50:17

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

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

Albert1

Добрый день. Для составления отчёта по моделям требуется получить статистику, сколько каких операций было произведено.
У меня получилось написать программу, которая разбирает детали и сборки, состоящие из деталей, но глубже, в модели с подсборками, она не залезает. Подскажите пожалуйста, как реализовать эту историю.

Компас v.22


p3452

Для начала - что Вы подразумеваете под словом "операции"?

Albert1

Всё то, что лежит в TYPES_DICT.txt. В справочной системе они обозначены как Entity.
При открытом файле в компасе программа уже создаёт csv файл с необходимой статистикой для детали/простой сборки.

p3452

)Примерно такого ответа и ожидал...
Тогда так:
1. Главные сборки, подсборки и детали имеют один интерфейс (ksPart, Part, IPart).
2. "Внутренняя структура" детали, доступна через "Дерево построения", т.е. надо получит интерфейс Feature (ksFeature, IFeaure)...
+ Благодарностей: 1

Albert1

#4
Цитата: p3452 от 26.02.26, 12:00:56Feature (ksFeature, IFeaure)
Спасибо.
Попробовал, но так программа выводит только рёбра, поверхности, вершины.

feature = iPart.GetFeature()
entityCollection = feature.EntityCollection(0)
count = entityCollection.GetCount()
   
for i in range(count):
    entity = entityCollection.GetByIndex(i)

P.s. увидел, что EntityCollection от IFeature работает по-другому. Разбираюсь с выводом остальных Entities.

Михаил88

#5
Цитата: Albert1 от 26.02.26, 08:50:17Добрый день. Для составления отчёта по моделям требуется получить статистику, сколько каких операций было произведено.
У меня получилось написать программу, которая разбирает детали и сборки, состоящие из деталей, но глубже, в модели с подсборками, она не залезает. Подскажите пожалуйста, как реализовать эту историю.

Компас v.22

У Вас ошибки в программе, поэтому и не работает. Я поправил. Вроде стало работать, но может еще что то всплывет.

Вот этот метод IsDetail() в API5 неверно определяет деталь или сборка. Я переписал на API7 и стало правильно определять.
Дальше у Вас ошибка в process_assembly Вы передавали ksPart(при наличии подсборки), а должны были ksDocument3D.
И вообще лучше делать на API7 и по другому...

+ Благодарностей: 1

Albert1

Спасибо большое! :w:
Цитата: Михаил88 от 26.02.26, 14:41:18И вообще лучше делать на API7 и по другому...
Впервые работаю с этим API (думаю, оно и видно), разобраться в нём досконально пока возможности не было