import clr clr.AddReference('RevitAPI') from Autodesk.Revit.DB import * clr.AddReference('RevitAPIUI') from Autodesk.Revit.UI import * clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * clr.AddReference('RevitServices') import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager doc = DocumentManager.Instance.CurrentDBDocument clr.AddReference('RevitAPI') import Autodesk from Autodesk.Revit.DB import * from Autodesk.Revit.DB.Architecture import StairsRun clr.AddReference('RevitNodes') import Revit clr.ImportExtensions(Revit.GeometryConversion) class StairsFailurePreprocessor2( IFailuresPreprocessor ): def PreprocessFailures(self, failuresAccessor): return FailureProcessingResult.Continue baseLevel = UnwrapElement(IN[0]) nextLevel = UnwrapElement(IN[1]) bCurves = IN[2] rCurves = IN[3] pCurves = IN[4] TransactionManager.Instance.ForceCloseTransaction() newStairsScope = StairsEditScope(doc, 'New Stairs') newStairsId = newStairsScope.Start(baseLevel.Id, nextLevel.Id) trans = Autodesk.Revit.DB.Transaction(doc, 'Stair Transaction') trans.Start() bdryCurves = list(bCurves) riserCurves = list(rCurves) pathCurves = list(pCurves) #boundary #bCurve1s = Line.StartPoint(bCurves[0]) #bCurve1a = Line.EndPoint(bCurves[0]) #bCurve2s = Line.StartPoint(bCurves[1]) #bCurve2a = Line.EndPoint(bCurves[1]) #bdryCurves.append(Line.CreateBound(bCurve1s,bCurve1a) #bdryCurves.append(Line.CreateBound(bCurve2s,bCurve2a) #riser curves #for riserCurves in rCurves: # end0 = Line.(rCurves).StartPoint # end1 = Line(rCurves).EndPoint #riserCurves.append(Line.CreateBound(end0,end1)) #path curves #pCurve1s = Line.StartPoint(pCurves[0]) #pCurve1e = Line.EndPoint(pCurves[0]) #pathCurves.append(Line.CreateBound(pCurve1s,pCurve1e)) newRun1 = Autodesk.Revit.DB.Architecture.StairsRun.CreateSketchedRun(doc, newStairsId, baseLevel.Elevation, bdryCurves, riserCurves, pathCurves) trans.Commit() newStairsScope.Commit(StairsFailurePreprocessor2()) OUT = newRun1