Скрытие одинаковых элементов

Автор fokfaul, 19.12.19, 11:41:21

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

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

fokfaul

Доброго всем времени суток!
Написал через Python Макро для выделения компонентов с заранее уже выделенными.
Скрипт работает, все необходимые компоненты выделяются на различных уровнях, но в непосредственно в Компасе не срабатывает общая команда скрыть, скрывает только выделенные элементы до выполнения скрипта.
Кто нибудь знает по какому параметру скрываются выделенные элементы в Компасе?
#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication  = application


Documents = application.Documents
#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)

def choose_name(ks_part):
    if ks_part.Marking != '':
        return ks_part.Marking
    else:
        return ks_part.Name

selection_obj = kompas_document_3d.SelectionManager
choose_obj = kompas_document_3d.ChooseManager

def counter(obj):
    count_list = dict()
    selection_list = obj.SelectedObjects
    if type(selection_list) == tuple:
        for selpart in selection_list:
            if hasattr( selpart, 'Detail' ):
                count_list[choose_name(selpart)] = True
    else:
        if hasattr( selection_list, 'Detail' ):
            count_list[choose_name(selection_list)] = True
    return count_list

def down_tree_select(selection_list, ks_part):
    i = 0
    while not(ks_part.Part(i) is None):
        flag = True
        current_part=ks_part.Part(i)
        if hasattr( current_part, 'Detail' ):
            if choose_name(current_part) in count_result:
                selection_obj.Select(current_part)
                flag = False
            if current_part.Detail == False and flag == True:
                down_tree_select(selection_list, current_part.Parts)
        i=i+1
    return 0

count_result = counter(selection_obj)
main_part = kompas_document_3d.TopPart
massage = ""
listDoc = main_part.Parts
down_tree_select(count_result, listDoc)

maminagadost

Добрый день. Решили ли вы эту проблему?
Столкнулся с подобной. При выделении деталей через ISelectionManager не могу их скрыть ручками. Можно исключить из расчёта открыть на редактирование, а команду скрыть игнорирует.
И ещё вопрос: находил ли кто-нибудь в компас API команду для того чтобы скрыть компонент в модели?

KrissKross

если используете API5

у Интерфейсов ksPart и IPart
меняете значение свойства
hidden - Состояние видимости объекта


если используете API7

у Интерфейс IModelObject
меняете значение свойства
Hidden - Состояние видимости объекта
+ Благодарностей: 1

maminagadost

Спасибо!
Слона то я и не заметил. Искал по запросу 'hide' и 'скрыть'