Advertisement
IvaSerge

GetPypeBySysName

Nov 13th, 2019
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | None | 0 0
  1. import clr
  2.  
  3. clr.AddReference("RevitServices")
  4. import RevitServices
  5. from RevitServices.Persistence import DocumentManager
  6. doc = DocumentManager.Instance.CurrentDBDocument
  7.  
  8. # Import RevitAPI
  9. clr.AddReference("RevitAPI")
  10. from Autodesk.Revit.DB import *
  11.  
  12. import System
  13. from System import Array
  14. from System.Collections.Generic import *
  15.  
  16. #Задача: выбрать все элементы (трубы отводы тройники и т д)
  17. #принадлежащие одной ветви в автоматической режиме
  18. systemName = "Подача жидкости 1"
  19.  
  20. #Пойдем по самому жесткому методу и для выбора элеметов
  21. #буду использовать методы АПИ а не Динамо.
  22.  
  23. #1. Выбрал Лукапом первую попавшуюся трубу.
  24. #У трубы есть параметр Имя Системы.
  25. #РАскрываю парамет и захожу в Дефинишн
  26. #оказывается, это встроенный параметр BuiltInParameter.RBS_SYSTEM_NAME_PARAM
  27.  
  28. #2. создаем список категорий, по которым будем искать
  29. cat_list = [BuiltInCategory.OST_PipeCurves, BuiltInCategory.OST_PipeFitting]
  30.  
  31. #Переводим список из языка Питон в список .Net
  32. typed_list = List[BuiltInCategory](cat_list)
  33.  
  34. #Создаем фильтр
  35. filter = ElementMulticategoryFilter(typed_list)
  36. elements = FilteredElementCollector(doc).WherePasses(filter)\
  37.                 .WhereElementIsNotElementType().ToElements()
  38.  
  39. #теперь обычным генератором фильтруем элементы
  40. filteredElem = [elem for elem in elements if
  41.     elem.get_Parameter(
  42.     BuiltInParameter.RBS_SYSTEM_NAME_PARAM).AsString() == systemName]
  43.  
  44. OUT = filteredElem
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement