I have a error that i below script.
can you please give me a hints what’s wrong with this scripts?
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# Import RevitAPI
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Mechanical import *
from Autodesk.Revit.DB.Plumbing import *
from Autodesk.Revit.DB.ExternalService import *
from Autodesk.Revit.DB.ExtensibleStorage import *
# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# Import ToProtoType, ToRevitType geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)
# Import DSCore nodes in Dynamo
clr.AddReference('DSCoreNodes')
import DSCore
from DSCore import *
# Import python library
import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
sys.path.append(pyt_path)
import os
import shutil
import math
# Import math library
from math import *
#Import System Library
import System
from System.Collections.Generic import *
from System.IO import Directory, Path
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
if isinstance(IN[0], list):elems = UnwrapElement(IN[0])
else: elems = [UnwrapElement(IN[0])]
def getfaces(id, s):
faces = s.Faces
painted = [doc.IsPainted(id, f) for f in faces]
surfs = [f.ToProtoType()[0] for f in faces]
return surfs, painted
outbool = []
outsurf = []
for e in elems:
eId = e.Id
geom = [g for g in e.Geometry[Options()] if isinstance(g, Solid)]
if geom == []:
outsurf.append("Not a valid solid.")
outbool.append(False)
continue
for g in geom:
gSurf, gPaint = getfaces(eId, g)
if gSurf == []:
continue
else:
outsurf.append(gSurf)
outbool.append(gPaint)
for face1 in outsurf:
if all(i==True for i in face1):
outbool.append(False)
else:
outbool.append(True)
def getFaceloope(elems):
lstref = HostObjectUtils.GetSideFaces(elems, ShellLayerType.Interior)
for ref in lstref:
face = elems.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
vft = FilteredElementCollector(doc).OfClass(ViewFamilyType).ToElements().Find(lambda i : i.ViewFamily == ViewFamily.Elevation)
viewTypeId = vft.Id
TransactionManager.Instance.EnsureInTransaction(doc)
#get propreties
curvloop = getFaceloop(elems)
locCurv = elems.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 = face1,vft,eleMarker