Sure
the code
- get all doors in project,
- edit each family,
- set the parameter ROOM_CALCULATION_POINT
- reload family in Project
import clr
import sys
import System
from System.Collections.Generic import List
### ------------- Import RevitAPI -----------------------------------------###
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
### ------------- Import DocumentManager y TransactionManager -------------###
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from System.Collections.Generic import *
### ------------- Here all Definitions --------------------------------------###
# tolist() function to ensure that the element is iterable
def tolist(x):
if hasattr(x,'__iter__'): return x
else : return [x]
### ------------- Current document and User Interface. ----------------------###
doc = DocumentManager.Instance.CurrentDBDocument
##class for Load ##
class FamilyOption(IFamilyLoadOptions) :
def OnFamilyFound(self, familyInUse, overwriteParameterValues):
overwriteParameterValues.Value = True
return True
def OnSharedFamilyFound(self, sharedFamily, familyInUse, source, overwriteParameterValues):
overwriteParameterValues.Value = True
return True
# Retrieve all the door families in the project
filterDoors = System.Predicate[System.Object](lambda x :x.FamilyCategory.Id == ElementId(BuiltInCategory.OST_Doors))
doorFamilies = List[DB.Element](FilteredElementCollector(doc).OfClass(Family).ToElements()).FindAll(filterDoors)
TransactionManager.Instance.ForceCloseTransaction()
# Loop through each door family
for family in doorFamilies:
# Open the door family for editing
familyDoc = doc.EditFamily(family)
owner_family = familyDoc.OwnerFamily
TransactionManager.Instance.ForceCloseTransaction()
TransactionManager.Instance.EnsureInTransaction(familyDoc)
# Find the parameter you want to change
parameter = owner_family.get_Parameter(BuiltInParameter.ROOM_CALCULATION_POINT)
# Update the parameter value
parameter.Set(1)
# Load the updated door family back into the project and overwrite the existing version and its parameters
TransactionManager.Instance.TransactionTaskDone()
TransactionManager.Instance.ForceCloseTransaction()
# load to Project and close
familyDoc.LoadFamily(doc, FamilyOption())
familyDoc.Close(False)