Объединение геометрии стен и колонн
Я пытался найти в блоге пример использования объединения геометрии, но так и не смог. Собственно, вот он.
Этот метод, как и многие другие методы API, делают то же самое, что и пользователь в интерфейсе. Для его использования нужно задать два элемента, которые мы хотим объединить. Проблема в том, как найти эти элементы. Для этого примера, давайте предположим, что у нас есть модель со стенами и колоннами, которые мы хотим присоединить к стенам.
Очевидно, что мы не можем объединить все стены со всеми колоннами. Jeremy написал неплохой пример, который поможет найти пересекающиеся элементы, поэтому просто воспользуемся им.
Возьмем сначала все стены, затем для каждой стены получим все колонны, с которыми пересекается эта стена и объединим их эти два элемента с помощью метода JoinGeometry:
- UIApplication uiapp = commandData.Application;
- UIDocument uidoc = uiapp.ActiveUIDocument;
- Application app = uiapp.Application;
- Document doc = uidoc.Document;
- // найдем все стены на текущем виде
- FilteredElementCollector collWalls =
- new FilteredElementCollector(doc, doc.ActiveView.Id);
- collWalls.OfClass(typeof(Wall));
- foreach (Wall w in collWalls)
- {
- // Найдем все колонны на текущем виде
- FilteredElementCollector collColumnsOnThisWall =
- new FilteredElementCollector(doc, doc.ActiveView.Id);
- collColumnsOnThisWall.OfClass(typeof(FamilyInstance));
- collColumnsOnThisWall.OfCategory(
- BuiltInCategory.OST_StructuralColumns);
- // найдем колонны, которые пересекаются с текущей стеной
- BoundingBoxXYZ bb = w.get_BoundingBox(doc.ActiveView);
- Outline outline = new Outline(bb.Min, bb.Max);
- BoundingBoxIntersectsFilter bbfilter =
- new BoundingBoxIntersectsFilter(outline);
- collColumnsOnThisWall.WherePasses(bbfilter);
- // в конце, объединим каждую колонну со стеной.
- foreach (FamilyInstance column in collColumnsOnThisWall)
- {
- JoinGeometryUtils.JoinGeometry(doc, w, column);
- }
- }
Источник: http://adndevblog.typepad.com/aec/2015/08/joingeometry-for-walls-and-columns.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=3065
Опубликовано 30.09.2015