Create Stairs From CAD Link/List of Lines with Python Script?

SUCCESS!!!
Finally going in the right direction!



Here is the code that worked:

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
doc = DocumentManager.Instance.CurrentDBDocument

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

doc = DocumentManager.Instance.CurrentDBDocument	
class StairsFailurePreprocessor( 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 = Transaction(doc, 'Stair Transaction')
trans.Start()

bdryCurves = list(bCurves)
riserCurves = list(rCurves)
pathCurves = list(pCurves)


newRun1 = Autodesk.Revit.DB.Architecture.StairsRun.CreateSketchedRun(doc, newStairsId, baseLevel.Elevation, bdryCurves, riserCurves, pathCurves)
trans.Commit()
newStairsScope.Commit(StairsFailurePreprocessor())

OUT = newRun1

I guess we can call it good for now. Now that it is set up, I will work on landings, second half of the stairs (to make it to Level 2), and finally incorporate multiple separate flights. Stay tuned…

Many thanks to @wouter.hilhorst and @c.poupin for getting me through it. Happy Friday!!!

1 Like