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 возвращает форматированный текст но так, как отображается при вставке на лист, а не в таблице в режиме просмотра спецификации
Название: 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
Название: 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