Walls

⚙️ Spec sheet →  —  visual schematic and metrics measured from a real rendered STL.

FDM-optimised wall shapes from BOSL2’s walls.scad — parts that use less material and print without support. SparseWall is an X-cross-braced open wall (and SparseCuboid a solid-box variant braced along one axis); CorrugatedWall a sinusoidal corrugated panel; ThinningWall and ThinningTriangle walls whose middle thins away while the edges stay thick, joined by angled shoulders that don’t overhang; NarrowingStrut the home-plate strut those triangles are built from. The honeycomb hex_panel is a follow-up.

class pybosl2.parts.walls.SparseWall(height=50, length=100, thick=4, maxang=30, strut=5, max_bridge=20)[source]

Bases: object

An open, X-cross-braced rectangular wall that saves material.

and prints support-free (BOSL2 sparse_wall()).

A solid border of width strut frames a lattice of diagonal braces, each kept under maxang from vertical (so it needs no support) and spaced so no bridge exceeds max_bridge. The wall is thick in X, length long in Y and height tall in Z.

Examples

from pybosl2.parts.walls import SparseWall
SparseWall(height=50, length=100, thick=4).show()
Loading 3-D preview…

⬇ Download STL mesh

Parameters:
height : float

length : float

thick : float

maxang : float

strut : float

max_bridge : float

property height : float

Wall height in mm (Z axis).

property length : float

Wall length in mm (Y axis).

property thick : float

Wall thickness in mm (X axis).

shape()[source]

Return the wall geometry.

Return type:

CsgSolid

show()[source]

Display the wall in the viewer.

Return type:

None

class pybosl2.parts.walls.SparseCuboid(size, dir=SparseAxis.Y, strut=5, maxang=30, max_bridge=20)[source]

Bases: object

A solid cuboid whose interior is X-cross-braced along dir (“X”, “Y” or “Z”) (BOSL2 sparse_cuboid()).

A drop-in for cuboid() when the part would benefit from the sparse lattice; dir is the axis the diagonal braces (and the through-gaps) run along.

Examples

from pybosl2.parts.walls import SparseCuboid, SparseAxis
SparseCuboid(size=[50, 40, 10], dir=SparseAxis.Y, strut=3).show()
Loading 3-D preview…

⬇ Download STL mesh

Parameters:
size : float | list[float]

dir : SparseAxis

strut : float

maxang : float

max_bridge : float

property size : list[float]

Outer dimensions [X, Y, Z] in mm.

shape()[source]

Return the cuboid geometry.

Return type:

CsgSolid

show()[source]

Display the cuboid in the viewer.

Return type:

None

class pybosl2.parts.walls.CorrugatedWall(height=50, length=100, thick=5, strut=5, wall=2)[source]

Bases: object

A corrugated wall: a solid border framing a sinusoidal sheet.

of thickness wall (BOSL2 corrugated_wall()).

The corrugation waves back and forth across the thick thickness as it runs along the length, which stiffens a thin wall. strut is the width of the solid top/bottom/end border.

Examples

from pybosl2.parts.walls import CorrugatedWall
CorrugatedWall(height=50, length=100, thick=5).show()
Loading 3-D preview…

⬇ Download STL mesh

Parameters:
height : float

length : float

thick : float

strut : float

wall : float

property height : float

Wall height in mm (Z axis).

property length : float

Wall length in mm (Y axis).

property thick : float

Wall thickness in mm (X axis).

shape()[source]

Return the wall geometry.

Return type:

CsgSolid

show()[source]

Display the wall in the viewer.

Return type:

None

class pybosl2.parts.walls.ThinningWall(height=50, length=100, thick=5, angle=30, strut=None, wall=None)[source]

Bases: object

A rectangular wall that thins to wall in the middle while.

the edges stay thick (BOSL2 thinning_wall()).

Angled shoulders (kept under angle) join the thick border to the thin centre so nothing overhangs. length may be a single length or (bottom, top) for a trapezoidal wall. The diagonal braces option of the original is not ported.

Examples

from pybosl2.parts.walls import ThinningWall
ThinningWall(height=50, length=80, thick=4).show()
Loading 3-D preview…

⬇ Download STL mesh

Parameters:
height : float

length : float

thick : float

angle : float

strut : float | None

wall : float | None

property height : float

Wall height in mm (Z axis).

property length : float

Wall length in mm.

property thick : float

Wall thickness in mm (X axis).

shape()[source]

Return the wall geometry.

Return type:

CsgSolid

show()[source]

Display the wall in the viewer.

Return type:

None

class pybosl2.parts.walls.ThinningTriangle(height=50, length=100, thick=5, angle=30, strut=5, wall=3, diagonly=False, center=None)[source]

Bases: object

A right-triangular wall with thick edges thinning to wall in the middle (BOSL2 thinning_triangle()).

The hypotenuse rises from the front-bottom to the back-top. diagonly keeps only the hypotenuse edge thick; center centres the shape (otherwise it rests on z = 0 at the front). Built from NarrowingStrut braces.

