Hi All,
I am using the same references as @Thom - see below for what examples I’m trying to pull from. I have gotten passed most visible errors - but the stairs do not stay / commit. This seemed to be other users problems but my commit lines don’t seem to be working.
Thanks in advance to anyone with advice.
current code:
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference('RevitNodes')
import Revit
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import TaskDialog
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import IFailuresPreprocessor
from Autodesk.Revit.DB import StairsEditScope
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB import Parameter
from Autodesk.Revit.DB.Architecture import StairsRun
from Autodesk.Revit.DB.Architecture import *
class StairsFailurePreprocessor( IFailuresPreprocessor ):
def PreprocessFailures(failuresAccessor):
return FailureProcessingResult.Continue
baseLevel = UnwrapElement(IN[0])
nextLevel = UnwrapElement(IN[5])
doc = DocumentManager.Instance.CurrentDBDocument
a = StairsFailurePreprocessor()
trans = Autodesk.Revit.DB.Transaction(doc, 'Stair Transaction')
newStairsScope = StairsEditScope(doc, "New Stairs")
newStairsId = newStairsScope.Start( baseLevel.Id, nextLevel.Id)
trans.Start()
#TransactionManager.Instance.EnsureInTransaction(doc)
stairArray = CurveArray()
pt5 = XYZ(0,0,0)
pt6 = XYZ(15,0,0)
pt7 = XYZ(0,10,0)
pt8 = XYZ(15,10,0)
bdryCurves = list()
riserCurves = list()
pathCurves = list()
bdryCurves.append(Line.CreateBound(pt5, pt6))
bdryCurves.append(Line.CreateBound(pt7, pt8))
#riser curves
riserNum = 17
for ii in range(0, 18):
end0 = (pt5 + pt6) * ii / float(riserNum)
end1 = (pt7 + pt8) * ii / float(riserNum)
end2 = XYZ(end1.X, 10, 0)
riserCurves.append(Line.CreateBound(end0,end2))
pathEnd0 = (pt5 + pt7) / 2.0
pathEnd1 = (pt6 + pt8) / 2.0
pathCurves.append(Line.CreateBound(pathEnd0, pathEnd1))
newRun1 = StairsRun.CreateSketchedRun(doc, newStairsId , baseLevel.Elevation , bdryCurves, riserCurves, pathCurves )
#TransactionManager.Instance.TransactionTaskDone()
trans.Commit()
#trans.Dispose()
newStairsScope.Commit(a)
#newStairsScope.Commit(new StairsFailurePreprocessor() )
#newStairsScope.Dispose()
OUT = newStairsId
-M
references: