class LazySusanSpacer : Model { var size = Vector3(95.5, 95.5, 3) var edge = Vector2(1, 1.2) var holeDelta = Vector2( 6.5, 6.5 ) override fun build() : Shape3d { val main = Cube( size.x + edge.x*2, size.y + edge.x*2, size.z + edge.y ).centerXY() - Cube( size.x, size.y, size.z + size.z + edge.y ).centerXY().translateZ( size.z ) - Cylinder( size.z * 3, size.x *0.45 ).center() val hole = Cylinder( size.z * 3 , 3 ).center() .translateX( size.x/2 - holeDelta.x ) .translateY( size.y/2 - holeDelta.y ) val holes = hole.mirrorX().also().mirrorY().also() return main - holes } }