Missing Crop Region Shape

Hello
an example with a wall

import clr
import sys
import math
import System
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import Autodesk.DesignScript.Geometry as DS

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
						
def getFaceloop(wall):
	lstref = HostObjectUtils.GetSideFaces(wall, ShellLayerType.Interior)
	for ref in lstref:
		face = wall.GetGeometryObjectFromReference(ref)
		edgLoopArr = face.EdgeLoops
		for lstEdg in edgLoopArr:
			lstCurvDS = [x.AsCurve().ToProtoType() for x in lstEdg]
			polycurvDS = DS.PolyCurve.ByJoinedCurves(lstCurvDS)
			lstCurv = List[Curve]([x.ToRevitType() for x in polycurvDS.Curves()])
			curvLoop = CurveLoop.Create(lstCurv)
			return curvLoop

wall = UnwrapElement(IN[0])

vft  = FilteredElementCollector(doc).OfClass(ViewFamilyType).ToElements().Find(lambda i : i.ViewFamily == ViewFamily.Elevation)
viewTypeId = vft.Id

TransactionManager.Instance.EnsureInTransaction(doc)
#get propreties
curvloopWall = getFaceloop(wall)
locCurv = wall.Location.Curve
vectA = locCurv.Direction.Normalize()
offSetCurve =  locCurv.CreateOffset(2, vectA.CrossProduct(XYZ(-1,0,0)))
pt = offSetCurve.Evaluate(0.5, True)
ln = Line.CreateBound(pt, pt + XYZ(0,0,10))
ang = vectA.AngleTo(XYZ(1,0,0)) * XYZ(1,0,0).CrossProduct(vectA).Normalize().Z
#create marker
eleMarker = ElevationMarker.CreateElevationMarker(doc, viewTypeId, pt, 100)
indXElev = 0 if ang > 0 else 2
ele = eleMarker.CreateElevation(doc, doc.ActiveView.Id , indXElev)
rot = eleMarker.Location.Rotate(ln, ang  + math.pi / 2)
#set cropShape
crManager = ele.GetCropRegionShapeManager()
crManager.SetCropShape(curvloopWall)

TransactionManager.Instance.TransactionTaskDone()

OUT = eleMarker
6 Likes