// title = first impression rail design openSCAD // author = Joey van der Bie // license = MIT License // revision = 0.001 //dimensions are in mm // baseDepther = 800; //width for 1 gate = 40mm cellWidth = 40; baseDepther = 40; baseWidth = 80; baseHeight = 16; marbleRadius = 8;//marbles are 16mm marbleGateMargin = 1; difference(){ base(); rail(position=[-marbleRadius,0,marbleRadius/2*3]); cell(); cell([0.5, -cellWidth+cellWidth/3,marbleRadius/2*3]); } //rail(); // marble([-marbleRadius,cellWidth/3, baseHeight-marbleRadius/2]); // marble([marbleRadius, cellWidth/3,marbleRadius/2*3-marbleGateMargin]); // cube([ marbleRadius,marbleRadius, marbleRadius/2], center = true); module base(){ cube(size=[baseDepther,baseWidth,baseHeight], center= true); } module rail(width = baseWidth, position = [0,0,marbleRadius/2*3], rotation=[90,0,0]){ translate(position){ rotate(rotation){ cylinder(r= marbleRadius, h= width, center= true) ; } } } module marble(position=[0,baseWidth/3, baseHeight-marbleRadius/2]){ translate(position){ sphere(r= marbleRadius, center=true); } } module cell(position = [0,cellWidth/3,marbleRadius/2*3]){ marble([position[0]+marbleRadius, position[1],marbleRadius/2*3-marbleGateMargin]); rail(width = marbleRadius*2, position = position, rotation=[97,0,90]); }