I searched all the related posts and we seem to be having a problem determining the rotation of assemblies. When i dug deeper I found the API is throwing an exception when polling the rotation. Are there any workarounds to this?
You can use the AssemblyInstance’s GetTransform method and calculate its rotation using some of the built-in methods for the XYZ class. The code shown here outputs the plan rotation (i.e. rotation on the XY plane) of all assembly instances in the current document:
import clr clr.AddReference('RevitAPI') from Autodesk.Revit.DB import * clr.AddReference('RevitServices') from RevitServices.Persistence import DocumentManager import math doc = DocumentManager.Instance.CurrentDBDocument assemblies = FilteredElementCollector(doc).OfClass(AssemblyInstance) angles =  for a in assemblies: transform = a.GetTransform() vec_x = transform.BasisX # Calculate angle of transform's BasisX against standard X axis. # BasisZ is the normal of the plane. angle = vec_x.AngleOnPlaneTo(XYZ.BasisX, XYZ.BasisZ) angles.append(math.degrees(angle)) OUT = angles
Thank you. I’ll give this a twirl.