/Games/JugglingBall.foocad

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".
class JugglingBall : AbstractModel() {
@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)
@Piece( printable = false )
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()
}
}

