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

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

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

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

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

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

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

Получение количества изделий в групповой спецефикации

Автор range-kun, 26.05.23, 11:20:47

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

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

range-kun

Здравствуйте имеется групповая спецификация, базовое исполнение и исполнение -01 каким методом из SDK воспользоваться что бы получить количество  ТЛ-9.00.00В из строчки ниже для исполнения через -01 (ожидается два)

SummaryCount(2, 0) и Columns.Column(6, 2, 0) дают неверный результат
Заранее спасибо

Kaimen

            if iSpecificationColumn.ColumnType == ks_constants.ksSColumnCount:
                     count =int(spc_object.SummaryCount(iSpecificationColumn.ColumnTypeNumber,
                                                   iSpecificationColumn.BlockNumber))
+ Благодарностей: 1

range-kun

Спасибо! разобрался вроде.
Еще вопрос

как получить значение ячейки обведенное в красный кружок? Columns.Column() не дает нужный результат, ни при каких усвлоиях

Kaimen


range-kun

Не, так не показывает, значение первой ячейки выводит, а второй нет:


Doom

Проще наверно сохранить спецификацию в xls и затем его прочесть например компонентом xlrd

мб через ksSetSpcObjectColumnText попробовать ?

Михаил88

#6
Цитата: range-kun от 26.05.23, 16:03:18Не, так не показывает, значение первой ячейки выводит, а второй нет:

у меня получилось прочитать с помощью API7 только если нажать кнопку

изображение_2023-06-04_153858769.png
+ Благодарностей: 1

range-kun

Цитата: Михаил88 от 04.06.23, 13:39:07у меня получилось прочитать с помощью API7 только если нажать кнопку

изображение_2023-06-04_153858769.png
А как вы вызывали эту команду в коде?
У меня так и не вышло, макросы пытался записывать они не показывают ее, в SDK нашел но не понял как вызввать

Михаил88

Я вручную включил, с помощью API не пробовал. Попозже попробую.

Михаил88

application = kompas_api_object.Application
application.ExecuteKompasCommand(33900, False)

Здесь считывание информации. Ваш блок кода
Потом опять вызываете команду, чтобы опять скрыть объекты.

application.ExecuteKompasCommand(33900, False)

Попробовал работает нормально.
+ Благодарностей: 1

range-kun

Цитата: Михаил88 от 05.06.23, 12:00:43application = kompas_api_object.Application
application.ExecuteKompasCommand(33900, False)

Здесь считывание информации. Ваш блок кода
Потом опять вызываете команду, чтобы опять скрыть объекты.

application.ExecuteKompasCommand(33900, False)

Попробовал работает нормально.
Если вам не трудно можете скинуть код целиком? У меня команда возвращает False судя по SDK это ошибка и не отрабатывает.

Михаил88

#11
# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache

#  Получи константы
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants

#  Получи API интерфейсов версии 7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
kompas_api_object = kompas_api7_module.IKompasAPIObject(
    Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IKompasAPIObject.CLSID,
                                                            pythoncom.IID_IDispatch))
application = kompas_api_object.Application
application.ExecuteKompasCommand(kompas6_constants.ksCMSpcShowAll, False)  # или ExecuteKompasCommand(33900, False)
kompas_document = application.ActiveDocument

specification_descriptions = kompas_document.SpecificationDescriptions
specification_description = specification_descriptions.Active
objects_sp = specification_description.Objects

for ob in objects_sp:
    object_type = ob.ObjectType
    if object_type == 1:
        columns = ob.Columns
        for k in range(0, len(columns)):
            column = columns.Item(k)
            column_name = column.ColumnName
            text = column.Text
            print(f'{column_name}-{text.Str}')
        print('***************************')
application.ExecuteKompasCommand(kompas6_constants.ksCMSpcShowAll, False)  # или ExecuteKompasCommand(33900, False)

Запускать на активной спецификации.
Я запускал на таком примере.
изображение_2023-06-05_205450695.png

print
изображение_2023-06-05_210442217.png
+ Благодарностей: 1