enabled circles and spokes on same gear, added option for entered hub and centered gear body, fixed additional test cases, improved test_gears to check more features
This commit is contained in:
parent
28fbdac168
commit
6f0ca2a57e
|
@ -307,9 +307,11 @@ module gear (
|
||||||
spoke_width=undef,
|
spoke_width=undef,
|
||||||
spoke_thickness=undef,
|
spoke_thickness=undef,
|
||||||
spoke_square=false,
|
spoke_square=false,
|
||||||
z_symmetry=false,
|
centered_gear=false,
|
||||||
|
centered_hub=false,
|
||||||
bore_diameter=undef,
|
bore_diameter=undef,
|
||||||
circles=0,
|
circles=0,
|
||||||
|
circle_diameter=undef,
|
||||||
backlash=0,
|
backlash=0,
|
||||||
twist=0,
|
twist=0,
|
||||||
involute_facets=0,
|
involute_facets=0,
|
||||||
|
@ -355,9 +357,10 @@ module gear (
|
||||||
rim_width = (rim_width!=undef?rim_width:root_radius * .1);
|
rim_width = (rim_width!=undef?rim_width:root_radius * .1);
|
||||||
rim_radius = root_radius - rim_width;
|
rim_radius = root_radius - rim_width;
|
||||||
|
|
||||||
// Variables controlling the hub_diameter
|
// Variables controlling the hub
|
||||||
hub_thickness = (hub_thickness!=undef?(hub_thickness!=0?hub_thickness:gear_thickness):gear_thickness * 2);
|
hub_thickness = (hub_thickness!=undef?(hub_thickness!=0?hub_thickness:gear_thickness):gear_thickness * 2);
|
||||||
hub_diameter = (hub_diameter!=undef?hub_diameter:root_radius * .3);
|
hub_diameter = (hub_diameter!=undef?hub_diameter:root_radius * .3);
|
||||||
|
hub_base = (centered_hub == false)? 0 : rim_thickness/2 - hub_thickness/2;
|
||||||
|
|
||||||
// Variables controlling the spokes
|
// Variables controlling the spokes
|
||||||
spokes = spokes == undef? 0 : spokes;
|
spokes = spokes == undef? 0 : spokes;
|
||||||
|
@ -372,19 +375,18 @@ module gear (
|
||||||
//echo (str("spoke_width: ",spoke_width,", hub_diameter: ",hub_diameter, ", spoke_depth: ",spoke_depth));
|
//echo (str("spoke_width: ",spoke_width,", hub_diameter: ",hub_diameter, ", spoke_depth: ",spoke_depth));
|
||||||
|
|
||||||
// Variables controlling the bore
|
// Variables controlling the bore
|
||||||
bore_diameter = (bore_diameter!=undef?bore_diameter:root_radius * .1);
|
bore_diameter = bore_diameter!=undef?bore_diameter:root_radius * .1;
|
||||||
|
|
||||||
// Variables controlling the circular holes in the gear.
|
// Variables controlling the circular holes in the gear.
|
||||||
circles = spokes==0?circles:0;
|
|
||||||
circle_orbit_diameter=hub_diameter/2+rim_radius;
|
circle_orbit_diameter=hub_diameter/2+rim_radius;
|
||||||
circle_orbit_curcumference=pi*circle_orbit_diameter;
|
circle_orbit_curcumference=pi*circle_orbit_diameter;
|
||||||
|
|
||||||
// Limit the circle size to 90% of the gear face.
|
// Limit the circle size to 90% of the gear face.
|
||||||
circle_diameter=
|
circle_default_diameter = min (
|
||||||
min (
|
|
||||||
0.70*circle_orbit_curcumference/circles,
|
0.70*circle_orbit_curcumference/circles,
|
||||||
(rim_radius-hub_diameter/2)*0.9);
|
(rim_radius+hub_diameter/2)*0.9);
|
||||||
|
circle_diameter=(circle_diameter != undef)? circle_diameter : circle_default_diameter;
|
||||||
|
echo(str("cir_orb_dia: ", circle_orbit_diameter, ", cir_orb_circumf: ", circle_orbit_curcumference, ", default cir dia: ",circle_default_diameter, ", cir_dia:",circle_diameter));
|
||||||
difference()
|
difference()
|
||||||
{
|
{
|
||||||
union ()
|
union ()
|
||||||
|
@ -402,29 +404,54 @@ module gear (
|
||||||
half_thick_angle = half_thick_angle,
|
half_thick_angle = half_thick_angle,
|
||||||
involute_facets=involute_facets);
|
involute_facets=involute_facets);
|
||||||
|
|
||||||
//if we have a spoked gear, then the gear body must be removed.
|
//if we have a 0 hub thickness, then hub must be removed
|
||||||
if (spokes>0)
|
if (hub_thickness == 0)
|
||||||
translate ([0,0,-1])
|
translate ([0,0,-1])
|
||||||
cylinder (r=rim_radius,h=rim_thickness+2);
|
cylinder (r=rim_radius,h=rim_thickness+2);
|
||||||
//if the rim is thicker than the gear, carve out the gear body
|
//if the rim is thicker than the gear, carve out gear body
|
||||||
else if (rim_thickness>gear_thickness)
|
else if (rim_thickness>gear_thickness){
|
||||||
|
//if not centered, carve out only the top
|
||||||
|
if (centered_gear == false){
|
||||||
translate ([0,0,gear_thickness])
|
translate ([0,0,gear_thickness])
|
||||||
cylinder (r=rim_radius,h=rim_thickness);
|
cylinder (r=rim_radius,h=rim_thickness);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
//carve out half from top and half from bottom
|
||||||
|
union ()
|
||||||
|
{
|
||||||
|
translate ([0,0,(gear_thickness + rim_thickness)/2])
|
||||||
|
cylinder (r=rim_radius,h=rim_thickness+1);
|
||||||
|
translate ([0,0,-1 -(gear_thickness + rim_thickness)/2])
|
||||||
|
cylinder (r=rim_radius,h=rim_thickness+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//extend the gear body if gear_thickness > rim_thickness unless spoked,
|
//extend the gear body if gear_thickness > rim_thickness unless spoked,
|
||||||
if (spokes==0 && gear_thickness > rim_thickness)
|
if (gear_thickness > rim_thickness)
|
||||||
|
{
|
||||||
|
if (centered_gear == false)
|
||||||
{
|
{
|
||||||
linear_extrude_flat_option(flat=flat, height=gear_thickness)
|
linear_extrude_flat_option(flat=flat, height=gear_thickness)
|
||||||
//if rim is thicker than body, body protrudes into rim
|
|
||||||
circle (r=rim_radius);
|
circle (r=rim_radius);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate ([0,0,-(gear_thickness - rim_thickness)/2])
|
||||||
|
linear_extrude_flat_option(flat=flat, height=gear_thickness)
|
||||||
|
circle (r=rim_radius);
|
||||||
|
}
|
||||||
|
//if rim is thicker than body, body protrudes into rim
|
||||||
|
}
|
||||||
//add the hub
|
//add the hub
|
||||||
|
translate ([0,0,hub_base])
|
||||||
linear_extrude_flat_option(flat=flat, height=hub_thickness)
|
linear_extrude_flat_option(flat=flat, height=hub_thickness)
|
||||||
circle (r=hub_diameter/2);
|
circle (r=hub_diameter/2);
|
||||||
|
|
||||||
//add in spokes
|
//add in spokes
|
||||||
if (spokes>0)
|
if (spokes>0)
|
||||||
|
{
|
||||||
for(i=[0:spokes-1])
|
for(i=[0:spokes-1])
|
||||||
translate([0,0,rim_thickness/2])
|
translate([0,0,rim_thickness/2])
|
||||||
rotate([90,0,i*360/spokes])
|
rotate([90,0,i*360/spokes])
|
||||||
|
@ -437,7 +464,8 @@ module gear (
|
||||||
}
|
}
|
||||||
if (spoke_square==false){
|
if (spoke_square==false){
|
||||||
resize([spoke_width,spoke_thickness,spoke_length])
|
resize([spoke_width,spoke_thickness,spoke_length])
|
||||||
cylinder(h=1,d=1);
|
cylinder(h=10,d=10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -622,7 +650,13 @@ module test_gears()
|
||||||
{
|
{
|
||||||
gear (number_of_teeth=17,
|
gear (number_of_teeth=17,
|
||||||
circular_pitch=500*pi/180,
|
circular_pitch=500*pi/180,
|
||||||
circles=8);
|
spokes=6,
|
||||||
|
spoke_thickness=4,
|
||||||
|
gear_thickness=0,
|
||||||
|
rim_thickness=5,
|
||||||
|
hub_thickness=5,
|
||||||
|
hub_diameter=10,
|
||||||
|
circles=0);
|
||||||
|
|
||||||
rotate ([0,0,360*4/17])
|
rotate ([0,0,360*4/17])
|
||||||
translate ([39.088888,0,0])
|
translate ([39.088888,0,0])
|
||||||
|
@ -657,8 +691,12 @@ module test_gears()
|
||||||
{
|
{
|
||||||
gear (number_of_teeth=27,
|
gear (number_of_teeth=27,
|
||||||
circular_pitch=500*pi/180,
|
circular_pitch=500*pi/180,
|
||||||
//circles=5,
|
circles=6,
|
||||||
|
circle_diameter=12,
|
||||||
spokes=6,
|
spokes=6,
|
||||||
|
gear_thickness=2,
|
||||||
|
hub_thickness=10,
|
||||||
|
centered_gear=true,
|
||||||
spoke_thickness=3,
|
spoke_thickness=3,
|
||||||
hub_diameter=2*8.88888889);
|
hub_diameter=2*8.88888889);
|
||||||
|
|
||||||
|
@ -674,6 +712,7 @@ module test_gears()
|
||||||
number_of_teeth=14,
|
number_of_teeth=14,
|
||||||
circular_pitch=200*pi/180,
|
circular_pitch=200*pi/180,
|
||||||
pressure_angle=5,
|
pressure_angle=5,
|
||||||
|
twist=30,
|
||||||
clearance = 0.2,
|
clearance = 0.2,
|
||||||
gear_thickness = 10,
|
gear_thickness = 10,
|
||||||
rim_thickness = 10,
|
rim_thickness = 10,
|
||||||
|
@ -682,17 +721,18 @@ module test_gears()
|
||||||
circles=0);
|
circles=0);
|
||||||
translate ([13.8888888,0,1])
|
translate ([13.8888888,0,1])
|
||||||
gear (
|
gear (
|
||||||
number_of_teeth=11,
|
number_of_teeth=10,
|
||||||
circular_pitch=200*pi/180,
|
circular_pitch=200*pi/180,
|
||||||
pressure_angle=5,
|
pressure_angle=5,
|
||||||
clearance = 0.2,
|
clearance = 0.2,
|
||||||
gear_thickness = 10,
|
gear_thickness = 10,
|
||||||
rim_thickness = 10,
|
rim_thickness = 8,
|
||||||
|
twist=-30*8/10,
|
||||||
rim_width = 15,
|
rim_width = 15,
|
||||||
hub_thickness = 20,
|
hub_thickness = 10,
|
||||||
//hub_diameter=2*7.222222,
|
centered_hub=true,
|
||||||
hub_diameter=8,
|
hub_diameter=7,
|
||||||
bore_diameter=5,
|
bore_diameter=4,
|
||||||
circles=0);
|
circles=0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -738,7 +778,7 @@ module test_double_helix_gear (
|
||||||
pressure_angle=30;
|
pressure_angle=30;
|
||||||
|
|
||||||
gear (number_of_teeth=teeth,
|
gear (number_of_teeth=teeth,
|
||||||
circular_pitch=700,
|
circular_pitch=700*pi/180,
|
||||||
pressure_angle=pressure_angle,
|
pressure_angle=pressure_angle,
|
||||||
clearance = 0.2,
|
clearance = 0.2,
|
||||||
gear_thickness = height/2*0.5,
|
gear_thickness = height/2*0.5,
|
||||||
|
@ -751,7 +791,7 @@ module test_double_helix_gear (
|
||||||
twist=twist/teeth);
|
twist=twist/teeth);
|
||||||
mirror([0,0,1])
|
mirror([0,0,1])
|
||||||
gear (number_of_teeth=teeth,
|
gear (number_of_teeth=teeth,
|
||||||
circular_pitch=700,
|
circular_pitch=700*pi/180,
|
||||||
pressure_angle=pressure_angle,
|
pressure_angle=pressure_angle,
|
||||||
clearance = 0.2,
|
clearance = 0.2,
|
||||||
gear_thickness = height/2,
|
gear_thickness = height/2,
|
||||||
|
@ -776,7 +816,7 @@ module test_backlash ()
|
||||||
rotate ([0,0,-360/teeth/4])
|
rotate ([0,0,-360/teeth/4])
|
||||||
gear (
|
gear (
|
||||||
number_of_teeth = teeth,
|
number_of_teeth = teeth,
|
||||||
circular_pitch=700,
|
circular_pitch=700*pi/180,
|
||||||
gear_thickness = 12,
|
gear_thickness = 12,
|
||||||
rim_thickness = 15,
|
rim_thickness = 15,
|
||||||
rim_width = 5,
|
rim_width = 5,
|
||||||
|
@ -789,7 +829,7 @@ module test_backlash ()
|
||||||
rotate ([0,0,360/teeth/4])
|
rotate ([0,0,360/teeth/4])
|
||||||
gear (
|
gear (
|
||||||
number_of_teeth = teeth,
|
number_of_teeth = teeth,
|
||||||
circular_pitch=700,
|
circular_pitch=700*pi/180,
|
||||||
gear_thickness = 12,
|
gear_thickness = 12,
|
||||||
rim_thickness = 15,
|
rim_thickness = 15,
|
||||||
rim_width = 5,
|
rim_width = 5,
|
||||||
|
@ -800,7 +840,7 @@ module test_backlash ()
|
||||||
circles=8);
|
circles=8);
|
||||||
}
|
}
|
||||||
|
|
||||||
color([0,0,128,0.5])
|
color([0,0,1,0.5])
|
||||||
translate([0,0,-5])
|
translate([0,0,-5])
|
||||||
cylinder ($fn=20,r=backlash / 4,h=25);
|
cylinder ($fn=20,r=backlash / 4,h=25);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue