Exit Full View
Up

/Games/JugglingBall.foocad

JugglingBall

A weird shaped juggling ball. I recommend PLA for the squishy feel.

Either print 2 "half" pieces, or a "middle" and two "ends". Using the later, you can choose the width of the middle via "middleRatio".

FooCAD Source Code
class JugglingBall : Model {
    
    @Custom
    var diameter = 80

    @Custom
    var round = 5

    @Custom
    var middleRatio = 0.58

    @Custom
    var sides = 6

    fun ball() : Shape3d {
        val foo = (
            Circle( diameter/2 ).sides(sides).roundAllCorners( round ) /
            Square( diameter * 1.5 ).centerY()
        ).revolve().scale( 1, 1, 1.5 )

        return foo / foo.rotateX(-90) / foo.rotateY(90)
    }

    @Piece
    fun half() = ball() / ball().boundingCube().translateZ(ball().size.z/2)

    @Piece
    fun middle() = ball() / Cube( diameter*2, diameter*2, diameter * middleRatio ).center()

    @Piece
    fun end() = ball() / Cube( diameter*2 ).centerXY().translateZ(diameter * middleRatio/2)

    override fun build() : Shape3d {

        val ball : Shape3d = ball()
        val middle = ball / Cube( diameter*2, diameter*2, diameter * middleRatio ).center()
        val end = ball / Cube( diameter*2 ).centerXY().translateZ(diameter * middleRatio/2)

        return middle.color("Yellow").scale(1.01) + end.color("Blue").mirrorZ().also()
    }

}