Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: Павел55 от 19-03-2022, 15:35:38

Название: Как изменить высоту строк ScheduleSheetInstance
Отправлено: Павел55 от 19-03-2022, 15:35:38
Добрый день, подскажите существует способ менять высоту строк в спецификации на листе? Я попытался менять в TableData в секции Body, но там запрещено менять высоту. Я так понимаю можно только в заголовке менять. Отсюда вопрос может быть кто то когда нибудь создавал какие то костыли чтобы это обойти?
Название: Re: Как изменить высоту строк ScheduleSheetInstance
Отправлено: Александр Игнатович от 19-03-2022, 15:49:46
Смотря каких :-) то есть только тех, высоту которых можно изменить в UI.

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

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

Название: Re: Как изменить высоту строк ScheduleSheetInstance
Отправлено: Павел55 от 19-03-2022, 15:54:16
Собственно я так и пытался, но к сожалению в секции Body это запрещено. В Ui кажется тоже руками невозможно поменять.

(https://i.postimg.cc/9R6yRNv2/image.png) (https://postimg.cc/9R6yRNv2)

Может быть возможно придумать какой нибудь дикий велосипед? У меня что то совсем мыслей нет, как обмануть ревит апи.
Название: Re: Как изменить высоту строк ScheduleSheetInstance
Отправлено: Александр Игнатович от 19-03-2022, 16:02:55
Да, есть такое, у обычных спецификаций высоту строк нельзя менять ни в UI ни с использованием API  :-[

Как вариант (кривой, конечно, понимаю), на чертёжном виде нарисовать линиями и текстом...
Название: Re: Как изменить высоту строк ScheduleSheetInstance
Отправлено: Павел55 от 19-03-2022, 16:08:34
Тут тоже нюанс есть. Как узнать какую высоту строк делать для текста? Брать BoundingBox для каждого текста и высчитывать по самому высокому тексту для всей строки?
Название: Re: Как изменить высоту строк ScheduleSheetInstance
Отправлено: Александр Игнатович от 20-03-2022, 10:52:56
Ну поскольку ширину ты задашь при создании TextNote-а, то да, нужна высота. Решить можно, сначала накидав TextNote-ов, например в (0, 0, 0), вызвать doc.Regenerate(), после которого станут доступны реальные габариты, после чего посчитать позиции и ElementTransformUtils.MoveElement-ом переместить в нужные позиции и дорисовать линии