Exit Full View
Up

/Garden/TroughSlider.foocad

TroughSlider

Prevents platers/troughs from tipping off of the shelf supports that they rest upon.

Glue these to the underside of planters/troughs and then slide onto the shelf brackets.

FooCAD Source Code
import uk.co.nickthecoder.foocad.smartextrusion.v1.*
import static uk.co.nickthecoder.foocad.smartextrusion.v1.SmartExtrusion.*
import uk.co.nickthecoder.foocad.cup.v1.*
import static uk.co.nickthecoder.foocad.cup.v1.Cup.*

class TroughSlider : Model {

    @Custom( about="X,Z = Width and thickness of the metal shelf support. Y=Size of trough's base." )
    var size = Vector3( 20, 80, 4 )

    var wallThickness = 2.0

    var baseThickness = 0.6

    var overlap = 5

    var round = 6

    var rimSize = 3

    override fun build() : Shape3d {
        val shape = Square( size.x + wallThickness*2, size.y+wallThickness + overlap + round )
                .roundAllCorners(round)
                .centerX() +
            Circle( size.x*1.5 ).sides(4)

        val cup = shape
            .backTo( size.y + wallThickness )

            .cup( size.z + baseThickness + wallThickness*2, wallThickness )
                .baseThickness( baseThickness )
                .insideTop( ProfileEdge.chamferedStep(-rimSize, rimSize*2) )
                .outsideTop( ProfileEdge.chamfer(rimSize-1) )

        val envelope = Cube( cup.size.x, cup.size.y, cup.size.z )
            .centerX()
        val extra = Square( size.x + overlap*2, size.y )
            .centerX()
            .translateY(-overlap)
            .roundAllCorners(round)
            .extrude( baseThickness )

        return (cup + extra intersection envelope)
    }
}