• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Получение состава сборки или детали

Автор DUXOTA, 25.02.24, 00:01:40

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

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

DUXOTA

Пытаюсь провести булеву операцию в компас-макрос, но не могу цепануть тела, которыми нужно работать
Можете помочь с кодом, чтобы макрос выделял 2 тела, желательно в детали, но можно и сборке, желательно последних добавленных в нужном порядке [база 1, модификатор 2]
Можно с пояснялками(желательно), спасибо
Предоставляю ниже свои методы решения, которые не запустились(

DUXOTA

Имеется код для сборки, нашёл на форуме https://forum.ascon.ru/index.php?topic=37662.0, очень интересно работающий, но он работает только для сборки, а хотелось бы для детали :(
# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache
import LDefin3D

#  Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(
    Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID,
                                                            pythoncom.IID_IDispatch))

doc3d = kompas_object.ActiveDocument3D()
print(doc3d)

part_collection = doc3d.PartCollection(True)
print(part_collection)
solid_one = part_collection.GetByIndex(0).BodyCollection().GetByIndex(0)
solid_two = part_collection.GetByIndex(1).BodyCollection().GetByIndex(0)
print(solid_one, solid_two)

ks_part = doc3d.GetPart(-1)
print(ks_part.name)
entBool = ks_part.NewEntity(LDefin3D.o3d_aggregate)
print(entBool)
definition = entBool.GetDefinition()
print(definition)

collection = definition.BodyCollection()
print(collection.GetCount())

collection.Add(solid_one)
collection.Add(solid_two)
collection.refresh()
print(collection.GetCount())

definition.BooleanType = 2  # вычитание

print(entBool.Create())