Exit Full View
Up

/Bottles/SloeGinLabel.foocad

SloeGinLabel

I make Sloe Gin each year, and I need a label for the bottles. The rings keep the letters in place!

Super glue in place - maybe curve the plastic while it is warm first???

FooCAD Source Code
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 )
    }
    */
}