IvaSerge

WallParametersReadWrite

Apr 5th, 2018
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.08 KB | None | 0 0
  1. import clr
  2. clr.AddReference('RevitAPI')
  3. import Autodesk
  4. from Autodesk.Revit.DB import *
  5.  
  6. clr.AddReference('ProtoGeometry')
  7. from Autodesk.DesignScript.Geometry import *
  8.  
  9. clr.AddReference("RevitServices")
  10. import RevitServices
  11. from RevitServices.Persistence import DocumentManager
  12. from RevitServices.Transactions import TransactionManager
  13.  
  14. doc = DocumentManager.Instance.CurrentDBDocument
  15. uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
  16. uiapp=DocumentManager.Instance.CurrentUIApplication
  17. app = uiapp.Application
  18.  
  19. def ЗначенияПоИменамИзСписка(_элемент, _списокПараметров):
  20.     outlist = list()
  21.     for параметр in _списокПараметров:
  22.         одноименныеПарам = _элемент.GetParameters(параметр)
  23.         значениеПарам = None
  24.         for парам in одноименныеПарам:
  25.             if парам.AsValueString():
  26.                 значениеПарам = парам.AsValueString()
  27.                 break
  28.         outlist.append(значениеПарам)
  29.     return outlist
  30.    
  31.    
  32. def ЗаписьПараметров(_элемент, _парамДляЗаписи, _значения):
  33.     for парам, значение in zip(_парамДляЗаписи, _значения):
  34.         _элемент.LookupParameter(парам).Set(значение)
  35.     return True
  36.        
  37.  
  38.  
  39. #---------------------------
  40. парамИФЦ = ["IfcName","IfcDescription","IfcMaterial"]
  41. парамРВТ = ["Имя1", "Имя2", "Имя3"]
  42. #---------------------------
  43.  
  44.  
  45. стены = FilteredElementCollector(doc)\
  46.         .OfCategory(BuiltInCategory.OST_Walls)\
  47.         .WhereElementIsNotElementType().ToElements()
  48.  
  49.  
  50. outlist = list()
  51. for стена in стены:
  52.     списокЗначений = ЗначенияПоИменамИзСписка(стена, парамИФЦ)
  53.     TransactionManager.Instance.EnsureInTransaction(doc)
  54.     запись = ЗаписьПараметров(стена, парамРВТ, списокЗначений)
  55.     TransactionManager.Instance.TransactionTaskDone()
  56.     outlist.append(запись)
  57.    
  58. OUT = outlist
Advertisement
Add Comment
Please, Sign In to add comment