Curveloop Min/Max

Автор Тема: Curveloop Min/Max  (Прочитано 3595 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Curveloop Min/Max
« : 15-12-2020, 12:24:35 »
Пусть  curveLoop прямоугольный
как найти его крайнюю нижнюю левую точку Min , а крайнюю правую верхнюю точку Max ?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curveloop Min/Max
« Ответ #1 : 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.     }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Curveloop Min/Max
« Ответ #2 : 15-12-2020, 13:10:04 »
Спасибо,

а как выглядит метод
ExpandToContain

Отмечено как Решение enot 15-12-2020, 17:00:05

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curveloop Min/Max
« Ответ #3 : 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. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curveloop Min/Max
« Ответ #4 : 15-12-2020, 16:34:35 »
Остальные необходимые методы должны быть здесь: https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/Util.cs
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Curveloop Min/Max
« Ответ #5 : 15-12-2020, 16:59:50 »
Все работает, спасибо