Высота помещений

Автор Тема: Высота помещений  (Прочитано 4274 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Высота помещений
« : 15-05-2020, 11:41:00 »
Здравствуйте!
Существует параметр ROOM_HEIGHT, который показывает высоту всего помещения, но Вычисление объема помещения происходит до того момента пока помещение не упрется в потолок и если дальше вести помещение вверх, то объем не изменится.
Можно ли как то узнать именно эту высоту помещения до перекрытия, отбросив оставшуюся высоту?
На данный момент я вижу 2 варианта решения:
1. Просить проектировщиков корректно выставлять высоту именно до перекрытия
2. Вычислять эту высоту путем деления объема на площадь
Вот скрины, что я имею ввиду, как видно, объем помещения не изменился



Отмечено как Решение user32 15-05-2020, 12:38:52

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Высота помещений
« Ответ #1 : 15-05-2020, 11:52:21 »
Можешь попробовать с помощью SpatialElementGeometryCalculator получить Solid, а уже из него взять высоту bounding box-а

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Высота помещений
« Ответ #2 : 15-05-2020, 12:03:16 »
Спасибо, счас попробую!

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Высота помещений
« Ответ #3 : 15-05-2020, 12:38:49 »
Получилось, вроде работает, сделал так:
Код - C# [Выбрать]
  1. SpatialElementBoundaryOptions sebOptions = new SpatialElementBoundaryOptions
  2. {
  3.         SpatialElementBoundaryLocation = SpatialElementBoundaryLocation.Finish
  4. };
  5. SpatialElementGeometryCalculator calc = new SpatialElementGeometryCalculator(document, sebOptions);
  6.  
  7. SpatialElementGeometryResults results = calc.CalculateSpatialElementGeometry(room);
  8.  
  9. Solid roomSolid = results.GetGeometry();
  10. var getbb = roomSolid.GetBoundingBox();
  11. var maxZ = getbb.Max.Z;
  12. var minZ = getbb.Min.Z;
  13. var height = maxZ - minZ
  14.  

Оффлайн Iurii

  • ADN OPEN
  • Сообщений: 25
  • Карма: 0
Re: Высота помещений
« Ответ #4 : 17-05-2020, 07:23:09 »
Столкнулся с подобной проблемой, не было пока времени обратиться за помощью, пользуюсь случаем спрашиваю:
1. Необходимо было светильникам и другим электрическим элементам присвоить параметр "Номер комнаты". Находил центр элемента и перебирал помещения функцией типа "room.IsPointInRoom(centerElement)". Не сработало на встраиваемых светильниках - центр светильника оказывался выше многослойного потолка, а как оказалось Revit считает, что помещение им (многослойным потолком) ограничивается. Выкрутился тем, что искал по нижней точке. Но возможно понадобится искать элементы за многослойным потолком - как здесь их находить?
2. Для всех элементов в электрике необходимы УГО. Кроме того, многим необходимо делать возможность сдвига относительно точки установки как в + так и в - , что вынуждает задавать опорную плоскость в 1-1,5 м от центра семейства. Как я понял центр семейства берётся включая опорную плоскость. В результате у подобных элементов, установленных близко к стене не определяется (или некорректно определяется) номер помещения. Возможно ли для определения положения в пространстве элемента использовать только его грубо говоря Solid?

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Высота помещений
« Ответ #5 : 17-05-2020, 12:45:58 »
Для начала, я попрошу в дальнейшем вопросы, не имеющие отношения к теме, созданной автором сообщения, задавать отдельно.

По твоим вопросам, я бы решал пользовательскими инструментами с помощью точки расчета площади. В семействе включаем параметр:


Вытаскиваем её в нужное место:


Теперь в проекте оно выглядит как-то так:


Обрати внимание, что в пространстве семейство расположено в помещении #2, точка расчета площади в помещении #1. Точка расчета площади позволяет специфицировать его в локации #1



Соответственно, программно точно так же получаем помещение #1: