I’m struggling with the python from http://learndynamo.com/mod2/
I don’t know much python and i can’t figure it out.
As an output i also want the created elevations, so that i can set some parameters after it is created.
Can somebody tell me what i need to change.
thank you
#Copyright(c) 2016 www.Learndynamo.com #Please contact at jeremy@learndynamo.com
import clr clr.AddReference('RevitAPI') clr.AddReference("RevitServices") clr.AddReference("RevitNodes") import RevitServices import Revit import Autodesk from Autodesk.Revit.DB import * from math import *
clr.ImportExtensions(Revit.GeometryConversion)
from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
toggle = IN[0] points = UnwrapElement(IN[1]) modelPoints = UnwrapElement(IN[2]) cropCurves = UnwrapElement(IN[3]) viewType = UnwrapElement(IN[4])
lst = []
#Get Family View Type vft = 0 collector = FilteredElementCollector(doc).OfClass(ViewFamilyType).ToElements()
#eleViews = [] for i in collector: if i.ViewFamily == ViewFamily.Elevation: vft = i.Id break
if toggle == True:
TransactionManager.Instance.EnsureInTransaction(doc) for ind, point in enumerate(points):
#Retrieve the mid point of model lines and get X,Y. modelMP = modelPoints[ind].ToXyz() modelMPX = modelMP.X modelMPY = modelMP.Y #Retrieve individual lines of crop window. cropLines = cropCurves[ind] l1 = cropLines[0].ToRevitType() l2 = cropLines[1].ToRevitType() l3 = cropLines[2].ToRevitType() l4 = cropLines[3].ToRevitType() # Create a line in the z-Axis for elevation marker to rotate around. elevationPT = point.ToXyz() elptRotate = XYZ(elevationPT.X, elevationPT.Y, elevationPT.Z+100) ln = Line.CreateBound(elevationPT, elptRotate)
#Calculate the angle between Model Mid Point and Elevation Point. elevationPTY = elevationPT.Y elevationPTX = elevationPT.X combY = elevationPTY-modelMPY combX = elevationPTX-modelMPX ang = atan2(combY, combX)
#Create elevation marker and elevation in position 0. eleMarker = ElevationMarker.CreateElevationMarker(doc, viewType.Id, elevationPT, 100) ele = eleMarker.CreateElevation(doc, doc.ActiveView.Id , 0) #Rotate elevation marker towars model line. ElementTransformUtils.RotateElement(doc, eleMarker.Id, ln, ang) # crManager = ele.GetCropRegionShapeManager() #crShape = crManager.GetCropRegionShape()
newCurveLoop = [] newCurveLoop.Add(l1) newCurveLoop.Add(l2) newCurveLoop.Add(l3) newCurveLoop.Add(l4) cLoop = CurveLoop.Create(newCurveLoop)
try: crManager.SetCropRegionShape(cLoop) lst.append("Elevation Created") except: pass lst.append("Missed Elevation")
TransactionManager.Instance.TransactionTaskDone() OUT = lst else:
OUT = "Set toggle to TRUE"