import static uk.co.nickthecoder.foocad.layout.v1.Layout2d.* import static uk.co.nickthecoder.foocad.layout.v1.Layout3d.* class NeoLight : Model { val armSize = Vector3(300, 20, 7) val arms = 12 val radius = 100 val brickSize = Vector3(116, 45, 28 ) fun rose() : Shape3d { val outside = (Circle( radius ) - Circle( radius - 10 )).extrude( 50 ) val brick = Cube( brickSize ).centerXY().color("WhiteSmoke") val cover = Cylinder( 6, radius - 10 ).topTo(outside.top).color( "WhiteSmoke" ).opacity(0.5) return outside + brick + cover } override fun build() : Shape3d { val rose : Shape3d = rose() val arm = Cube( armSize ).centerY() return rose + arm.repeatAroundZ( arms ) } }