Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: Ярослав от 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).
Что я не так делаю или не понимаю?
-
Ярослав,
Внутри Revit все значения хранятся в одной базовой единице измерения. В случае площади - это квадратные футы. Т.е. 145.1324 это есть ни что иное, как 145.1234 квадратных фута.
В интерфейсе вы видите значение в заданных для проекта единицах измерения.
Для того чтобы перевести внутренние единицы измерения в нужные, воспользуйтесь методом UnitUtils.ConvertFromInternalUnits. Получите число в желаемой единице измерения
Другой способ - получить строковое представление значения параметра, с помощью метода Parameter.AsValueString. Этот метод возвратит значение параметра именно в том виде, который видит пользователь. Но в этом случае это будет именно строка и проделать какие-либо арифметические операции с ней не получится.
В зависимости от ситуации используйте один из вышеперечисленных способов.
-
Может это не совсем по теме, подскажите пожалуйста как округлить значения площадей? Мне нужно для вывода в EXCEL.
Совсем не по теме конечно, но Excel сам неплохо справляется с округлениями. Передайте туда значения как есть, а в Excel в зависимости от настроек форматирования отобразится желаемое количество знаков после запятой.
Если хочется в коде, то Math.Round. Но я бы передал в Excel как есть.
-
Спасибо. Просто лучше в коде. А то пользователь у нас прихотлив.