From 03beaec470521f5dea76b095f789024ee1ea48be Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Tue, 10 Nov 2020 09:11:30 +0000 Subject: [PATCH 1/2] Initial submission of shaft couplings vitamin. --- tests/shaft_couplings.scad | 30 +++++++++++++++++ vitamins/shaft_coupling.scad | 61 +++++++++++++++++++++++++++++++++++ vitamins/shaft_couplings.scad | 30 +++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 tests/shaft_couplings.scad create mode 100644 vitamins/shaft_coupling.scad create mode 100644 vitamins/shaft_couplings.scad diff --git a/tests/shaft_couplings.scad b/tests/shaft_couplings.scad new file mode 100644 index 0000000..f1613fd --- /dev/null +++ b/tests/shaft_couplings.scad @@ -0,0 +1,30 @@ +// +// 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 . +// +include <../core.scad> +include <../vitamins/shaft_couplings.scad> + +use <../utils/layout.scad> + +module shaft_couplings() + layout([for(s = shaft_couplings) sc_diameter(s)],5) + shaft_coupling(shaft_couplings[$i]); + +if($preview) + shaft_couplings(); + diff --git a/vitamins/shaft_coupling.scad b/vitamins/shaft_coupling.scad new file mode 100644 index 0000000..a42b062 --- /dev/null +++ b/vitamins/shaft_coupling.scad @@ -0,0 +1,61 @@ +// +// NopSCADlib Copyright Chris Palmer 2020 +// 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 . + +// +//! Shaft couplings +// +include <../core.scad> + + +function sc_length(type) = type[1]; //! Coupling length +function sc_diameter(type) = type[2]; //! Coupling outer diameter +function sc_diameter1(type) = type[3]; //! Diameter of smaller shaft +function sc_diameter2(type) = type[4]; //! Diameter of larger shaft + +module shaft_coupling(type, colour = "silver") { //! Draw the shaft coupling + vitamin(str("shaft_coupling(", type[0], "): Shaft coupling ", type[0])); + + length = sc_length(type); + diameter = sc_diameter(type); + d1 = sc_diameter1(type); + d2 = sc_diameter2(type); + + color(colour) { + translate_z(-length / 2) + linear_extrude(length / 2) + difference() { + circle(d = diameter); + circle(d = d1); + } + linear_extrude(length / 2) + difference() { + circle(d = diameter); + circle(d = d2); + } + } + + grub_offset_z = 5; + grub_length = 3; + for(z = [-length / 2 + grub_offset_z, length / 2 - grub_offset_z]) + translate_z(z) + for(a = [0, 90]) + rotate([-90, 0, a]) + translate_z(diameter / 2 + 1) + not_on_bom() screw(M3_grub_screw, grub_length); +} + diff --git a/vitamins/shaft_couplings.scad b/vitamins/shaft_couplings.scad new file mode 100644 index 0000000..c105dd0 --- /dev/null +++ b/vitamins/shaft_couplings.scad @@ -0,0 +1,30 @@ +// +// NopSCADlib Copyright Chris Palmer 2020 +// 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 . +// + +// +//! Shaft couplings +// + +// L D d1 d2 +SC_5x8_rigid = [ "5x8 rigid", 25, 12.5, 5, 8 ]; + +shaft_couplings = [SC_5x8_rigid]; + +use + From b583202fb728b9f87062f29659704f4425e08ac5 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Tue, 10 Nov 2020 14:49:11 +0000 Subject: [PATCH 2/2] Added hole for grub screw to shaft coupling. --- vitamins/shaft_coupling.scad | 52 ++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/vitamins/shaft_coupling.scad b/vitamins/shaft_coupling.scad index a42b062..9e1a381 100644 --- a/vitamins/shaft_coupling.scad +++ b/vitamins/shaft_coupling.scad @@ -35,27 +35,39 @@ module shaft_coupling(type, colour = "silver") { //! Draw the shaft coupling d1 = sc_diameter1(type); d2 = sc_diameter2(type); - color(colour) { - translate_z(-length / 2) - linear_extrude(length / 2) - difference() { - circle(d = diameter); - circle(d = d1); - } - linear_extrude(length / 2) - difference() { - circle(d = diameter); - circle(d = d2); - } + grub_length = 3; + module grub_screw_positions() { + grub_offset_z = 5; + for(z = [-length / 2 + grub_offset_z, length / 2 - grub_offset_z]) + translate_z(z) + for(a = [0, 90]) + rotate([-90, 0, a]) + translate_z(diameter / 2 + 1) + children(); } - grub_offset_z = 5; - grub_length = 3; - for(z = [-length / 2 + grub_offset_z, length / 2 - grub_offset_z]) - translate_z(z) - for(a = [0, 90]) - rotate([-90, 0, a]) - translate_z(diameter / 2 + 1) - not_on_bom() screw(M3_grub_screw, grub_length); + color(colour) { + render(convexity=2) difference() { + union() { + translate_z(-length / 2) + linear_extrude(length / 2) + difference() { + circle(d = diameter); + circle(d = d1); + } + linear_extrude(length / 2) + difference() { + circle(d = diameter); + circle(d = d2); + } + } + grub_screw_positions() + rotate([180, 0, 0]) + cylinder(r = screw_radius(M3_grub_screw), h = 5); + } + } + + grub_screw_positions() + not_on_bom() screw(M3_grub_screw, grub_length); }