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

ADN Club => Revit API => Тема начата: asia от 28-09-2020, 10:24:34

Название: Создание стен отделочного типа
Отправлено: asia от 28-09-2020, 10:24:34
Добрый день!
Имеется помещение, внутри которого хочу построить отделочные стены. Зная периметр помещения, высоту и толщину стены, как можно реализовать подобное построение?
Можно ли как-то по периметру получить линию и работать с ней? Или как лучше поступить в данном случае?
Название: Re: Создание стен отделочного типа
Отправлено: Александр Игнатович от 28-09-2020, 11:25:30
Посмотри метод GetBoundarySegments помещения, из полученных сегментов можно получить линии (или другие кривые) методом BoundarySegment.GetCurve
Название: Re: Создание стен отделочного типа
Отправлено: asia от 28-09-2020, 13:49:57
Получилось определить границы помещений так:

Код - C# [Выбрать]
  1. foreach (Room room in rooms)
  2. {
  3.     IList<IList<BoundarySegment>> segments = room.GetBoundarySegments(new SpatialElementBoundaryOptions());
  4.     if (segments != null)
  5.     {
  6.          foreach (IList<BoundarySegment> segmentList in segments)
  7.          {
  8.              foreach (BoundarySegment boundarySegment in segmentList)
  9.              {
  10.                   Curve line = Line.CreateBound(boundarySegment.GetCurve().GetEndPoint(0), boundarySegment.GetCurve().GetEndPoint(1));
  11.                   //doc.Create.NewDetailCurve(doc.ActiveView, line);
  12.                   curveList.Add(line);
  13.              }
  14.          }
  15.     }
  16. }

Как правильно в этом случае использовать метод Wall.Create? Так выбрасывает исключение о некорректном построении:

Код - C# [Выбрать]
  1. Wall wall = Wall.Create(doc, curveList, wallType.Id, level.Id, true);
Название: Re: Создание стен отделочного типа
Отправлено: asia от 28-09-2020, 15:20:57
Проблему решил, намудрил вначале с параметрами.
Такой вариант работает: Create(Document, Curve, ElementId, ElementId, Double, Double, Boolean, Boolean)
Название: Re: Создание стен отделочного типа
Отправлено: asia от 28-09-2020, 18:06:42
В случае наличия окна или двери в стене, построенные отделочные стены не вырезают геометрию проемов. Подскажите, пожалуйста, можно ли использовать JoinGeometryUtils.JoinGeometry для решения этой проблемы? Или же можно как-то еще реализовать функцию "соединить", чтоб несущие стены соединялись с отделочными?
Название: Re: Создание стен отделочного типа
Отправлено: Александр Игнатович от 28-09-2020, 18:09:56
можно ли использовать JoinGeometryUtils.JoinGeometry

Можно, будет нормально вырезаться
Название: Re: Создание стен отделочного типа
Отправлено: asia от 28-09-2020, 18:18:15
Александр Игнатович, спасибо, все корректно строится и вырезается.