[Arch] Allow Arch_stairs with 2 steps (#8515)

- Fixes #7050
This commit is contained in:
Roy-043
2023-02-16 20:56:22 +01:00
committed by GitHub
parent 08b3bf4462
commit dfc57aa80e

View File

@@ -1330,24 +1330,25 @@ class _Stairs(ArchComponent.Component):
"builds a straight staircase with/without a landing in the middle"
if obj.NumberOfSteps < 3:
if obj.NumberOfSteps < 2:
print("Fewer than 2 steps, unable to create/update stairs")
return
v = DraftGeomUtils.vec(edge)
landing = 0
if obj.TreadDepthEnforce == 0:
if obj.Landings == "At center":
if obj.Landings == "At center" and obj.NumberOfSteps > 3:
if obj.LandingDepth:
reslength = edge.Length - obj.LandingDepth.Value
else:
reslength = edge.Length - obj.Width.Value
treadDepth = float(reslength)/(obj.NumberOfSteps-2) # why needs 'float'?
treadDepth = reslength/(obj.NumberOfSteps-2)
obj.TreadDepth = treadDepth
vLength = DraftVecUtils.scaleTo(v,treadDepth)
else:
reslength = edge.Length
treadDepth = float(reslength)/(obj.NumberOfSteps-1) # why needs 'float'?
treadDepth = reslength/(obj.NumberOfSteps-1)
obj.TreadDepth = treadDepth
vLength = DraftVecUtils.scaleTo(v,treadDepth)
else:
@@ -1370,7 +1371,7 @@ class _Stairs(ArchComponent.Component):
h = obj.RiserHeightEnforce.Value * (obj.NumberOfSteps)
hstep = obj.RiserHeightEnforce.Value
obj.RiserHeight = hstep
if obj.Landings == "At center":
if obj.Landings == "At center" and obj.NumberOfSteps > 3:
landing = int(obj.NumberOfSteps/2)
else:
landing = obj.NumberOfSteps
@@ -1382,7 +1383,7 @@ class _Stairs(ArchComponent.Component):
obj.AbsTop = p1.add(Vector(0,0,h))
p2 = p1.add(DraftVecUtils.scale(vLength,landing-1).add(Vector(0,0,landing*hstep)))
if obj.Landings == "At center":
if obj.Landings == "At center" and obj.NumberOfSteps > 3:
if obj.LandingDepth:
p3 = p2.add(DraftVecUtils.scaleTo(vLength,obj.LandingDepth.Value))
else:
@@ -1414,13 +1415,16 @@ class _Stairs(ArchComponent.Component):
self.makeStraightStairs(obj,Part.LineSegment(p1,p2).toShape(),obj.DownSlabThickness.Value,obj.RiserHeight.Value,landing,None,'toSlabThickness')
else:
if obj.Landings == "At center":
print("Fewer than 4 steps, unable to create landing")
self.makeStraightStairs(obj,Part.LineSegment(p1,p2).toShape(),obj.DownSlabThickness.Value,obj.UpSlabThickness.Value,landing,None,None)
print (p1, p2)
if obj.Landings == "At center" and obj.Flight not in ["HalfTurnLeft", "HalfTurnRight"]:
print (p3, p4)
elif obj.Landings == "At center" and obj.Flight in ["HalfTurnLeft", "HalfTurnRight"]:
print (p3r, p4r)
if obj.Landings == "At center" and obj.NumberOfSteps > 3:
if obj.Flight not in ["HalfTurnLeft", "HalfTurnRight"]:
print (p3, p4)
elif obj.Flight in ["HalfTurnLeft", "HalfTurnRight"]:
print (p3r, p4r)
edge = Part.LineSegment(p1,p2).toShape()