import static uk.co.nickthecoder.foocad.layout.v1.Layout2d.* import static uk.co.nickthecoder.foocad.layout.v1.Layout3d.* import static uk.co.nickthecoder.foocad.screws.v1.Screws.* import static uk.co.nickthecoder.foocad.chamferedextrude.v1.ChamferedExtrude.* class UnderShelf : Model { var length = 160 var backThickness = 4 val holeCount = 3 override fun build() : Shape3d { val doc = SVGParser().parseFile( "underShelf.svg" ) val profile = doc.shapes["profile"] val extrusion = profile.chamferedExtrude( length, 0, 1 ) val back = doc.shapes["back"].extrude( backThickness ) val solid = (extrusion + back).centerX().backTo(0) val hole = countersink( 4, 8, 20, 40 ).rotateX(90) .translateX(-10).translateY(-20-4) val holes = hole.spreadZ( holeCount, length * 0.8 ) .translateZ(length * 0.1 ) val single = solid - holes return single.translateY(-1).mirrorY().also() } }