Программное редактирование Отчета

Автор p3452, 01.02.22, 10:45:57

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

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

p3452

Среди интерфейсов связанных с Отчетами
Интерфейсы.png
нет метода связанного с добавлением строки в Отчет, но при ручном редактировании, строку добавить можно.
Вопрос: как это делает Компас, как это сделать программно?

plscomeback

меня тоже некоторые моменты интересовали связанные с отчетом. Не дошли еще руки провернуть, но возможно можно попробовать пройтись PyKompasMacro и посмотреть результат

p3452

Увы! Свежий PyKompasMacro не ставится на Win 7.1

p3452

В Компас ТРИ(!) табличных "процессора" (Таблица, Отчет, Спецификация) и ни один не доведен до логического завершения!?

p3452

#4
Похоже разработчики, банально, ЗАБЫЛИ добавить функцию "Добавить строку в конец Отчета" в SDK!? >:(

Михаил88

Цитата: p3452 от 01.02.22, 10:45:57нет метода связанного с добавлением строки в Отчет, но при ручном редактировании, строку добавить можно.
Вопрос: как это делает Компас, как это сделать программно?

А если вставить таблицу отчета в чертеж. И уже на чертеже подключиться к этой таблице и добавлять строку здесь. Или вам не подходит такой вариант?
В такую таблицу уже строки можно добавить.

p3452

Цитата: Михаил88 от 10.02.22, 12:18:02А если вставить таблицу отчета в чертеж. И уже на чертеже подключиться к этой таблице и добавлять строку здесь.
У Отчета и Таблицы разные интерфейсы...
Как Вы себе представляете подключение к Отчету, как к Таблице?
Или есть какое-то "приведение типов", которое я упустил?

Михаил88

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

application = kompas_api_object.Application
kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
views_and_layers_manager = kompas_document_2d.ViewsAndLayersManager
views = views_and_layers_manager.Views
view = views.ActiveView
symbols_2d_container = kompas_api7_module.ISymbols2DContainer(view)
drawing_tables = symbols_2d_container.DrawingTables
drawing_table = drawing_tables.DrawingTable(0)
table = kompas_api7_module.ITable(drawing_table)
table.AddRow(1, False)
drawing_table.Update()

p3452

Вижу Таблицу, но не вижу таблицы Отчета?

ksReportTable - таблица Отчета
ksDrTable - таблица простая

Михаил88

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

ksReportTable 76 Ассоциативная та­блица отчета

Я выше писал, что вставил в чертеж отчет, как не ассоциативную таблицу.
 

p3452

1. В коде я вижу подключение к ОБЫЧНОЙ таблице (ksDrTable).
2. Через ISymbols2DContainer(view) доступ к таблице Отчета (ksReportTable) не получишь.
3. Если то, что вы утверждаете истина, возникает вопрос как вы получили ksDrTable из ksReportTable?

Михаил88

Я так понимаю если вставить таблицу отчета на чертеж как не ассоциативную то она становится просто таблицей.
Вы проделайте все тоже, что сделал я и все встанет на свои места.
+ Благодарностей: 1

p3452

Цитата: Михаил88 от 10.02.22, 13:21:39Я так понимаю если вставить таблицу отчета на чертеж как не ассоциативную то она становится просто таблицей.
А вот за ЭТО огромное спасибо!

p3452

Для логического завершения темы:
- чтобы превратить Отчет в Таблицу его нужно "разрушить"
(код есть в ЭТОЙ теме)

p3452

P/S: Случайно обнаружилась, следующая Фича:
Если перед ручным "разрушением" Отчета включить Макрорекордер, то после завершения команды, получим полный код создания полученной Таблицы!

Михаил88

Сегодня тоже с утра попробовал несколько вариантов с помощью PyKompasMacro.
1 вариант - создал отчет по сборке отключил галочку, которая отвечает за ассоциативность и сохранил отчет в чертеж. Результат - полный код создания таблицы.
2 вариант - попробовал разрушить ассоциативную таблицу. Результат - полный код создания таблицы.