Exit Full View
Up

/Garden/PlantLabel.foocad

PlantLabel
FooCAD Source Code
import static uk.co.nickthecoder.foocad.changefilament.v1.ChangeFilament.*
import static uk.co.nickthecoder.foocad.layout.Layout2d.*
import static uk.co.nickthecoder.foocad.layout.Layout3d.*

class PlantLabel : Model {
    
    var piece = ""

    var thickness = 0.8

    var fontSize = 9

    var length = 60

    var changeColor = true

    override fun build() : Shape3d {

        // Give the new colour time to blend in by making more layers than normal
        var textHeight = 0.4

        val text = Text( piece ?: "", fontSize ).centerY()
            .translateX(5)
            .extrude( thickness + textHeight )
            .color( "Blue" )

        val width = text.size.y-2

        val outline = PolygonBuilder().apply {
            radius(5)
            moveTo(0,0)
            lineTo(0,width)
            lineTo(length,width)
            radius(1)
            lineTo(length+ width*1.5,width/2)
            radius(5)
            lineTo(length,0)         
        }.build().centerY()

        val one = outline.extrude(thickness) + text
        return one
    }

    // The white labels will look like "regular" ones if we print them
    // in white, so I will print them black, with white writing.
    // All the others can be a single colour.
    /*    
    override fun postProcess(gcode: GCode) {
        if ( changeColor ) {
            pauseAtHeight( gcode, thickness, "Change Filament" )
        }
    }
    */
}