Получить имя объекта (интерфейс) выделенного объекта.

Автор feron, 23.10.23, 21:21:06

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

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

feron

Доброго,

Скрипт для получения интерфейса выделенного объекта:

from win32com.client import Dispatch, gencache

from ksConstV16 import constants as const_2d_
from ksConst3DV16 import constants as const_3d_

import KompasApi5V16 as KAPI5
import KompasApi7V16 as KAPI7

# KAPI5 = gencache.EnsureModule('{0422828C-F174-495E-AC5D-D31014DBBE87}', 0, 1, 0)
# KAPI7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
# const_2d_ = gencache.EnsureModule('{75C9F5D0-B5B8-4526-8681-9903C567D2ED}', 0, 1, 0)
# const_3d_ = gencache.EnsureModule('{2CAF168C-7961-4B90-9DA2-701419BEEFE3}', 0, 1, 0)

api5_ = Dispatch('Kompas.Application.5', None, KAPI5.KompasObject.CLSID)
api7_ = Dispatch('Kompas.Application.7')

iDocument = api7_.ActiveDocument

iSelectionManager = None

typeDoc = iDocument.DocumentType

# чертеж, фрагмент
type2D = [const_2d_.ksDocumentDrawing,
          const_2d_.ksDocumentFragment]

# 3d модель, сборка, Технологическая сборка
type3D = [const_2d_.ksDocumentPart,
          const_2d_.ksDocumentAssembly,
          const_2d_.ksDocumentTechnologyAssembly]

if typeDoc in type2D:
    iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)
    iKompasDocument2D1 = KAPI7.IKompasDocument2D1(iKompasDocument2D)
    iSelectionManager = iKompasDocument2D1.SelectionManager

if typeDoc in type3D:
    iKompasDocument3D = KAPI7.IKompasDocument3D(iDocument)
    iSelectionManager = iKompasDocument3D.SelectionManager


if iSelectionManager:
    iSelectedObjects = iSelectionManager.SelectedObjects

    if iSelectedObjects:
        if isinstance(iSelectedObjects, tuple):
            for obj in iSelectedObjects:
                print('Интерфейс', str(obj).split(' instance')[0].split('<KompasApi7V16.')[1])
                # print('Интерфейс', str(obj).split(' instance')[0].split('<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.')[1])

        else:
            obj = iSelectedObjects
            print('Интерфейс', str(obj).split(' instance')[0].split('<KompasApi7V16.')[1])
            # print('Интерфейс', str(obj).split(' instance')[0].split('<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.')[1])


Nipal

А зачем тему создавать?
Тему закрываем.

feron

Цитата: Nipal от 23.10.23, 21:23:33А зачем тему создавать?
Уважаемый, не все же такие знатоки как Вы, может кому и поможет..

А по теме это 1 шаг, и у него есть 3 ответвления (позже выложу сюда)

Nipal

Цитата: feron от 23.10.23, 21:28:44Уважаемый, не все же такие знатоки как Вы, может кому и поможет..

А по теме это 1 шаг, и у него есть 3 ответвления (позже выложу сюда)
Тему закрываем, Ваш бумеранг, Вам прилетел.

feron

Все направлено на решение главного вопроса https://forum.ascon.ru/index.php?topic=38258.0
Он не должен базироваться на что то одном, а должен быть универсальным! Да, тоесть и для других компонентов управления.

Так что мы сидим в одной упряжке и прошу не трындеть, палки в колеса не совать, и не сыпать соль на раны, а помочь.
Счел своим долгом!

Nipal

Цитата: feron от 23.10.23, 21:43:48Все направлено на решение главного вопроса https://forum.ascon.ru/index.php?topic=38258.0
Она не должна базироваться на что то одном а должны быть универсальной! Да, тоесть и для других компонентов управления.

Так что мы сидим в одной упряжке и прошу не трындеть, палки в колеса не совать, и не сыпать соль на раны, а помочь.
Счел своим долгом!
Может картинку банана прикрепить?
Вы, так гадили недавно, что тему из-за Вас закрыли.
А сейчас, шлангом претворяетесь.

feron

Цитата: Nipal от 23.10.23, 21:46:29что тему из-за Вас закрыли.

какую ? вы про тот балаган ? :) там вопрос решается в 3 строки кода а размусолили на 10 страниц!

Nipal

Я про этот балаган, где Вы и ещё один деятель "Валерий Изранов" его устроили, просто перед закрытием её почистили, но тему закрыли.

feron

#8
Я могу этот вопрос реально в 3 строки уложить решение:

1) поиск файлов :
                               listFileSPW = [y for x in os.walk('C:\\folder') for y in glob(os.path.join(x[0], '*.spw'))]
2) открыть
3) сохранить и закрыть

Тут есть один надзиратель он сообщения считает и переводит в килобайты и предъявляет за это :)

Nipal

Цитата: feron от 23.10.23, 22:02:52Я могу этот вопрос реально в 3 строки уложить решение:

1) поиск файлов
2) открыть
3) сохранить и закрыть

Тут есть один надзиратель он сообщения считает и переводит в килобайты и предъявляет за это :)
Так, ложитесь спать.