ITM Hanger modification in Revit

Hi,

Here is an example

ITM Hanger modification

import clr
import sys
import System
#
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import Autodesk.DesignScript.Geometry as DS

#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB

#import transactionManager and DocumentManager (RevitServices is specific to Dynamo)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument

toList = lambda x : x if hasattr(x, "__iter__") and not isinstance(x, (str, System.String)) else [x]

#Preparing input from dynamo to revit
lstelems = toList(UnwrapElement(IN[0]))

length_rod = IN[1] *  3.28084 # convert meter to feet


#Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
for elem_part in lstelems:
    rod_info = elem_part.GetRodInfo()
    rod_info.CanRodsBeHosted = False
    rod_info.SetRodLength(0, length_rod)

TransactionManager.Instance.TransactionTaskDone()

new_rod_lenght = rod_info.GetRodLength(0) * 0.3048

OUT = lstelems  , new_rod_lenght
2 Likes