Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import clr
- clr.AddReference('RevitAPI')
- import Autodesk
- from Autodesk.Revit.DB import *
- clr.AddReference('ProtoGeometry')
- from Autodesk.DesignScript.Geometry import *
- clr.AddReference("RevitServices")
- import RevitServices
- from RevitServices.Persistence import DocumentManager
- from RevitServices.Transactions import TransactionManager
- doc = DocumentManager.Instance.CurrentDBDocument
- uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
- uiapp=DocumentManager.Instance.CurrentUIApplication
- app = uiapp.Application
- def ЗначенияПоИменамИзСписка(_элемент, _списокПараметров):
- outlist = list()
- for параметр in _списокПараметров:
- одноименныеПарам = _элемент.GetParameters(параметр)
- значениеПарам = None
- for парам in одноименныеПарам:
- if парам.AsValueString():
- значениеПарам = парам.AsValueString()
- break
- outlist.append(значениеПарам)
- return outlist
- def ЗаписьПараметров(_элемент, _парамДляЗаписи, _значения):
- for парам, значение in zip(_парамДляЗаписи, _значения):
- _элемент.LookupParameter(парам).Set(значение)
- return True
- #---------------------------
- парамИФЦ = ["IfcName","IfcDescription","IfcMaterial"]
- парамРВТ = ["Имя1", "Имя2", "Имя3"]
- #---------------------------
- стены = FilteredElementCollector(doc)\
- .OfCategory(BuiltInCategory.OST_Walls)\
- .WhereElementIsNotElementType().ToElements()
- outlist = list()
- for стена in стены:
- списокЗначений = ЗначенияПоИменамИзСписка(стена, парамИФЦ)
- TransactionManager.Instance.EnsureInTransaction(doc)
- запись = ЗаписьПараметров(стена, парамРВТ, списокЗначений)
- TransactionManager.Instance.TransactionTaskDone()
- outlist.append(запись)
- OUT = outlist
Advertisement
Add Comment
Please, Sign In to add comment