Как изменить стиль шапки таблицы?

Автор Тема: Как изменить стиль шапки таблицы?  (Прочитано 6776 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Коллеги, добрый день.

Есть вопрос, к сожалению, не совсем ясный даже для меня. Имеется спецификация в виде таблицы, строки которой формируются с помощью Python. Затем эта таблица вставляется в лист. Хотелось бы изменить стиль отображения шапки данной таблицы. В справке почитал и нашел метод SetCellStyle:

Код - C# [Выбрать]
  1. public void FormatSubtitle(ViewSchedule colSchedule)
  2. {
  3.     TableData colTableData = colSchedule.GetTableData();
  4.  
  5.     TableSectionData tsd = colTableData.GetSectionData(SectionType.Header);
  6.     // Subtitle is second row, first column
  7.     if (tsd.AllowOverrideCellStyle(tsd.FirstRowNumber + 1, tsd.FirstColumnNumber))
  8.     {
  9.         TableCellStyle tcs = new TableCellStyle();
  10.         TableCellStyleOverrideOptions options = new TableCellStyleOverrideOptions();
  11.         options.FontSize = true;
  12.         options.Bold = true;
  13.         tcs.SetCellStyleOverrideOptions(options);
  14.         tcs.IsFontBold = true;
  15.         tcs.TextSize = 10;
  16.         tsd.SetCellStyle(tsd.FirstRowNumber + 1, tsd.FirstColumnNumber, tcs);
  17.     }
  18. }
  19.  

Однако, когда с помощью Python пытаемся реализовать тоже самое, ничего не происходит.

Код - Python [Выбрать]
  1. # Установим стиль ячейки
  2.     options = TableCellStyleOverrideOptions()
  3.     options.BorderLineStyle = True
  4.     options.BorderBottomLineStyle = True
  5.     options.Font = True
  6.     tcs = TableCellStyle()
  7.     tcs.SetCellStyleOverrideOptions(options)
  8.     tcs.IsFontBold=True
  9.     tcs.BorderBottomLineStyle = UnwrapElement(IN[13]).GraphicsStyleCategory.Id
  10.     tcs.FontName = "Courier New"
  11.  
  12.     #tsd.SetCellStyle(tsd.FirstRowNumber, tsd.FirstColumnNumber, tcs)
  13.     tsd.SetCellStyle(tcs)

Я где-то допустил ошибку. Надеюсь, что у кого-нибудь есть хотя бы алгоритм того, как это делать... даже не так важен код, как алгоритм.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Как изменить стиль шапки таблицы?
« Ответ #1 : 20-06-2016, 11:21:53 »
Хотелось бы изменить стиль отображения шапки данной таблицы.
Думаю вот тут вся загвоздка. Метод меняет стиль таблицы в спецификации, а не на листе. Если я не ошибаюсь, то на листе нет возможности форматировать спецификацию.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Как изменить стиль шапки таблицы?
« Ответ #2 : 20-06-2016, 11:27:45 »
Виктор, спасибо за ответ!

Всё работает и как всегда была простая проблема, транзакция в цикле... Разобрались и теперь всё работает! :)




Решения данной проблемы нет, так как самой проблемы, как оказалось, нет!

Отмечено как Решение Пашин Евгений 20-06-2016, 13:10:14

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Как изменить стиль шапки таблицы?
« Ответ #4 : 20-06-2016, 13:12:31 »
транзакция в цикле...
А что за проблема? По ссылке идет просто утверждение, что изменение стиля должно происходить в транзакции. Странно конечно, что в даном случае Rуvit не ругался, что изменение нужно делать в рамках транзакции..

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Как изменить стиль шапки таблицы?
« Ответ #5 : 21-06-2016, 07:01:38 »
А что за проблема? По ссылке идет просто утверждение, что изменение стиля должно происходить в транзакции. Странно конечно, что в даном случае Rуvit не ругался, что изменение нужно делать в рамках транзакции..

В том-то и странность, что Revit-у ничто не помешало провести процедуру! Проблема в том, что тот кусок кода находился в ещё более большом куске кода, где применялся цикл, который находился внутри транзакции. Проблема в том, что при запуске модуля в Dynamo мы не наблюдали изменений самой таблицы. И Revit не ругался ни на что. После того, как создал эту тему, попробовал этот кусок кода вставить в другую транзакцию, уже в самом конце процедуры, и сработало! Стали искать проблему в куске кода выше и оказалось, что как только мы убираем из этого куска кода цикл обработки данных, то всё работает правильно.

Проблема в том, что мы забываем о принципах работы с транзакциями!!! Вот в чём вся проблема.