Недавно возникла задача:
Найти трубы находящиеся рядом с определенной трубой (точнее трубами)
Если рассматривать одну такую трубу , то задача решается определением ее 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 …
Вместо труб конечно можно использовать другие элементы, так что может кому и пригодится ,
Может еще кто чего дополнит по этой теме…