add small variant, add more parameters
parent
c883d901cf
commit
38113e5caf
|
@ -1,5 +1,5 @@
|
||||||
// Link with ends for ball inserts
|
// Link with ends for ball inserts
|
||||||
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 3.0
|
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 4.0
|
||||||
|
|
||||||
$fn=40;
|
$fn=40;
|
||||||
length=64; // 8U spacing between balls, like LEGO Black Link 9 (32293)
|
length=64; // 8U spacing between balls, like LEGO Black Link 9 (32293)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Piston for LEGO 76537 - Small Shock Absorber with Extra Hard Spring
|
// Piston for LEGO 76537 - Small Shock Absorber with Extra Hard Spring
|
||||||
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 3.0
|
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 4.0
|
||||||
// Printed with Slic3r, 0.1mm layer, 0.3mm first layer and support enabled.
|
// Printed with Slic3r, 0.1mm layer, 0.3mm first layer and support enabled.
|
||||||
|
|
||||||
$fn=40;
|
$fn=40;
|
||||||
|
|
|
@ -1,10 +1,19 @@
|
||||||
// LEGO-like tire 81.6x50... Dunno where it's 81.6, it's 84 in fact...
|
// LEGO-like parametric tire...
|
||||||
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 3.0
|
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 4.0
|
||||||
|
|
||||||
$fn=60;
|
$fn=60;
|
||||||
R=42; // outer radius
|
|
||||||
|
// 81.6x50:
|
||||||
|
|
||||||
|
R=40.8; // outer radius
|
||||||
R_I=26.5; // innermost radius
|
R_I=26.5; // innermost radius
|
||||||
|
BEVEL=2;
|
||||||
|
THICKNESS=2.5;
|
||||||
|
PROT_DEPTH=1;
|
||||||
|
PROT_L_WIDTH=2;
|
||||||
|
PROT_A_WIDTH=2;
|
||||||
B=2.5; // width of edge for the rim
|
B=2.5; // width of edge for the rim
|
||||||
|
B2=B+2;
|
||||||
B_W=1.6; // thickness of edge for the rim
|
B_W=1.6; // thickness of edge for the rim
|
||||||
B_P=4; // position of edge for the rim
|
B_P=4; // position of edge for the rim
|
||||||
W=50; // tire width
|
W=50; // tire width
|
||||||
|
@ -17,29 +26,54 @@ CUT_ANGLE=12;
|
||||||
CUT_I_R=1.5;
|
CUT_I_R=1.5;
|
||||||
CUT_O_R=2;
|
CUT_O_R=2;
|
||||||
|
|
||||||
// 6-spoke variant
|
/*// 6-spoke variant
|
||||||
N_SPOKE=6;
|
N_SPOKE=6;
|
||||||
CUT_ANGLE=21;
|
CUT_ANGLE=21;
|
||||||
CUT_I_R=2.5;
|
CUT_I_R=2.5;
|
||||||
CUT_O_R=2;
|
CUT_O_R=2;
|
||||||
|
N_L=2;
|
||||||
|
|
||||||
rim();
|
// small
|
||||||
|
R=22;
|
||||||
|
BEVEL=1;
|
||||||
|
THICKNESS=1.5;
|
||||||
|
PROT_A_WIDTH=1;
|
||||||
|
PROT_L_WIDTH=1;
|
||||||
|
B=1.5;
|
||||||
|
B2=B+0.5;
|
||||||
|
R_I=15;
|
||||||
|
CUT_O_R=1;
|
||||||
|
CUT_BASE=5;
|
||||||
|
W=20;*/
|
||||||
|
|
||||||
|
translate([0, 0, W]) rotate([180, 0, 0]) {
|
||||||
|
rim();
|
||||||
|
/*
|
||||||
|
// Support ...
|
||||||
|
translate([0, 0, SPOKE_THICKNESS+(R_I-2-CUT_BASE)/2+0.4]) cylinder(r=CUT_BASE, h=W-(SPOKE_THICKNESS+(R_I-2-CUT_BASE)/2+0.4));
|
||||||
|
translate([0, 0, W-(B_P-2-0.2)+0.4]) cylinder(r=R_I+B+2, h=(B_P-2-0.2)-0.4);
|
||||||
|
translate([0, 0, W-(B_P-2-0.2)-2-B+0.5+0.4]) difference() {
|
||||||
|
cylinder(r=R_I+B+2, h=(B_P-2-0.2)+2+B-0.5-0.4);
|
||||||
|
translate([0, 0, -0.5]) cylinder(r=R_I+B+0.4, h=1+(B_P-2-0.2)+2+B-0.5-0.4);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
tire();
|
tire();
|
||||||
|
|
||||||
module rim() {
|
module rim() {
|
||||||
translate([0, 0, B_P-2-0.2]) color([0.5, 0.5, 1]) {
|
color([0.5, 0.5, 1]) {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
cylinder(r=R_I-0.2, h=W-2*(B_P-2-0.2));
|
cylinder(r=R_I-0.2, h=W-(B_P-2-0.2));
|
||||||
cylinder(r=R_I+B-0.5, h=2);
|
cylinder(r=R_I+B-0.5, h=2+(B_P-2-0.2));
|
||||||
translate([0, 0, W-2*(B_P-2-0.2)-2]) cylinder(r=R_I+B-0.5, h=2);
|
translate([0, 0, W-(B_P-2-0.2)-2]) cylinder(r=R_I+B-0.5, h=2);
|
||||||
hull() {
|
hull() {
|
||||||
translate([0, 0, B_P]) cylinder(r=R_I+B+2, h=2);
|
translate([0, 0, (B_P-2-0.2)+B_P]) cylinder(r=R_I+B2, h=2);
|
||||||
translate([0, 0, B_P+B+2+0.2]) cylinder(r=R_I-0.2, h=2);
|
translate([0, 0, (B_P-2-0.2)+B_P+B2+0.2]) cylinder(r=R_I-0.2, h=2);
|
||||||
}
|
}
|
||||||
hull() {
|
hull() {
|
||||||
translate([0, 0, W-2*(B_P-2-0.2)-6]) cylinder(r=R_I+B+2, h=2);
|
translate([0, 0, W-(B_P-2-0.2)-6]) cylinder(r=R_I+B2, h=2);
|
||||||
translate([0, 0, W-2*(B_P-2-0.2)-6-B-2-0.2]) cylinder(r=R_I-0.2, h=2);
|
translate([0, 0, W-(B_P-2-0.2)-6-B2-0.2]) cylinder(r=R_I-0.2, h=2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = [1 : N_SPOKE])
|
for (i = [1 : N_SPOKE])
|
||||||
|
@ -49,10 +83,13 @@ module rim() {
|
||||||
translate([(R_I-2-CUT_BASE)/2+CUT_BASE, 0, 0]) circle(r = (R_I-2-CUT_BASE)/2);
|
translate([(R_I-2-CUT_BASE)/2+CUT_BASE, 0, 0]) circle(r = (R_I-2-CUT_BASE)/2);
|
||||||
translate([0, 0, SPOKE_THICKNESS+(R_I-2-CUT_BASE)/2]) cylinder(r=R_I-2, h=W);
|
translate([0, 0, SPOKE_THICKNESS+(R_I-2-CUT_BASE)/2]) cylinder(r=R_I-2, h=W);
|
||||||
translate([0, 0, -0.5]) linear_extrude(height=W+1) axle();
|
translate([0, 0, -0.5]) linear_extrude(height=W+1) axle();
|
||||||
translate([0, 0, -1]) cylinder(r=CUT_BASE-3, h=5);
|
translate([0, 0, -1]) cylinder(r=CUT_BASE-2, h=5+(B_P-2-0.2));
|
||||||
hull() {
|
difference() {
|
||||||
translate([0, 0, -1]) cylinder(r=CUT_BASE-2, h=1);
|
translate([0, 0, -1]) cylinder(r=1+R_I+B-0.5/*R_I-2*/, h=1+(B_P-2-0.2));
|
||||||
translate([0, 0, -1]) cylinder(r=CUT_BASE-3, h=2);
|
translate([0, 0, (B_P-2-0.2)])
|
||||||
|
scale([1, 1, (B_P-2-0.2)/((R_I-2-CUT_BASE+2)/2)])
|
||||||
|
rotate_extrude(convexity = 10)
|
||||||
|
translate([(R_I-2-CUT_BASE+2)/2+CUT_BASE-2, 0, 0]) circle(r = (R_I-2-CUT_BASE+2)/2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,50 +114,55 @@ module rim_cut() {
|
||||||
module tire() {
|
module tire() {
|
||||||
difference() {
|
difference() {
|
||||||
hull() {
|
hull() {
|
||||||
translate([0, 0, 2]) cylinder(r=R, h=W-4);
|
translate([0, 0, BEVEL]) cylinder(r=R, h=W-BEVEL*2);
|
||||||
cylinder(r=R-2, h=W);
|
cylinder(r=R-BEVEL, h=W);
|
||||||
}
|
}
|
||||||
// center hole through all piece
|
// center hole through all piece
|
||||||
translate([0, 0, -0.5]) cylinder(r=R_I, h=W+1);
|
translate([0, 0, -0.5]) cylinder(r=R_I, h=W+1);
|
||||||
// top hole
|
// top hole
|
||||||
translate([0, 0, W-B_P]) cylinder(r=R_I+B, h=B_P+1);
|
translate([0, 0, W-B_P]) cylinder(r=R_I+B, h=B_P+1);
|
||||||
hull() {
|
hull() {
|
||||||
translate([0, 0, W-1.5]) cylinder(r=R_I+B, h=1.5);
|
translate([0, 0, W-BEVEL]) cylinder(r=R_I+B, h=BEVEL);
|
||||||
translate([0, 0, W]) cylinder(r=R_I+B+1.5, h=1);
|
translate([0, 0, W]) cylinder(r=R_I+B+BEVEL, h=1);
|
||||||
}
|
}
|
||||||
// bottom hole
|
// bottom hole
|
||||||
translate([0, 0, -1]) cylinder(r=R_I+B, h=B_P+1);
|
translate([0, 0, -1]) cylinder(r=R_I+B, h=B_P+1);
|
||||||
hull() {
|
hull() {
|
||||||
translate([0, 0, 0]) cylinder(r=R_I+B, h=1.5);
|
translate([0, 0, 0]) cylinder(r=R_I+B, h=BEVEL);
|
||||||
translate([0, 0, -1]) cylinder(r=R_I+B+1.5, h=1);
|
translate([0, 0, -1]) cylinder(r=R_I+B+BEVEL, h=1);
|
||||||
}
|
}
|
||||||
// inside cut
|
// inside cut
|
||||||
translate([0, 0, B_P+B_W]) cylinder(r=R-3, h=W-(B_P+B_W)*2);
|
translate([0, 0, B_P+B_W]) cylinder(r=R-THICKNESS-PROT_DEPTH/2, h=W-(B_P+B_W)*2);
|
||||||
difference() {
|
difference() {
|
||||||
translate([0, 0, 2.5]) cylinder(r=R-3, h=W-2.5*2);
|
translate([0, 0, THICKNESS]) cylinder(r=R-THICKNESS-PROT_DEPTH/2, h=W-THICKNESS*2);
|
||||||
cylinder(r=R_I+B+2, h=W);
|
cylinder(r=R_I+B+THICKNESS, h=W);
|
||||||
}
|
}
|
||||||
// lateral protector
|
// lateral protector
|
||||||
for (i = [1 : N_L])
|
for (i = [1 : N_L])
|
||||||
translate([0, 0, -1+i*W/(N_L+1)]) difference() {
|
translate([0, 0, -PROT_L_WIDTH/2+i*W/(N_L+1)])
|
||||||
cylinder(r=R+1, h=2.5);
|
difference() {
|
||||||
translate([0, 0, -0.1]) cylinder(r=R-1, h=2.5+0.2);
|
cylinder(r=R+1, h=PROT_L_WIDTH);
|
||||||
}
|
translate([0, 0, -0.01]) linear_extrude(height=min(PROT_L_WIDTH/2-0.1, PROT_DEPTH/2)+0.01, scale=(R-PROT_DEPTH)/(R+0.01)) circle(r=R+0.01);
|
||||||
|
translate([0, 0, PROT_L_WIDTH]) rotate([180, 0, 0]) translate([0, 0, -0.01]) linear_extrude(height=min(PROT_L_WIDTH/2-0.1, PROT_DEPTH/2)+0.01, scale=(R-PROT_DEPTH)/(R+0.01)) circle(r=R+0.01);
|
||||||
|
translate([0, 0, -0.1]) cylinder(r=R-PROT_DEPTH, h=PROT_L_WIDTH+0.2);
|
||||||
|
}
|
||||||
// angular protector
|
// angular protector
|
||||||
for (i = [1 : N_A])
|
for (i = [1 : N_A])
|
||||||
rotate([0, 0, 360/N_A*i]) protector_single();
|
rotate([0, 0, 360/N_A*i]) protector_single();
|
||||||
// to cut and look inside :)
|
// to cut and look inside :)
|
||||||
//translate([0, 0, -0.1]) cube(size=[100, 100,100]);
|
translate([0, 0, -0.5]) cube(size=[R+10, R+10, W+1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module protector_single() {
|
module protector_single() {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
translate([(W/2)/2, 0, W/2]) rotate([0, -45, 0]) cube(size=[2, R+4, sqrt((W/2)*(W/2)*2)]);
|
translate([(W/2)/2, 0, W/2]) rotate([0, -45, 0])
|
||||||
translate([-(W/2+2)/2, 0, 0]) rotate([0, 45, 0]) cube(size=[2, R+4, sqrt((W/2+2)*(W/2+2)*2)]);
|
cube(size=[PROT_A_WIDTH, R+4, sqrt((W/2)*(W/2)*2)]);
|
||||||
|
translate([-(W/2)/2, 0, 0]) rotate([0, 45, 0])
|
||||||
|
cube(size=[PROT_A_WIDTH, R+4, PROT_A_WIDTH+sqrt((W/2)*(W/2)*2)]);
|
||||||
}
|
}
|
||||||
translate([0, 0, -0.5]) cylinder(r=R-1, h=W+1);
|
translate([0, 0, -0.5]) cylinder(r=R-PROT_DEPTH, h=W+1);
|
||||||
translate([0, 0, W]) cylinder(r=R+10, h=10);
|
translate([0, 0, W]) cylinder(r=R+10, h=10);
|
||||||
translate([0, 0, -10]) cylinder(r=R+10, h=10);
|
translate([0, 0, -10]) cylinder(r=R+10, h=10);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Simple wakeboard model
|
// Simple wakeboard model
|
||||||
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 3.0
|
// (c) Vitaliy Filippov 2014, license: CC-BY-SA 4.0
|
||||||
// Print with Slic3r 1.1.3-dev rotated 45 degree to the edge with following settings
|
// Print with Slic3r 1.1.3-dev rotated 45 degree to the edge with following settings
|
||||||
// 0.1mm layer, 0.3mm first layer, enforce support for first layers = 40,
|
// 0.1mm layer, 0.3mm first layer, enforce support for first layers = 40,
|
||||||
// skirt distance = 0, skirt loops = 4, skirt height = 1 layer
|
// skirt distance = 0, skirt loops = 4, skirt height = 1 layer
|
||||||
|
|
Loading…
Reference in New Issue