Advertisement
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("RevitNodes")
- import Revit
- clr.ImportExtensions(Revit.Elements)
- clr.AddReference("RevitServices")
- import RevitServices
- from RevitServices.Persistence import DocumentManager
- from RevitServices.Transactions import TransactionManager
- from System.Collections.Generic import *
- import math
- doc = DocumentManager.Instance.CurrentDBDocument
- clr.ImportExtensions(Revit.GeometryConversion)
- inn = IN[0]
- if not isinstance(inn, list):
- inn = [inn]
- angle = (IN[1]*math.pi)/180
- inc = 304.8
- TransactionManager.Instance.EnsureInTransaction(doc)
- for i in inn:
- elemId = UnwrapElement(i).Id
- try:
- xyz = UnwrapElement(i).Location.Point
- pt1 = Point.ByCoordinates(xyz.X*inc, xyz.Y*inc,xyz.Z*inc)
- pt2 = Point.ByCoordinates(xyz.X*inc, xyz.Y*inc,xyz.Z*inc + 10)
- line = Line.ByStartPointEndPoint(pt1, pt2).ToRevitType()
- Autodesk.Revit.DB.ElementTransformUtils.RotateElement(doc, elemId, line, angle)
- UnwrapElement(i).ToDSType(True)
- except:
- elemLine = UnwrapElement(i).Location.Curve.ToProtoType()
- pt1 = elemLine.PointAtParameter(0.5)
- pt2 = Point.ByCoordinates(pt1.X, pt1.Y,pt1.Z + 10)
- line = Line.ByStartPointEndPoint(pt1, pt2).ToRevitType()
- Autodesk.Revit.DB.ElementTransformUtils.RotateElement(doc, elemId, line, angle)
- UnwrapElement(i).ToDSType(True)
- TransactionManager.Instance.TransactionTaskDone()
- OUT = IN[0]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement