27/09/2015
Чтение общей площади зоны здания и площади офисных зон
Небольшой пример того, как читать площадь зон, являющихся общей площадью здания и офисной зоной. Начнем с получение объектов класса Area (зона), используя FilteredElementCollector и фильтр SpatialElement. Затем, AreaScheme и, если требуется, ограничим по уровню, на котором располагается зона. В итоге отобразим общую площадь зон по зданию и площадь офисных зон.
Обратите внимание, так как мы получаем зоны, то их необходимо сначала создать в проекте. В противном случае в спецификациях зоны вы также не увидите.
Код - C#: [Выделить]
- FilteredElementCollector coll = new
- FilteredElementCollector(doc);
- coll.OfClass(typeof(SpatialElement));
- double rentableArea = 0.0;
- double grossArea = 0.0;
- foreach (SpatialElement spartialElement in coll)
- {
- Area areaElement = spartialElement as Area;
- if (areaElement == null) continue; // пропускаем, если это не зона
- // зона и ее тип
- double areaValue = areaElement.Area;
- AreaScheme areaScheme = areaElement.AreaScheme;
- bool isGross = areaScheme.IsGrossBuildingArea;
- // на всякий случай получаем уровень зоны
- Level level = doc.GetElement(
- areaElement.get_Parameter(
- BuiltInParameter.ROOM_LEVEL_ID).AsElementId())
- as Level;
- if (isGross)
- grossArea += areaValue;
- else
- rentableArea += areaValue;
- }
- // Показываем общие результаты
- TaskDialog.Show("Total:",
- string.Format("Всего по зданию: {0}\nОфисные: {1}",
- FormatUtils.Format(doc, UnitType.UT_Area, grossArea),
- FormatUtils.Format(doc, UnitType.UT_Area, rentableArea)));
Источник: http://adndevblog.typepad.com/aec/2015/07/reading-gross-and-rentable-area-elements.html
Автор перевода: Виктор Чекалин
Обсуждение: http://adn-cis.org/forum/index.php?topic=3056
Опубликовано 27.09.2015