SHARE
TWEET

GetPypeBySysName

IvaSerge Nov 13th, 2019 (edited) 119 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top