Merged slider_sled.scad and sled_parts.scad. Added chamfers to rail ends.

This commit is contained in:
Revar Desmera
2014-11-11 23:06:41 -08:00
parent b604c26259
commit 2c438976ec
9 changed files with 104738 additions and 105030 deletions

View File

@@ -11,7 +11,7 @@ STLs/%.stl: %.scad config.scad GDMUtils.scad
${OPENSCAD} -m make -o $@ $<
clean:
rm -f tmp_*.png snappy_rot*.png render_*_parts.scad
rm -f tmp_*.png wiki/snappy_rot*.png render_*_parts.scad
cleaner: clean
rm -f ${TARGETS}

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

@@ -52,7 +52,7 @@ module rail_motor_segment()
// Rail backing.
grid_of(count=2, spacing=rail_spacing+joiner_width)
translate([0,0,rail_height+groove_height/2])
chamfer(size=[joiner_width, motor_rail_length, groove_height], chamfer=1.5, edges=[[1,1,0,0], [1,1,0,0], [0,0,0,0]])
chamfer(size=[joiner_width, motor_rail_length, groove_height], chamfer=1, edges=[[1,1,0,0], [1,1,0,0], [0,0,0,0]])
cube(size=[joiner_width, motor_rail_length, groove_height], center=true);
// Side Supports
@@ -66,14 +66,27 @@ module rail_motor_segment()
// Rail grooves.
translate([0,0,rail_height+groove_height/2]) {
mirror_copy([1,0,0]) {
translate([-(rail_spacing/2), 0, 0]) {
scale([tan(groove_angle),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,motor_rail_length+1,groove_height*sqrt(2)/2], center=true);
}
}
translate([-(rail_width/2), 0, 0]) {
scale([tan(groove_angle),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,motor_rail_length+1,groove_height*sqrt(2)/2], center=true);
translate([-(rail_width/2-joiner_width/2), 0, 0]) {
mirror_copy([1,0,0]) {
translate([(joiner_width/2), 0, 0]) {
// main groove
scale([tan(groove_angle),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,motor_rail_length+1,groove_height*sqrt(2)/2], center=true);
}
// chamfers
mirror_copy([0,1,0]) {
translate([0, motor_rail_length/2, 0]) {
hull() {
grid_of(count=[1,2], spacing=2) {
zrot(45) scale([tan(groove_angle)*sin(45),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,10,groove_height*sqrt(2)/2], center=true);
}
}
}
}
}
}
}
}
}

View File

@@ -39,7 +39,7 @@ module rail_segment()
// Rail backing.
grid_of(count=2, spacing=rail_spacing+joiner_width)
translate([0,0,rail_height+groove_height/2])
chamfer(size=[joiner_width, rail_length, groove_height], chamfer=1.5, edges=[[1,1,0,0], [1,1,0,0], [0,0,0,0]])
chamfer(size=[joiner_width, rail_length, groove_height], chamfer=1, edges=[[1,1,0,0], [1,1,0,0], [0,0,0,0]])
cube(size=[joiner_width, rail_length, groove_height], center=true);
// Side Supports
@@ -53,14 +53,27 @@ module rail_segment()
// Rail grooves.
translate([0,0,rail_height+groove_height/2]) {
mirror_copy([1,0,0]) {
translate([-(rail_spacing/2), 0, 0]) {
scale([tan(groove_angle),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,rail_length+1,groove_height*sqrt(2)/2], center=true);
}
}
translate([-(rail_width/2), 0, 0]) {
scale([tan(groove_angle),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,rail_length+1,groove_height*sqrt(2)/2], center=true);
translate([-(rail_width/2-joiner_width/2), 0, 0]) {
mirror_copy([1,0,0]) {
translate([(joiner_width/2), 0, 0]) {
// main groove
scale([tan(groove_angle),1,1]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2,rail_length+1,groove_height*sqrt(2)/2], center=true);
}
// chamfers
mirror_copy([0,1,0]) {
translate([0, rail_length/2, 0]) {
hull() {
grid_of(count=[1,2], spacing=2) {
zrot(45) scale([tan(groove_angle)*sin(45),1.01,1.01]) yrot(45) {
cube(size=[groove_height*sqrt(2)/2, 10, groove_height*sqrt(2)/2], center=true);
}
}
}
}
}
}
}
}
}

