Изменить размер BoundingBox

Главная Форумы Задать вопрос Изменить размер BoundingBox

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #6386 Score: 1
    txt
    Модератор
    86 pts

    Недавно возникла задача:
    Найти трубы находящиеся рядом с определенной трубой (точнее трубами)
    Если рассматривать одну такую трубу , то задача решается определением ее BoundingBox и расширением ее границ , нашел такой метод:
    def bb(x):
    return x.BoundingBox
    for i in IN[0]: #определенные трубы
    outline = Outline(bb(i).MinPoint.ToXyz(), bb(i).MaxPoint.ToXyz())
    offset=IN[1] #задаем смещение BoundingBox в [мм]
    filter = BoundingBoxIntersectsFilter(outline, offset/304.8) #перевод единиц: [мм]=[футы]/304.8
    collector = FilteredElementCollector(doc, doc.ActiveView.Id).WherePasses(filter)
    to_els = [i.ToDSType(True) for i in collector]
    list_all.append(to_els)

    list_all – это список ВСЕХ элементов которые пересекает расширенный по габаритам BoundingBox (ну далее отфильтровать нужные элементы дело нехитрое);
    вместо BoundingBoxIntersectsFilter(outline) можно использовать метод: BoundingBoxIsInsideFilter(outline) я не пробовал, но МНЕ КАЖЕТСЯ что это все элементы попадающие ЦЕЛИКОМ в BoundingBox …
    Вместо труб конечно можно использовать другие элементы, так что может кому и пригодится ,
    Может еще кто чего дополнит по этой теме…

    #6392 Score: 0
    Legantmar
    Хранитель
    475 pts

    молодец, я не знал про Outline и IntersectsFilter
    делаю обычно так, с помощью функции, оно мне как то понятнее (пример):

    #6396 Score: 0
    txt
    Модератор
    86 pts

    это написано в стороннем питоне , который как то взаимодействует с динамо ?

    #6398 Score: 1
    Legantmar
    Хранитель
    475 pts

    это просто редактор (я использую sublime)
    для использования внешних скриптов в dynamo используй эту схему:

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Для ответа в этой теме необходимо авторизоваться.