Создание стен отделочного типа

Автор Тема: Создание стен отделочного типа  (Прочитано 4270 раз)

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

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 0
Добрый день!
Имеется помещение, внутри которого хочу построить отделочные стены. Зная периметр помещения, высоту и толщину стены, как можно реализовать подобное построение?
Можно ли как-то по периметру получить линию и работать с ней? Или как лучше поступить в данном случае?

Отмечено как Решение asia 28-09-2020, 15:21:04

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Создание стен отделочного типа
« Ответ #1 : 28-09-2020, 11:25:30 »
Посмотри метод GetBoundarySegments помещения, из полученных сегментов можно получить линии (или другие кривые) методом BoundarySegment.GetCurve

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 0
Re: Создание стен отделочного типа
« Ответ #2 : 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);

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 0
Re: Создание стен отделочного типа
« Ответ #3 : 28-09-2020, 15:20:57 »
Проблему решил, намудрил вначале с параметрами.
Такой вариант работает: Create(Document, Curve, ElementId, ElementId, Double, Double, Boolean, Boolean)

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 0
Re: Создание стен отделочного типа
« Ответ #4 : 28-09-2020, 18:06:42 »
В случае наличия окна или двери в стене, построенные отделочные стены не вырезают геометрию проемов. Подскажите, пожалуйста, можно ли использовать JoinGeometryUtils.JoinGeometry для решения этой проблемы? Или же можно как-то еще реализовать функцию "соединить", чтоб несущие стены соединялись с отделочными?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Создание стен отделочного типа
« Ответ #5 : 28-09-2020, 18:09:56 »
можно ли использовать JoinGeometryUtils.JoinGeometry

Можно, будет нормально вырезаться

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 0
Re: Создание стен отделочного типа
« Ответ #6 : 28-09-2020, 18:18:15 »
Александр Игнатович, спасибо, все корректно строится и вырезается.