Examples

from pybosl2.parts.walls import ThinningTriangle
ThinningTriangle(height=50, length=80, thick=4, center=True).show()
Loading 3-D preview…

⬇ Download STL mesh

Parameters:
height : float

length : float

thick : float

angle : float

strut : float

wall : float

diagonly : bool

center : bool | None

property height : float

Wall height in mm (Z axis).

property length : float

Wall length in mm (Y axis).

property thick : float

Wall thickness in mm (X axis).

shape()[source]

Return the triangle geometry.

Return type:

CsgSolid

show()[source]

Display the triangle in the viewer.

Return type:

None

class pybosl2.parts.walls.NarrowingStrut(w=10, length=100, wall=5, angle=30)[source]

Bases: object

A strut like an extruded baseball home plate: a rectangle topped by a narrowing triangle (BOSL2.

narrowing_strut()).

The triangular top converges at angle so the strut can brace an overhang without needing support. w is the width (thickness), length the length, wall the height of the rectangular base. It sits on the z = 0 plane with the apex pointing up.

Examples

from pybosl2.parts.walls import NarrowingStrut
NarrowingStrut(w=10, length=100, wall=5, angle=30).show()
Loading 3-D preview…

⬇ Download STL mesh

Parameters:
w : float

length : float

wall : float

angle : float

property width : float

Width (thickness) of the strut in mm.

property length : float

Length of the strut in mm.

property wall : float

Height of the rectangular base in mm.

property angle : float

Narrowing angle in degrees.

shape()[source]

Return the strut geometry.

Return type:

CsgSolid

show()[source]

Display the strut in the viewer.

Return type:

None

Examples

These mirror the examples in BOSL2’s walls.scad, rendered live through PythonSCAD. Examples that rely on BOSL2’s attachment/anchor system, or on features not in this port, are omitted.

sparse_wall

Typical shape:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
SparseWall(height=40, length=100, thick=3).show()
Loading 3-D preview…

⬇ Download STL mesh

Thinner strut:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
SparseWall(height=40, length=100, thick=3, strut=2).show()
Loading 3-D preview…

⬇ Download STL mesh

Larger maxang:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
SparseWall(height=40, length=100, thick=3, strut=2, maxang=45).show()
Loading 3-D preview…

⬇ Download STL mesh

Longer max_bridge:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
SparseWall(height=40, length=100, thick=3, strut=2, maxang=45, max_bridge=30).show()
Loading 3-D preview…

⬇ Download STL mesh

sparse_cuboid

A cross-braced box, braced along X:

from pybosl2.parts.walls import SparseAxis, SparseCuboid
SparseCuboid([10, 20, 30], dir=SparseAxis.X, strut=1).show()
Loading 3-D preview…

⬇ Download STL mesh

Braced along Y:

from pybosl2.parts.walls import SparseAxis, SparseCuboid
SparseCuboid([10, 20, 30], dir=SparseAxis.Y, strut=1).show()
Loading 3-D preview…

⬇ Download STL mesh

Braced along Z:

from pybosl2.parts.walls import SparseAxis, SparseCuboid
SparseCuboid([10, 20, 30], dir=SparseAxis.Z, strut=1).show()
Loading 3-D preview…

⬇ Download STL mesh

corrugated_wall

Typical shape:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
CorrugatedWall(height=50, length=100).show()
Loading 3-D preview…

⬇ Download STL mesh

Wider strut border:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
CorrugatedWall(height=50, length=100, strut=8).show()
Loading 3-D preview…

⬇ Download STL mesh

Thicker corrugation:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
CorrugatedWall(height=50, length=100, strut=8, wall=3).show()
Loading 3-D preview…

⬇ Download STL mesh

thinning_wall

Typical shape:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
ThinningWall(height=50, length=80, thick=4).show()
Loading 3-D preview…

⬇ Download STL mesh

Trapezoidal:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
ThinningWall(height=50, length=[80, 50], thick=4).show()
Loading 3-D preview…

⬇ Download STL mesh

thinning_triangle

Centered:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
ThinningTriangle(height=50, length=80, thick=4, angle=30, strut=5, wall=2, center=True).show()
Loading 3-D preview…

⬇ Download STL mesh

Resting on the ground plane:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
ThinningTriangle(height=50, length=80, thick=4, angle=30, strut=5, wall=2, center=False).show()
Loading 3-D preview…

⬇ Download STL mesh

Only the diagonal edge thickened:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
ThinningTriangle(height=50, length=80, thick=4, angle=30, strut=5, wall=2, diagonly=True, center=False).show()
Loading 3-D preview…

⬇ Download STL mesh

narrowing_strut

A support-free strut:

from pybosl2.parts.walls import SparseWall, SparseCuboid, CorrugatedWall, ThinningWall, ThinningTriangle, NarrowingStrut
NarrowingStrut(w=10, length=100, wall=5, angle=30).show()
Loading 3-D preview…

⬇ Download STL mesh