View File

@@ -4,106 +4,6 @@ use <joiners.scad>
use <publicDomainGearV1.1.scad>
module slider_sled()
{
union() {
difference() {
union() {
// Bottom
translate([0,0,platform_thick/2])
yrot(90) sparse_strut(h=platform_width, l=platform_length, thick=platform_thick, maxang=45, strut=12, max_bridge=999);
// Walls.
zrot_copies([0, 180]) {
translate([(platform_width-joiner_width)/2, 0, platform_height/2]) {
if (wall_style == "crossbeams")
sparse_strut(h=platform_height, l=platform_length-10, thick=joiner_width, strut=5);
if (wall_style == "thinwall")
thinning_wall(h=platform_height, l=platform_length-10, thick=joiner_width, strut=platform_thick, wall=3, bracing=false);
if (wall_style == "corrugated")
corrugated_wall(h=platform_height, l=platform_length-10, thick=joiner_width, strut=platform_thick, wall=3);
}
}
}
// Clear space for joiners.
translate([0,0,platform_height/2]) {
joiner_quad_clear(xspacing=platform_width-joiner_width, yspacing=platform_length, h=platform_height, w=joiner_width, clearance=5, a=joiner_angle);
}
}
// Snap-tab joiners.
translate([0,0,platform_height/2]) {
joiner_quad(xspacing=platform_width-joiner_width, yspacing=platform_length, h=platform_height, w=joiner_width, l=5, a=joiner_angle);
}
// sliders
mirror_copy([1,0,0]) {
translate([-(rail_spacing)/2, 0, 0]) {
// bottom strut
translate([6/2,0,rail_offset/2]) {
difference() {
cube(size=[6, platform_length, rail_offset], center=true);
grid_of(
ya=[-(platform_length/2), (platform_length/2)],
za=[groove_height/2]
) {
xrot(45) cube(size=[11, 2*sqrt(2), 2*sqrt(2)], center=true);
}
grid_of(
ya=[-(platform_length/2), (platform_length/2)],
xa=[-6/2]
) {
zrot(45) cube(size=[2*sqrt(2), 2*sqrt(2), rail_offset+1], center=true);
}
}
}
grid_of(
ya=[-platform_length*6/16, 0, platform_length*6/16],
za=[rail_offset+groove_height/2]
) {
// Slider base
translate([10/2-4, 0, -groove_height]) {
difference() {
cube(size=[10, platform_length/8, groove_height], center=true);
grid_of(
ya=[-(platform_length/8/2), (platform_length/8/2)],
za=[groove_height/2]
) {
xrot(45) cube(size=[11, 2*sqrt(2), 2*sqrt(2)], center=true);
}
}
}
// Slider backing
translate([6/2, 0, 0]) {
difference() {
cube(size=[6, platform_length/8, groove_height], center=true);
grid_of(
ya=[-(platform_length/8/2), (platform_length/8/2)],
za=[groove_height/2]
) {
xrot(45) cube(size=[11, 2*sqrt(2), 2*sqrt(2)], center=true);
}
}
}
// Slider ridge
scale([tan(groove_angle),1,1]) {
yrot(45) {
chamfcube(size=[groove_height/sqrt(2), platform_length/8, groove_height/sqrt(2)], chamfer=2, chamfaxes=[1,0,1], center=true);
}
}
}
}
}
}
}
//!slider_sled();
module herringbone_rack(l=100, h=10, w=10, tooth_size=5, CA=30)
{
translate([-(rack_tooth_size/2), 0, 0]) {
@@ -135,21 +35,125 @@ module sled()
color("MediumSlateBlue")
prerender(convexity=10)
union() {
// Base slider sled.
slider_sled();
difference() {
union() {
// Bottom
translate([0,0,platform_thick/2])
yrot(90) sparse_strut(h=platform_width, l=platform_length, thick=platform_thick, maxang=45, strut=12, max_bridge=999);
// Length-wise bracing.
translate([0,0,platform_thick/2]) {
translate([-10, 0, 1])
cube(size=[14,platform_length,platform_thick+2], center=true);
// Walls.
zrot_copies([0, 180]) {
translate([(platform_width-joiner_width)/2, 0, platform_height/2]) {
if (wall_style == "crossbeams")
sparse_strut(h=platform_height, l=platform_length-10, thick=joiner_width, strut=5);
if (wall_style == "thinwall")
thinning_wall(h=platform_height, l=platform_length-10, thick=joiner_width, strut=platform_thick, wall=3, bracing=false);
if (wall_style == "corrugated")
corrugated_wall(h=platform_height, l=platform_length-10, thick=joiner_width, strut=platform_thick, wall=3);
}
}
// Length-wise bracing.
translate([0,0,platform_thick/2]) {
translate([-10, 0, 1])
cube(size=[14,platform_length,platform_thick+2], center=true);
}
// Drive rack
translate([-8, 0, platform_thick+2+5]) {
zrot(-90) herringbone_rack(l=platform_length, h=10, tooth_size=rack_tooth_size, CA=30);
}
// sliders
mirror_copy([1,0,0]) {
translate([-(rail_spacing)/2, 0, 0]) {
// bottom strut
translate([6/2+printer_slop,0,rail_offset/2]) {
difference() {
cube(size=[6, platform_length, rail_offset], center=true);
grid_of(
ya=[-(platform_length/2), (platform_length/2)],
za=[groove_height/2]
) {
xrot(45) cube(size=[11, 2*sqrt(2), 2*sqrt(2)], center=true);
}
grid_of(
ya=[-(platform_length/2), (platform_length/2)],
xa=[-6/2]
) {
zrot(45) cube(size=[2*sqrt(2), 2*sqrt(2), rail_offset+1], center=true);
}
}
}
grid_of(
ya=[-platform_length*6/16, 0, platform_length*6/16],
za=[rail_offset+groove_height/2]
) {
translate([-joiner_width/2, 0, 0]) {
circle_of(n=2, r=joiner_width/2+printer_slop, rot=true) {
// Slider base
translate([15/2-9, 0, -groove_height]) {
difference() {
cube(size=[15, platform_length/8, groove_height], center=true);
grid_of(
ya=[-(platform_length/8/2), (platform_length/8/2)],
za=[groove_height/2]
) {
xrot(45) cube(size=[16, 2*sqrt(2), 2*sqrt(2)], center=true);
}
}
}
// Slider backing
translate([6/2, 0, -4/2]) {
difference() {
cube(size=[6, platform_length/8, groove_height+4], center=true);
grid_of(
ya=[-(platform_length/8/2), (platform_length/8/2)],
za=[(groove_height+4)/2]
) {
xrot(45) cube(size=[11, 2*sqrt(2), 2*sqrt(2)], center=true);
}
}
}
// Slider ridge
scale([tan(groove_angle),1,1]) {
yrot(45) {
chamfcube(size=[groove_height/sqrt(2), platform_length/8, groove_height/sqrt(2)], chamfer=2, chamfaxes=[1,0,1], center=true);
}
}
}
}
}
}
}
}
// Clear space for joiners.
translate([0,0,platform_height/2]) {
joiner_quad_clear(xspacing=platform_width-joiner_width, yspacing=platform_length, h=platform_height, w=joiner_width, clearance=5, a=joiner_angle);
}
// Shrinkage stress relief
translate([0, 0, platform_thick/2]) {
grid_of(count=[1, 3], spacing=[0, 32]) {
cube(size=[platform_width+1, 1, platform_thick-2], center=true);
}
grid_of(count=[5, 2], spacing=[30, platform_length-10]) {
cube(size=[1, 20, platform_thick-2], center=true);
}
}
}
// Drive rack
translate([-8, 0, platform_thick+2+5]) {
zrot(-90) herringbone_rack(l=platform_length, h=10, tooth_size=rack_tooth_size, CA=30);
// Snap-tab joiners.
translate([0,0,platform_height/2]) {
joiner_quad(xspacing=platform_width-joiner_width, yspacing=platform_length, h=platform_height, w=joiner_width, l=5, a=joiner_angle);
}
}
}
//!sled();

2
wiki

Submodule wiki updated: 6af65c728e...b1c89693cd