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

ADN Club => Revit API => Тема начата: user32 от 15-05-2020, 11:41:00

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

(https://i.postimg.cc/tsh9w56s/2020-05-15-11-37-26.png) (https://postimg.cc/tsh9w56s)
Название: Re: Высота помещений
Отправлено: Александр Игнатович от 15-05-2020, 11:52:21
Можешь попробовать с помощью SpatialElementGeometryCalculator получить Solid, а уже из него взять высоту bounding box-а
Название: Re: Высота помещений
Отправлено: user32 от 15-05-2020, 12:03:16
Спасибо, счас попробую!
Название: Re: Высота помещений
Отправлено: user32 от 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.  
Название: Re: Высота помещений
Отправлено: Iurii от 17-05-2020, 07:23:09
Столкнулся с подобной проблемой, не было пока времени обратиться за помощью, пользуюсь случаем спрашиваю:
1. Необходимо было светильникам и другим электрическим элементам присвоить параметр "Номер комнаты". Находил центр элемента и перебирал помещения функцией типа "room.IsPointInRoom(centerElement)". Не сработало на встраиваемых светильниках - центр светильника оказывался выше многослойного потолка, а как оказалось Revit считает, что помещение им (многослойным потолком) ограничивается. Выкрутился тем, что искал по нижней точке. Но возможно понадобится искать элементы за многослойным потолком - как здесь их находить?
2. Для всех элементов в электрике необходимы УГО. Кроме того, многим необходимо делать возможность сдвига относительно точки установки как в + так и в - , что вынуждает задавать опорную плоскость в 1-1,5 м от центра семейства. Как я понял центр семейства берётся включая опорную плоскость. В результате у подобных элементов, установленных близко к стене не определяется (или некорректно определяется) номер помещения. Возможно ли для определения положения в пространстве элемента использовать только его грубо говоря Solid?
Название: Re: Высота помещений
Отправлено: Александр Игнатович от 17-05-2020, 12:45:58
Для начала, я попрошу в дальнейшем вопросы, не имеющие отношения к теме, созданной автором сообщения, задавать отдельно.

По твоим вопросам, я бы решал пользовательскими инструментами с помощью точки расчета площади. В семействе включаем параметр:
(https://i.postimg.cc/WDPpnYdm/calc-point.png) (https://postimg.cc/WDPpnYdm)

Вытаскиваем её в нужное место:
(https://i.postimg.cc/7GfRTwqK/calc-point-graphics.png) (https://postimg.cc/7GfRTwqK)

Теперь в проекте оно выглядит как-то так:
(https://i.postimg.cc/qhP1hKb7/calc-point-in-the-project.png) (https://postimg.cc/qhP1hKb7)

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

(https://i.postimg.cc/Xp8g3tbq/schedule.png) (https://postimg.cc/Xp8g3tbq)

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

(https://i.postimg.cc/jDDvXvpj/lookup.png) (https://postimg.cc/jDDvXvpj)