import uk.co.nickthecoder.foocad.layers.v1.Layer import uk.co.nickthecoder.foocad.layers.v1.Layers import static uk.co.nickthecoder.foocad.layers.v1.Layers.* class SloeGinLabel : Model { var width = 70 var filamentOffset = 45 val ringsLayer = Layer( "rings", 0.4, "Black" ) val textLayer = Layer( "text", 1.0, "Red" ) @Custom var year = "2021" fun circle(size : double, thickness : double) = (Circle( size + thickness/2 ) - Circle( size - thickness / 2 )) @Piece fun year() : Shape3d { val year2d = Text( year, BOLD, 11 ).center() return year2d.extrude( textLayer ) + year2d.offset(2).extrude( ringsLayer ) } @Piece fun main() : Shape3d { val rings = circle( width * 0.11, 1 ) + circle( width * 0.22, 2 ) + circle( width*0.33, 3) + circle( width*0.44, 4 ) val fromSVG = SVGParser().parseFile( "sloeGinLabel.svg" ) .shapes["text"] .center() val year2d = Text( year, BOLD, 9 ).translate( 9, -6 ) return fromSVG.scale( width / fromSVG.size.x ).extrude( textLayer ) + rings.extrude( ringsLayer ) } override fun build() : Shape3d { return main().frontTo( 5 ) + year().backTo(0) } /* override fun postProcess(piece : String, gcode: GCode) { postProcess( gcode, ringsLayer, textLayer ) } */ }