2019-06-08 17:10:47 -04:00
//
// NopSCADlib Copyright Chris Palmer 2018
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// This file is part of NopSCADlib.
//
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
// GNU General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>.
//
//
//! Simple model of ball bearings with seals, the colour of which can be specified. If silver they are assumed to be metal and the
//! part number gets a ZZ suffix. Any other colour is assumed to be rubber and the suffix is -2RS.
//!
//! If a ball bearing has a child it is placed on its top surface, the same as nuts and washers, etc.
//!
//! Also single bearing balls are modelled as just a silver sphere and a BOM entry.
//
2020-02-29 12:52:36 -05:00
include < ../utils/core/core.scad >
2020-04-11 12:29:02 -04:00
include < ../utils/tube.scad >
2019-06-08 17:10:47 -04:00
function bb_name ( type ) = type [ 0 ] ; //! Part code without shield type suffix
function bb_bore ( type ) = type [ 1 ] ; //! Internal diameter
function bb_diameter ( type ) = type [ 2 ] ; //! External diameter
function bb_width ( type ) = type [ 3 ] ; //! Width
function bb_colour ( type ) = type [ 4 ] ; //! Shield colour, "silver" for metal
2020-04-11 12:29:02 -04:00
function bb_rim ( type ) = type [ 5 ] ; //! Outer rim thickness guesstimate
function bb_hub ( type ) = type [ 6 ] ; //! Inner rim thickness guesstimate
2019-06-08 17:10:47 -04:00
module ball_bearing ( type ) { //! Draw a ball bearing
shield = bb_colour ( type ) ;
suffix = shield = = "silver" ? "ZZ " : "-2RS " ;
vitamin ( str ( "ball_bearing(BB" , bb_name ( type ) , "): Ball bearing " , bb_name ( type ) , suffix , bb_bore ( type ) , "mm x " , bb_diameter ( type ) , "mm x " , bb_width ( type ) , "mm" ) ) ;
rim = bb_rim ( type ) ;
2020-04-11 12:29:02 -04:00
hub = bb_hub ( type ) ;
2019-06-08 17:10:47 -04:00
h = bb_width ( type ) ;
2020-04-11 12:29:02 -04:00
or = bb_diameter ( type ) / 2 ;
ir = bb_bore ( type ) / 2 ;
2019-06-08 17:10:47 -04:00
2020-04-11 12:29:02 -04:00
color ( "silver" ) {
$fn = 360 ;
2020-04-11 18:46:37 -04:00
rim_chamfer = rim / 6 ;
2020-04-11 12:29:02 -04:00
rotate_extrude ( )
hull ( ) {
2020-07-30 20:33:33 -04:00
translate ( [ or - rim , - h / 2 + rim_chamfer ] )
square ( [ rim , h - 2 * rim_chamfer ] ) ;
2020-04-11 12:29:02 -04:00
2020-07-30 20:33:33 -04:00
translate ( [ or - rim , - h / 2 ] )
square ( [ rim - rim_chamfer , h ] ) ;
2019-06-08 17:10:47 -04:00
}
2020-04-11 18:46:37 -04:00
hub_chamfer = hub / 6 ;
2020-04-11 12:29:02 -04:00
rotate_extrude ( )
hull ( ) {
2020-07-30 20:33:33 -04:00
translate ( [ ir , - h / 2 + hub_chamfer ] )
square ( [ hub , h - 2 * hub_chamfer ] ) ;
2020-04-11 12:29:02 -04:00
2020-07-30 20:33:33 -04:00
translate ( [ ir + hub_chamfer , - h / 2 ] )
square ( [ hub - hub_chamfer , h ] ) ;
2020-04-11 12:29:02 -04:00
}
2019-06-08 17:10:47 -04:00
}
2020-04-11 12:29:02 -04:00
color ( shield ) tube ( or - rim - eps , ir + hub + eps , h - 1 ) ;
2019-06-08 17:10:47 -04:00
if ( $children )
translate_z ( bb_width ( type ) / 2 )
children ( ) ;
}
module bearing_ball ( dia ) { //! Draw a steel bearing ball
vitamin ( str ( " bearing_ball(" , dia , "): Steel ball " , dia , "mm" ) ) ;
color ( "silver" ) sphere ( d = dia ) ;
}