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

ADN Club => Revit API => Тема начата: enot от 15-12-2020, 12:24:35

Название: Curveloop Min/Max
Отправлено: enot от 15-12-2020, 12:24:35
Пусть  curveLoop прямоугольный
как найти его крайнюю нижнюю левую точку Min , а крайнюю правую верхнюю точку Max ?
Название: Re: Curveloop Min/Max
Отправлено: Александр Ривилис от 15-12-2020, 13:06:51
Код от Jeremy Tammik :
Код - C# [Выбрать]
  1.     public static BoundingBoxXYZ GetBoundingBox(
  2.       CurveLoop curveLoop )
  3.     {
  4.       List<XYZ> pts = new List<XYZ>();
  5.       foreach( Curve c in curveLoop )
  6.       {
  7.         pts.AddRange( c.Tessellate() );
  8.       }
  9.  
  10.       BoundingBoxXYZ bb = new BoundingBoxXYZ();
  11.       bb.Clear();
  12.       bb.ExpandToContain( pts );
  13.       return bb;
  14.     }
Название: Re: Curveloop Min/Max
Отправлено: enot от 15-12-2020, 13:10:04
Спасибо,

а как выглядит метод
ExpandToContain
Название: Re: Curveloop Min/Max
Отправлено: Александр Ривилис от 15-12-2020, 13:24:49
enot,
Гугл сегодня работает: https://jeremytammik.github.io/tbc/a/1456_bounding_section_box.html
Код - C# [Выбрать]
  1. public static class JtBoundingBoxXyzExtensionMethods
  2. {
  3.   /// <summary>
  4.   /// Expand the given bounding box to include
  5.   /// and contain the given point.
  6.   /// </summary>
  7.   public static void ExpandToContain(
  8.     this BoundingBoxXYZ bb,
  9.     XYZ p )
  10.   {
  11.     bb.Min = new XYZ( Math.Min( bb.Min.X, p.X ),
  12.       Math.Min( bb.Min.Y, p.Y ),
  13.       Math.Min( bb.Min.Z, p.Z ) );
  14.  
  15.     bb.Max = new XYZ( Math.Max( bb.Max.X, p.X ),
  16.       Math.Max( bb.Max.Y, p.Y ),
  17.       Math.Max( bb.Max.Z, p.Z ) );
  18.   }
  19.  
  20.   /// <summary>
  21.   /// Expand the given bounding box to include
  22.   /// and contain the given other one.
  23.   /// </summary>
  24.   public static void ExpandToContain(
  25.     this BoundingBoxXYZ bb,
  26.     BoundingBoxXYZ other )
  27.   {
  28.     bb.ExpandToContain( other.Min );
  29.     bb.ExpandToContain( other.Max );
  30.   }
  31. }
Название: Re: Curveloop Min/Max
Отправлено: Александр Ривилис от 15-12-2020, 16:34:35
Остальные необходимые методы должны быть здесь: https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/Util.cs
Название: Re: Curveloop Min/Max
Отправлено: enot от 15-12-2020, 16:59:50
Все работает, спасибо