Как изменить высоту строк ScheduleSheetInstance

Автор Тема: Как изменить высоту строк ScheduleSheetInstance  (Прочитано 5711 раз)

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

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Добрый день, подскажите существует способ менять высоту строк в спецификации на листе? Я попытался менять в TableData в секции Body, но там запрещено менять высоту. Я так понимаю можно только в заголовке менять. Отсюда вопрос может быть кто то когда нибудь создавал какие то костыли чтобы это обойти?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Смотря каких :-) то есть только тех, высоту которых можно изменить в UI.

Изменяется высота, соответственно не в ScheduleSheetInstance, а через сам ViewSchedule.
Получаешь данные таблицы:
Код - C# [Выбрать]
  1. var tableData = viewSchedule.GetTableData();

Потом методом GetSectionData получаешь нужную секцию. И уже у неё вызываешь SetRowHeight или SetRowHeightInPixels


Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Собственно я так и пытался, но к сожалению в секции Body это запрещено. В Ui кажется тоже руками невозможно поменять.



Может быть возможно придумать какой нибудь дикий велосипед? У меня что то совсем мыслей нет, как обмануть ревит апи.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Да, есть такое, у обычных спецификаций высоту строк нельзя менять ни в UI ни с использованием API  :-[

Как вариант (кривой, конечно, понимаю), на чертёжном виде нарисовать линиями и текстом...

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Тут тоже нюанс есть. Как узнать какую высоту строк делать для текста? Брать BoundingBox для каждого текста и высчитывать по самому высокому тексту для всей строки?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Ну поскольку ширину ты задашь при создании TextNote-а, то да, нужна высота. Решить можно, сначала накидав TextNote-ов, например в (0, 0, 0), вызвать doc.Regenerate(), после которого станут доступны реальные габариты, после чего посчитать позиции и ElementTransformUtils.MoveElement-ом переместить в нужные позиции и дорисовать линии