Линии контура помещения

Главная Форумы Python Revit Library (API) Линии контура помещения

Помечено: , ,

В этой теме 4 ответа, 4 участника, последнее обновление  ИваСерж 12 мес. назад.

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Автор
    Сообщения
  • #6399 Score: 2

    Legantmar
    Хранитель
    440 pts

    или как их еще называют Boundary segments of room

    import clr
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *

    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.GeometryConversion)

    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    doc = DocumentManager.Instance.CurrentDBDocument

    item = UnwrapElement(IN[0])

    options = SpatialElementBoundaryOptions()
    segments = item.GetBoundarySegments(options)
    lines = [i.GetCurve().ToProtoType() for i in segments[0]]
    OUT = lines
    p.s. при копировании кода отсюда, поправьте кавычки в подключаемых библиотеках
    p.s. также можете использовать готовый нод Room.Boundaries из пакета Clockwork

    #6467 Score: 2

    @zhukoven.com
    Участник
    16 pts

    Есть ещё и встроенный node, который извлекает кривые из границ помещения: Room.FinishBoundary:

    #6470 Score: 0

    Alex
    Участник
    2 pts

    В продолжение этой темы, можно поднять другую. Если помещение вот такой сложной формы, как по нему находить элементы внутри? Если боудинг боксом делать, то он начинает захватывать элементы из соседних помещений, которые попадают в общий куб.

    #6472 Score: 0

    Legantmar
    Хранитель
    440 pts

    Alex, есть 2 варианта:
    1) создаешь solid по линиям контура и с помощью нода Geometry.DoesIntersect проверяешь пересечения

    2) использовать нод GetSurrounding

    #6474 Score: 1

    ИваСерж
    Модератор
    91 pts

    Алекс, я пользуюсь методом из АПИ IsPointInRoom.
    Для определения, находится ли семейство в комнате, я извлекаю его LocationPoint.
    http://www.revitapidocs.com/2015/96e29ddf-d6dc-0c40-b036-035c5001b996.htm
    Беру комнату и проверяю, попадает ли LocationPoint в комнату или нет.
    Поскольку конфигурация моих семейств такая, что LocationPoint однозначно определяет, есть ли семейство в помещении или нет, то у меня и проблем нет. Из приемуществ метода – метод работает с любой сложной конфигурацией помещений – круглые, атриумы, с составными стенами и т.п. Из недостатков – Локейш Поинт это все-таки не семейство.

    Для улучшения скорости можно, даже нужно, применять несколько фильтров, по этажу и Баундинг бокс Интерсектс как предварительный фильтр, ИзИнРум – фильтр для уточнения результатов.

     

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)

Для ответа в этой теме необходимо авторизоваться.