FilteredElementCollector
Главная › Форумы › Задать вопрос › FilteredElementCollector
- В этой теме 18 ответов, 7 участников, последнее обновление 3 года, 12 месяцев назад сделано
Илья.
-
АвторСообщения
-
Друзья , подскажите правильно ли я понимаю , что FilteredElementCollector применяется в динамо, когда нужно отфильтровать ВСЕ элементы в проекте с помощью OST_…. ?
Это метод Revit API, которым можно пользоваться в Динамо в Питон-скрипте
Все трубы в проекте :
***
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Applicationuidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
collector = FilteredElementCollector(doc) # создали коллектор
filter = ElementCategoryFilter(BuiltInCategory.OST_PipeCurves) # создали фильтр по категории OST_PipeCurves
All_pipes=collector.WherePasses(filter).WhereElementIsNotElementType().ToElements() # Отфильтровываем все что не соответствует фильтруOUT=All_pipes
Вопрос : как аналогично выбрать все трубы только на активном виде в питоне (что в код нужно добавить)?
txt, почти правильно
т.к. существуют:
FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElements()
FilteredElementCollector(doc).OfClass(Wall).ToElements()
такие записи идентичны, например, на выходе ты получишь элементы стен расположенных в проектеНо верхнюю строчку можно переписать и так:
FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsElementType().ToElements()
тогда получишь только типы элементов в файле без элементов размещенных в проекте.Подробнее здесь
Путем нехитрых манипуляций можно получать BuiltIn по имени категорииСпасибо за разъяснения… BuiltIn по имени – очень нужная и удобная штука!
а как насчет вопроса “Получить все трубы на активном виде” ?
Спасибо!
И еще вопрос:
если мы получили таким образом элементы на активном виде, то они включают в себя и скрытые элементы ?
Подскажите где ошибка (получить элемента только на активном виде):
Ошибка:
а я и не обещал, что на 3D виде будет работать ))
ты можешь получить все элементы, а далее прояви смекалку как бы ты их мог сам отфильтрофать по какому нить параметру в цикле for с условием if (если уровень, диаметр или цвет такой то, то сложить в список), надеюсь мысль понятна..)вопрос 1: как в питоне получить ВСЕ элементы на активном виде? (т.е. запитонить нод “All elements in active view”)
Примечание : нод “All elements in active view” не видит TextElement, так что тут не совсем All elements
вопрос 2: можно ли питоном заменить ноды:в итоге в питоне хотелось бы получить все элементы на активном виде (то что получаем стандартным нодом + TextElement Марки, Аннотации, Размеры и т.д.)
западный форум подсказал решение:
import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')
import Autodesk,RevitServices
from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
collector=FilteredElementCollector(doc,doc.ActiveView.Id).ToElements()
OUT=collectorДалее вопрос:
как получить ВСЕ элементы в ПРОЕКТЕ? -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.