Modul 2 add an output

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"

I too am trying to figure this out. I know it has to do with lines 88-95.
I have been playing around with it for some time and I cannot get it to say “Elevation Created”. I know the problem has something to do with the curves I am feeding it but not sure. I would like to remove the SetCropRegionShape from the code and use View.SetCropBoxCurves Shown in this post for more control.

Thanks for any help you can provide,

I added the code in one block if that more helpful.

#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"

Did anyone manage to code in the out elements of the created elevations to set crop box curves after and change parameters?

Found this in the comments, someone modified the code to have an elevations created output list

toggle = IN[0]
points = UnwrapElement(IN[1])
modelPoints = UnwrapElement(IN[2])
cropCurves = UnwrapElement(IN[3])
viewType = UnwrapElement(IN[4])
 
lst = []
viewid = []
output = []
 
#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)
        viewid.append(ele)
       
        #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()
   
    output.append([lst,viewid])
   
    OUT = output
   
   
else:
 
    OUT = "Set Run Gate to TRUE"

some more reading to fix missed elevation… SetCropRegionShape() method (line 59) has been replaced with SetCropShape() for 2017 Revit