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

27/09/2015

Чтение общей площади зоны здания и площади офисных зон

Небольшой пример того, как читать площадь зон, являющихся общей площадью здания и офисной зоной. Начнем с получение объектов класса Area (зона), используя FilteredElementCollector и фильтр SpatialElement. Затем, AreaScheme и, если требуется, ограничим по уровню, на котором располагается зона. В итоге отобразим общую площадь зон по зданию и площадь офисных зон.

Обратите внимание, так как мы получаем зоны, то их необходимо сначала создать в проекте. В противном случае в спецификациях зоны вы также не увидите.

 

Код - C#: [Выделить]
  1. FilteredElementCollector coll = new
  2.   FilteredElementCollector(doc);
  3. coll.OfClass(typeof(SpatialElement));
  4.  
  5. double rentableArea = 0.0;
  6. double grossArea = 0.0;
  7.  
  8. foreach (SpatialElement spartialElement in coll)
  9. {
  10.   Area areaElement = spartialElement as Area;
  11.   if (areaElement == null) continue; // пропускаем, если это не зона
  12.  
  13.   // зона и ее тип
  14.   double areaValue = areaElement.Area;
  15.   AreaScheme areaScheme = areaElement.AreaScheme;
  16.   bool isGross = areaScheme.IsGrossBuildingArea;
  17.  
  18.   // на всякий случай получаем уровень зоны
  19.   Level level = doc.GetElement(
  20.     areaElement.get_Parameter(
  21.     BuiltInParameter.ROOM_LEVEL_ID).AsElementId())
  22.     as Level;
  23.  
  24.   if (isGross)
  25.     grossArea += areaValue;
  26.   else
  27.     rentableArea += areaValue;
  28. }
  29.  
  30. // Показываем общие результаты
  31. TaskDialog.Show("Total:",
  32.   string.Format("Всего по зданию: {0}\nОфисные: {1}",
  33.   FormatUtils.Format(doc, UnitType.UT_Area, grossArea),
  34.   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