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

ADN Club => Revit API => Тема начата: user32 от 26-02-2021, 10:30:20

Название: Получить BoundingBox из нескольких элементов
Отправлено: user32 от 26-02-2021, 10:30:20
Здравствуйте,
Можно ли как то получить boundingBox у нескольких элементов?
Т.е. чтобы в один bbox входили выделенные элементы, например
Название: Re: Получить BoundingBox из нескольких элементов
Отправлено: Александр Игнатович от 26-02-2021, 11:09:34
А в чём проблема то?
Код - C# [Выбрать]
  1.     public static class BoundingBoxXYZExtensions
  2.     {
  3.         public static BoundingBoxXYZ Union(this BoundingBoxXYZ boundingBox, BoundingBoxXYZ other)
  4.         {
  5.             return new BoundingBoxXYZ
  6.                 {
  7.                     Min = new XYZ(
  8.                         Math.Min(boundingBox.Min.X, other.Min.X),
  9.                         Math.Min(boundingBox.Min.Y, other.Min.Y),
  10.                         Math.Min(boundingBox.Min.Z, other.Min.Z)),
  11.                     Max = new XYZ(
  12.                         Math.Max(boundingBox.Max.X, other.Max.X),
  13.                         Math.Max(boundingBox.Max.Y, other.Max.Y),
  14.                         Math.Max(boundingBox.Max.Z, other.Max.Z))
  15.                 };
  16.         }
  17.     }

Ну и дальше:
Код - C# [Выбрать]
  1. var box = boxes.Aggregate((acc, elem) => acc.Union(elem));
Название: Re: Получить BoundingBox из нескольких элементов
Отправлено: user32 от 26-02-2021, 14:25:10
Спасибо!
Название: Re: Получить BoundingBox из нескольких элементов
Отправлено: Александр Игнатович от 26-02-2021, 14:35:52
Это подойдет для большинства случаев, по крайней мере по твоему вопросу про элементы. Это я к тому, что при получении bounding box-ов элементов, Transform будет Identity. Более общим решением может быть - по Min и Max построить 8 точек - углов куба и преобразовать их по этому Transform-у. В этом случае, возможно, будет удобнее работать с Outline, а не BoundingBoxXYZ