Added a switch to generate bearing outlines for hole cutting etc.

This commit is contained in:
Elmom 2010-07-26 12:57:28 +03:00
parent c803681562
commit 50426f01ef
2 changed files with 22 additions and 9 deletions

View file

@ -8,12 +8,23 @@
include <units.scad> include <units.scad>
include <materials.scad> include <materials.scad>
// Example, uncomment to view
//bearing_test();
//bearing_hole_test();
module bearing_test(){ module bearing_test(){
bearing(); bearing();
bearing(pos=[5*cm, 0,0], angle=[90,0,0]); bearing(pos=[5*cm, 0,0], angle=[90,0,0]);
bearing(pos=[-2.5*cm, 0,0], model=Bearing688); bearing(pos=[-2.5*cm, 0,0], model=Bearing688);
} }
module bearing_hole_test(){
difference(){
translate([0, 0, 3.5]) cube(size=[30, 30, 7-10*epsilon], center=true);
bearing(outline=true);
}
}
BEARING_INNER_DIAMETER = 0; BEARING_INNER_DIAMETER = 0;
BEARING_OUTER_DIAMETER = 1; BEARING_OUTER_DIAMETER = 1;
BEARING_WIDTH = 2; BEARING_WIDTH = 2;
@ -27,27 +38,29 @@ function bearingWidth(model) = model[BEARING_WIDTH];
function bearingInnerDiameter(model) = model[BEARING_INNER_DIAMETER]; function bearingInnerDiameter(model) = model[BEARING_INNER_DIAMETER];
function bearingOuterDiameter(model) = model[BEARING_OUTER_DIAMETER]; function bearingOuterDiameter(model) = model[BEARING_OUTER_DIAMETER];
module bearing(pos=[0,0,0], angle=[0,0,0], model=SkateBearing, material=Steel, sideMaterial=Brass) { module bearing(pos=[0,0,0], angle=[0,0,0], model=SkateBearing, outline=false,
material=Steel, sideMaterial=Brass) {
w = bearingWidth(model); w = bearingWidth(model);
innerD = bearingInnerDiameter(model); innerD = outline==false ? bearingInnerDiameter(model) : 0;
outerD = bearingOuterDiameter(model); outerD = bearingOuterDiameter(model);
innerRim = innerD + (outerD - innerD) * 0.2; innerRim = innerD + (outerD - innerD) * 0.2;
outerRim = outerD - (outerD - innerD) * 0.2; outerRim = outerD - (outerD - innerD) * 0.2;
midSink = w * 0.1; midSink = w * 0.1;
translate(pos) rotate(angle) union() {
color(material) color(material)
translate(pos)
rotate(angle) {
difference() { difference() {
// Basic ring // Basic ring
Ring([0,0,0], outerD, innerD, w, material, material); Ring([0,0,0], outerD, innerD, w, material, material);
if (outline==false) {
// Side shields // Side shields
Ring([0,0,-epsilon], outerRim, innerRim, epsilon+midSink, sideMaterial, material); Ring([0,0,-epsilon], outerRim, innerRim, epsilon+midSink, sideMaterial, material);
Ring([0,0,w-midSink], outerRim, innerRim, epsilon+midSink, sideMaterial, material); Ring([0,0,w-midSink], outerRim, innerRim, epsilon+midSink, sideMaterial, material);
} }
} }
}
module Ring(pos, od, id, h, material, holeMaterial) { module Ring(pos, od, id, h, material, holeMaterial) {
color(material) { color(material) {

View file

@ -20,5 +20,5 @@ M8 = 8*mm;
// When a small distance is needed to overlap shapes for boolean cutting, etc. // When a small distance is needed to overlap shapes for boolean cutting, etc.
epsilon = 0.0001*mm; epsilon = 0.01*mm;