mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-24 22:21:28 +02:00
Fixed rod_end colours. Added new pulleys to the test list and reodered. Printed pulleys nopw shown in two rows. Updated images and readme.
135 lines
5.3 KiB
OpenSCAD
135 lines
5.3 KiB
OpenSCAD
//
|
|
// NopSCADlib Copyright Chris Palmer 2024
|
|
// 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/>.
|
|
//
|
|
|
|
//
|
|
//! A rod end, sometimes called a spherical bearing or rod-end eye, is a component used in mechanical systems to create a flexible connection between two parts.
|
|
//
|
|
include <NopSCADlib/utils/core/core.scad>
|
|
include <NopSCADlib/utils/thread.scad>
|
|
|
|
function rod_end_bearing_bore(type) = type[1]; //! radius of the bore hole in the bearing
|
|
function rod_end_bearing_od(type) = type[2]; //! Outer diameter of the bearing
|
|
function rod_end_bore_width(type) = type[3]; //! Width
|
|
function rod_end_bearing_width(type) = type[4]; //! Width
|
|
function rod_end_bearing_shield_colour(type) = type[5]; //! Shield colour, "silver" for metal
|
|
function rod_end_screw_radius(type) = type[6] / 2;//! radius of the screw end, not the bore
|
|
function rod_end_sphere_seg_width(type) = type[7]; //! the width of the pivoting part, effectively a (sphere - sphereCaps - center bore)
|
|
function rod_end_sphere_radius(type) = type[8]; //!radius of the rod end sphere
|
|
function rod_end_screw_length(type) = type[9]; //! length of the screw from eye center, not the bore
|
|
function rod_end_thread_length(type) = type[10]; //! length of the threads
|
|
function rod_end_overall_length(type) = type[11]; //! overall length of the rod end
|
|
function rod_end_bearing_rim(type) = type[12]; //! Outer rim thickness guesstimate
|
|
|
|
module rod_end_bearing(type) { //! Draw a rod end bearing
|
|
|
|
bb_bore = rod_end_bearing_bore(type);
|
|
bb_od = rod_end_bearing_od(type);
|
|
bb_rim = rod_end_bearing_rim(type);
|
|
|
|
bb_width = rod_end_bearing_width(type);
|
|
bb_shield_colour = rod_end_bearing_shield_colour(type);
|
|
length = rod_end_screw_length(type);
|
|
sphere_rad = rod_end_sphere_radius(type) / 2;
|
|
rod_end_sphere_seg_width= rod_end_sphere_seg_width(type);
|
|
shaft_rad = rod_end_screw_radius(type) - eps;
|
|
thread_rad = rod_end_screw_radius(type);
|
|
thread = rod_end_thread_length(type); //length - bb_od/2;
|
|
thread_offset = 0;
|
|
thread_d = 2 * thread_rad;
|
|
pitch = metric_coarse_pitch(thread_d);
|
|
colour = grey(80);
|
|
shield_width=bb_width - (bb_width < 5 ? 0.5 : 1);
|
|
chamfer = bb_rim / 6;
|
|
|
|
description = str("Rod End Bearing ", type[1], length < 10 ? " x " : " x ", length, "mm");
|
|
vitamin(str("Rod End Bearing(", type[0], ", ", length, "): ", description));
|
|
|
|
module shaft(socket = 0, headless = false) {
|
|
shank = length;
|
|
|
|
if(show_threads && pitch)
|
|
translate_z(-length - thread_offset)
|
|
male_metric_thread(thread_d, pitch, thread, false, top = headless ? -1 : 0, solid = !headless, colour = colour);
|
|
else
|
|
color(colour * 0.9)
|
|
rotate_extrude() {
|
|
translate([0, -length - thread_offset])
|
|
square([thread_rad - eps, thread ]);
|
|
}
|
|
}
|
|
|
|
module bearingEye() {
|
|
color(colour)
|
|
rotate_extrude()
|
|
difference() {
|
|
circle(r = sphere_rad);
|
|
|
|
translate(v = [0, -sphere_rad])
|
|
square(size = sphere_rad * 2);
|
|
|
|
for(i=[0, 1])
|
|
mirror(v = [0, i])
|
|
translate(v = [-sphere_rad,rod_end_sphere_seg_width / 2])
|
|
square(size = sphere_rad * 2);
|
|
|
|
square([bb_bore, rod_end_sphere_seg_width + 1], center = true);
|
|
}
|
|
|
|
color(bb_shield_colour)
|
|
rotate_extrude()
|
|
difference() {
|
|
translate([0, -shield_width / 2])
|
|
square([bb_od / 2 - bb_rim,shield_width]);
|
|
|
|
circle(r = sphere_rad);
|
|
}
|
|
|
|
color(colour) {
|
|
rotate_extrude()
|
|
hull() {
|
|
or = bb_od / 2;
|
|
h = bb_width;
|
|
translate([or - bb_rim, -h / 2 + chamfer])
|
|
square([bb_rim, h - 2 * chamfer]);
|
|
|
|
translate([or - bb_rim, -h / 2])
|
|
square([bb_rim - chamfer, h]);
|
|
}
|
|
|
|
translate_z(-bb_width/2+chamfer)
|
|
linear_extrude(bb_width-chamfer*2)
|
|
difference() {
|
|
hull() {
|
|
circle(r = bb_od/2);
|
|
translate([length-thread,-shaft_rad])
|
|
square([0.5,shaft_rad*2]);
|
|
}
|
|
circle(r = bb_od/2-bb_rim);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
shaft();
|
|
|
|
rotate([0,90,0])
|
|
bearingEye();
|
|
}
|