FooCAD Source Codeimport static uk.co.nickthecoder.foocad.arrange.v1.Arrange.*
import static uk.co.nickthecoder.foocad.changefilament.v1.ChangeFilament.*
class DrinkNameRings : Model, PostProcessor {
var diameter = 35
var thickness = 1.2
var textThickness = 0.6
var fontSize = 13
var width = 3.5
@Custom( lines=10 )
var names = """Nick
Nalin
Emma
"""
fun ring( name : String ) : Shape3d {
val thin = (
Circle( diameter/2 ) -
Circle( diameter/2 - 0.1 )
) - Square( width*3, diameter).centerX()
val ring = thin.minkowski(Circle(width/2).sides(10)).extrude(thickness)
val text = Text( name, fontSize ).center()
.aroundCircle( -diameter/2 )
val text3d = text.offset(1).extrude(thickness) +
text.offset(0.2).extrude(thickness+textThickness).color("Black")
return ring + text3d
}
override fun build() : Shape3d {
val pieces = listOf<Shape3d>()
for (name in names.splitLines()) {
pieces.add( ring( name ) )
}
return arrangeX( 2, pieces )
}
// This is the main focus of this example! Also not that the class must implement PostProcessor.
override fun postProcess(gcode: GCode) {
pauseAtHeight( gcode, thickness, "Change Colour" )
}
}