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

ADN Club => Revit API => Тема начата: Ярослав от 19-05-2015, 16:19:41

Название: Площадь помещений
Отправлено: Ярослав от 19-05-2015, 16:19:41
Здравствуйте.
У меня такая проблема, может кто то знает.
Я пытаюсь получить площадь помещений. При room.Area мне выдает непонятное число и в разы больше нужного значения, 145,1324.
Проверил LookUp-ом действительно значение room.Area 145,1324, когда захожу в параметры и нахожу площадь  11,235 - другое число.
В свойствах в пишет значение площади 11,235, истинное значение.
Попытки получить площадь через: room.GetParameters("площадь")
getParametr(BuildInParametr.ROOMS_AREA)
выдают те же значение что и room.Area(145,1324).
Что я не так делаю или не понимаю?
Название: Re: Площадь помещений
Отправлено: Виктор Чекалин от 19-05-2015, 16:29:11
Ярослав,
Внутри Revit все значения хранятся в одной базовой единице измерения. В случае площади - это квадратные футы. Т.е. 145.1324 это есть ни что иное, как 145.1234 квадратных фута.
В интерфейсе вы видите значение в заданных для проекта единицах измерения.
Для того чтобы перевести внутренние единицы измерения в нужные, воспользуйтесь методом UnitUtils.ConvertFromInternalUnits. Получите число в желаемой единице измерения

Другой способ - получить строковое представление значения параметра, с помощью метода Parameter.AsValueString. Этот метод возвратит значение параметра именно в том виде, который видит пользователь. Но в этом случае это будет именно строка и проделать какие-либо арифметические операции с ней не получится.

В зависимости от ситуации используйте один из вышеперечисленных способов.
Название: Re: Площадь помещений
Отправлено: Виктор Чекалин от 19-05-2015, 17:39:14
Может это не совсем по теме, подскажите пожалуйста как округлить значения площадей? Мне нужно для вывода в EXCEL.
Совсем не по теме конечно, но Excel сам неплохо справляется с округлениями. Передайте туда значения как есть, а в Excel в зависимости от настроек форматирования отобразится желаемое количество знаков после запятой.
Если хочется в коде, то Math.Round. Но я бы передал в Excel как есть.
Название: Re: Площадь помещений
Отправлено: Ярослав от 19-05-2015, 18:03:07
Спасибо. Просто лучше в коде. А то пользователь у нас прихотлив.