Added License.txt and tweaked gear blocks
Preparing for release; added License.txt and attribution Small tweaks to gear cuts and side walls to close the gap.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
/* GearHinge.scad - Parametric geared hinge for FDM manufacturing
|
||||||
|
Copyright (c) 2021 Stephen J. Carpenter <sjc@carpanet.net>
|
||||||
|
|
||||||
|
License: MIT. See License.txt for details.
|
||||||
|
*/
|
||||||
|
|
||||||
use <PolyGear/PolyGear.scad>
|
use <PolyGear/PolyGear.scad>
|
||||||
include <PolyGear/PolyGearBasics.scad>
|
include <PolyGear/PolyGearBasics.scad>
|
||||||
use <PolyGear/shortcuts.scad>
|
use <PolyGear/shortcuts.scad>
|
||||||
@@ -35,9 +41,10 @@ SideW=tol+BackW;
|
|||||||
|
|
||||||
echo("Reference Diameter (MeshD): ", MeshD);
|
echo("Reference Diameter (MeshD): ", MeshD);
|
||||||
//rot=360/N1*$t;
|
//rot=360/N1*$t;
|
||||||
//rot=90-90*$t;
|
//rot=90*$t;
|
||||||
rot=45;
|
//rot=20*$t +75;
|
||||||
//rot=90;
|
rot=0;
|
||||||
|
//rot=00;
|
||||||
//axis_angle = -50;
|
//axis_angle = -50;
|
||||||
|
|
||||||
//meshed(rot=rot);
|
//meshed(rot=rot);
|
||||||
@@ -72,20 +79,28 @@ module gear_hinge(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gear_track_block - generates a bit of material to jam the gears at full
|
||||||
|
// extention to ensure that the gears don't pop out. This is only
|
||||||
|
// added to one gear.
|
||||||
module gear_track_block() {
|
module gear_track_block() {
|
||||||
difference() {
|
difference() {
|
||||||
CyS(r=MeshD/2 + Module/2, h=width/2, w1=245, w2=250);
|
//CyS(r=MeshD/2 + Module/2, h=width/2, w1=245, w2=250);
|
||||||
|
CyS(r=MeshD - 4*Module, h=width/2, w1=245, w2=251);
|
||||||
CyS(r=ShaftD+1, h=width, w1=244, w2=271);
|
CyS(r=ShaftD+1, h=width, w1=244, w2=271);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// gear_sector - Generates the shape of gear to be kept.
|
||||||
|
// currently only used on the blue_gear.
|
||||||
|
// xxx: red_gear maybe should be refactored to use it?
|
||||||
module gear_sector(meshd, width) {
|
module gear_sector(meshd, width) {
|
||||||
CyS(r=meshd, h=width, w1=215, w2=00);
|
CyS(r=meshd, h=width, w1=215, w2=00);
|
||||||
CyS(r=meshd/2 - 2, h=width, w1=-1, w2=90);
|
CyS(r=meshd/2 - 2, h=width, w1=-1, w2=90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// blue_gear - Gear on the left with the track block built into its back side.
|
||||||
module blue_gear() {
|
module blue_gear() {
|
||||||
render() {
|
|
||||||
intersection() {
|
intersection() {
|
||||||
spur_gear(n=N1, w=width, m=Module, chamfer=30, helix_angle = helix_angle );
|
spur_gear(n=N1, w=width, m=Module, chamfer=30, helix_angle = helix_angle );
|
||||||
difference() {
|
difference() {
|
||||||
@@ -94,23 +109,27 @@ module blue_gear() {
|
|||||||
// Shaft Hole
|
// Shaft Hole
|
||||||
cylinder(d=ShaftD, h=width+2, center=true);
|
cylinder(d=ShaftD, h=width+2, center=true);
|
||||||
|
|
||||||
// Block limit - back
|
// Block limit - side
|
||||||
translate([-BackW+2*tol,-MeshD/2,0]) cube([MeshD,MeshD,width], center=true);
|
translate([-BackW+2*tol,-MeshD/2,0]) cube([MeshD,MeshD,width], center=true);
|
||||||
|
// Block Limit - back
|
||||||
|
|
||||||
|
translate([-MeshD,-1.5+tol, -(width+1)/2])
|
||||||
|
cube([MeshD,1.5+tol,width+1]);
|
||||||
|
|
||||||
// Block limit - front
|
// Block limit - front
|
||||||
translate([0,0,-width/2]) cube([1,MeshD/2,width]);
|
translate([0,0,-width/2]) cube([1,MeshD/2,width]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Rear Block
|
// Rear Block
|
||||||
gear_track_block();
|
gear_track_block();
|
||||||
}
|
|
||||||
// leaf arm
|
// leaf arm
|
||||||
//translate([MeshD/2 - 2*Module,11,0]) cube([4,20,width+1], center=true);
|
|
||||||
translate([2,11.6,0]) rotate([0,0,0]) leaf_arm(left=true, h=width+4);
|
translate([2,11.6,0]) rotate([0,0,0]) leaf_arm(left=true, h=width+4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Red Gear - Gear on the right.
|
||||||
module red_gear()
|
module red_gear()
|
||||||
{
|
{
|
||||||
render() difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
CyS(r=MeshD/2 - 2, h=width, w1=90, w2=190);
|
CyS(r=MeshD/2 - 2, h=width, w1=90, w2=190);
|
||||||
intersection() {
|
intersection() {
|
||||||
@@ -124,10 +143,11 @@ module red_gear()
|
|||||||
}
|
}
|
||||||
// Shaft Hole
|
// Shaft Hole
|
||||||
cylinder(d=ShaftD, h=width+2, center=true);
|
cylinder(d=ShaftD, h=width+2, center=true);
|
||||||
// Block limit -front
|
// Block limit - side
|
||||||
//translate([-Module/2,1,-width/2]) cube([Module,MeshD/2,width]);
|
|
||||||
// Block limit
|
|
||||||
translate([BackW-2*tol,-MeshD/2,0]) cube([MeshD,MeshD,width+1], center=true);
|
translate([BackW-2*tol,-MeshD/2,0]) cube([MeshD,MeshD,width+1], center=true);
|
||||||
|
// Block limit - front
|
||||||
|
translate([0,-1.5+tol, -(width+1)/2]) cube([MeshD,1.5+tol,width+1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,6 +179,8 @@ module round_case_inner(meshd, shaftd, width, tol) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// round_case - generates the back shell of the hinge, which includes the axis
|
||||||
|
// posts of the hinges.
|
||||||
module round_case(
|
module round_case(
|
||||||
d=ShaftD,
|
d=ShaftD,
|
||||||
tol=.25,
|
tol=.25,
|
||||||
@@ -166,14 +188,14 @@ module round_case(
|
|||||||
MeshD=MeshD,
|
MeshD=MeshD,
|
||||||
Module=Module,
|
Module=Module,
|
||||||
SwingAdd=1,
|
SwingAdd=1,
|
||||||
WallD=1.5,
|
WallD=1.2,
|
||||||
spine=true,
|
spine=false,
|
||||||
full=true)
|
full=true)
|
||||||
{
|
{
|
||||||
|
|
||||||
Swing = MeshD/2 + Module + SwingAdd;
|
Swing = MeshD/2 + Module + SwingAdd;
|
||||||
BackW=WallD/2 + Swing+Module+1;
|
BackW=WallD/2 + Swing+Module+1;
|
||||||
SideW=tol -1 + BackW-MeshD/2;
|
SideW=tol + BackW-MeshD/2;
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
intersection() {
|
intersection() {
|
||||||
@@ -189,7 +211,6 @@ module round_case(
|
|||||||
else {
|
else {
|
||||||
hull() round_case_inner(meshd=MeshD, shaftd=d, width=width, tol=tol);
|
hull() round_case_inner(meshd=MeshD, shaftd=d, width=width, tol=tol);
|
||||||
}
|
}
|
||||||
//color("purple") translate([0,0,11]) cube([50,50,20], center=true);
|
|
||||||
|
|
||||||
if (full) {
|
if (full) {
|
||||||
echo("full is true. Not splitting.");
|
echo("full is true. Not splitting.");
|
||||||
@@ -210,7 +231,8 @@ module round_case(
|
|||||||
cylinder(d=d+3*tol, h=WallD+tol, center=true);
|
cylinder(d=d+3*tol, h=WallD+tol, center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([xi*(BackW/2 - SideW +4),-WallD/2]) cube([SideW+1+tol,WallD,width+3+2*tol], center=true);
|
translate([xi*(SideW/2+2*tol+Module/2),-WallD/2])
|
||||||
|
cube([SideW+2*tol+Module+1,WallD,width+4], center=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
21
License.txt
Normal file
21
License.txt
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Stephen J. Carpenter <sjc-gearhinge@carpanet.net>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
Reference in New Issue
Block a user