Since people were asking about the python code for multiple text rotations, I modified this python code to accept lists:
import clr
import math
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
#Preparing input from dynamo to revit
element = []
for i in UnwrapElement(IN[0]):
element.append(i)
angle = IN[1]*math.pi/180
#calculte rotation axis:
baseVector = []
upVector = []
for i in element :
baseVector.append(i.BaseDirection)
upVector.append(i.UpDirection)
normalVector = []
for i,j in zip(baseVector,upVector):
normalVector.append(i.CrossProduct(j))
axis = []
for i,j in zip(element,normalVector) :
axis.append(Line.CreateUnbound(i.Coord,j))
#Do some action in a Transaction
for i,j in zip(element, axis) :
TransactionManager.Instance.EnsureInTransaction(doc)
ElementTransformUtils.RotateElement(doc, i.Id, j, angle)
TransactionManager.Instance.TransactionTaskDone()
OUT = element