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

ADN Club => Revit API => Тема начата: Bazinga от 20-09-2019, 12:55:27

Название: .GetCellText() в спецификации
Отправлено: Bazinga от 20-09-2019, 12:55:27
В спецификации в ячейки указано 25,0
.GetCellText()  возвращает просто 25, откидывая ,0.
Почему так возвращает?
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 20-09-2019, 13:12:04
Да вроде всё хорошо, возвращает текст в правильном формате:
(https://i.postimg.cc/cv5VWXKp/schedule-get-cell-text.png) (https://postimg.cc/cv5VWXKp)

Надо больше информации
Название: Re: .GetCellText() в спецификации
Отправлено: Bazinga от 21-09-2019, 12:12:44

(https://i.postimg.cc/YjdwLC0s/12.png) (https://postimg.cc/YjdwLC0s)
как то так
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Пекшев aka Modis от 22-09-2019, 14:02:52
Потому что 25.0 - это число 25, а точка и ноль появляются вследствие настроек отображения чисел. Точно не скажу настройки это Ревита или ОС. Так что метод вам возвращает правильно - число 25 будет выглядеть как "25"
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 22-09-2019, 22:50:53
Так, кажется, теперь понятно.

Смотрите, GetCellText возвращает форматированный текст но так, как отображается при вставке на лист, а не в таблице в режиме просмотра спецификации

(https://i.postimg.cc/yJ1kkgFv/view-schedule-and-on-sheet.png) (https://postimg.cc/yJ1kkgFv)

В свою очередь формат определяется либо в единицах проекта (вкладка "Управление"), либо переопределяется для конкретного столбца в спецификации

(https://i.postimg.cc/nMR5W6Rz/getcelltext.png) (https://postimg.cc/nMR5W6Rz)
Название: Re: .GetCellText() в спецификации
Отправлено: Bazinga от 23-09-2019, 08:42:49
Александр Пекшев aka Modis, в таблице он отображает 25,0. Если к элементу обращаться и забирать значение диаметра - возвращает 25,0. А считывание текста из ячейки просто 25.
Название: Re: .GetCellText() в спецификации
Отправлено: Bazinga от 23-09-2019, 08:52:06
Александр Игнатович,
(https://i.postimg.cc/xqWtLtMM/image.png) (https://postimg.cc/xqWtLtMM)
из-за вот этого кривит так?
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 23-09-2019, 10:41:43
Ну тут баг (?) именно в отображении в строках спецификации в табличном представлении. Потому как метод всё правильно возвращает в соответствии с настройками единиц измерения. Вытащите спецификацию на лист, будет отображать "25"
Название: Re: .GetCellText() в спецификации
Отправлено: Bazinga от 23-09-2019, 14:03:03
Александр Игнатович, только с диаметра он забирает в другом месте 25,0, в итоге ключи не совпадают. Если в форматировании делать округление до 1 знака после запятой, пустая строка остается.
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 23-09-2019, 14:04:39
В каком другом месте?
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Пекшев aka Modis от 23-09-2019, 14:06:41
Вообще в апи два метода GetCellText - один принимает два параметра, а другой три параметра.
Так вот если почитать справку про первый из них (а я чувствую, что его и использовали), то там приписано:
Цитировать
For standard view schedules, to read the formatted text of the cell regardless of cell type, use [!:Autodesk::Revit::DB::ViewSchedule::GetCellText()] .
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 23-09-2019, 14:17:04
Ну вообще-то, это методы разных объектов. Первый, про который говорим, у самого ViewSchedule, второй - у TableSectionData, причем у второй работает только для типов ячеек CellType.Text или CellType.ParameterText.
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Пекшев aka Modis от 23-09-2019, 14:24:53
Ну можно сделать как-то так:
Код - C# [Выбрать]
  1. if (double.TryParse(v, out var d))
  2.     return $"{d:0.0}";
  3. else return v;
Название: Re: .GetCellText() в спецификации
Отправлено: Bazinga от 23-09-2019, 14:34:56
Александр Игнатович, в элементе (lookupparameter("Диаметр"))  забирает 25,0. Даже если форматирования столбцы поставить галочку использовать параметры проекта, все равно считывает 25 просто..
Магия какая-то...
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 23-09-2019, 14:38:36
Эээ... Метод возвращает форматированный текст в соответствии с настройками единиц измерения в проекте или переопределенными настройками в столбце. Гляньте пример выше, там ещё и "25 мм" возвращает. Значение параметра - double, к тому же во внутренних единицах измерения, это как тёплое с мокрым сравнивать
Название: Re: .GetCellText() в спецификации
Отправлено: Bazinga от 23-09-2019, 15:10:32
Александр Игнатович, видела пример. Что нужно настроить (в параметрах проекта или при форматировании ячейки), чтобы значение забиралось из ячейки без урезания?
Название: Re: .GetCellText() в спецификации
Отправлено: Александр Игнатович от 23-09-2019, 15:17:30

(https://i.postimg.cc/DJYBFnyH/pipe-units.png) (https://postimg.cc/DJYBFnyH)