Added SCS bearing blocks, SCSnUU and SCSnLUU variants

This commit is contained in:
Martin Budden 2020-02-16 14:02:23 +00:00
parent ab17de3b0b
commit b07a8ad245
3 changed files with 227 additions and 0 deletions

View File

@ -0,0 +1,35 @@
//
// 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/>.
//
include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/scs_bearing_blocks.scad>
module scs_bearing_blocks()
layout([for(s = scs_bearing_blocks) 2 * scs_size(s)[0]]) {
scs_bearing_block_assembly(scs_bearing_blocks[$i]);
if($i > 0) // skip $i==0, since no SCS6LUU long variant to match SCS6UU
translate([0, 60])
scs_bearing_block_assembly(scs_bearing_blocks_long[$i - 1]);
}
if($preview)
scs_bearing_blocks();

View File

@ -0,0 +1,147 @@
//
// 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/>.
//
//
// SCSnUU and SCSnLUU bearing blocks
//
include <NopSCADlib/core.scad>
include <NopSCADlib/vitamins/screws.scad>
include <NopSCADlib/vitamins/linear_bearings.scad>
function scs_size(type) = [type[4],type[6],type[5]]; //! Size of scs bracket bounding block
function scs_hole_offset(type) = type[2]; //! Offset of bearing hole from base of block
function scs_block_center_height(type) = type[6]; //! Height of the center of the block
function scs_block_side_height(type) = type[7]; //! Height of the side of the block, this determines the minimum screw length
function scs_screw(type) = type[11]; //! Screw type
function scs_screw_separation_x(type) = type[8]; //! Screw separation in X direction
function scs_screw_separation_z(type) = type[9]; //! Screw separation in Z direction
function scs_bearing(type) = type[14]; //! Linear bearing used
sks_bearing_block_color = grey90;
module scs_bearing_block(type) { //! Draw the specified SCS bearing block
vitamin(str("scs_bearing_block(", type[0], "): ", type[0], " bearing block"));
T = type[1];
h = type[2];
E = type[3];
W = type[4];
assert(W == 2 * E, str("W or E wrong for scs_bearing_block", type[0]));
L = type[5];
F = type[6];
G = type[7];
B = type[8];
C = type[9];
K = type[10];
S1 = type[11];
S2 = type[12];
L1 = type[13];
module right_trapezoid(base, top, height, h = 0, center = true) {//! A right angled trapezoid with the 90&deg; corner at the origin. 3D when ```h``` is nonzero, otherwise 2D
extrude_if(h, center = center)
polygon(points = [ [0,0], [base, 0], [top, height], [0, height] ]);
}
boltHoleRadius = screw_clearance_radius(S1);
footHeight = min(0.75, (G - bearing_dia(scs_bearing(type)) - 1.5) / 2); // estimate, not specified on drawings
color(sks_bearing_block_color) {
linear_extrude(L, center = true) {
bearingRadius = bearing_dia(scs_bearing(type)) / 2;
// center section with bearing hole
difference() {
union() {
translate([-(B - 2 * boltHoleRadius) / 2, -h + footHeight])
square([B - 2 * boltHoleRadius, G - footHeight]);
for(m = [0, 1])
mirror([m, 0, 0])
translate([0 , G - h])
right_trapezoid(bearingRadius, bearingRadius -F + G, F - G);
}
circle(r = bearingRadius);
}
// add the sides
for(m = [0, 1])
mirror([m, 0, 0]) {
trapezoidX = boltHoleRadius - 0.5; // estimate, not specified on drawings
sideX = 2 * (K - boltHoleRadius - trapezoidX);
chamfer = 0.5;
assert(sideX > chamfer, "trapezoidX too large in scs_bearing_block");
translate([B / 2 + boltHoleRadius, -h]) {
square([sideX - chamfer, G]);
translate([sideX, 0])
rotate(90)
right_trapezoid(G - chamfer, G, chamfer);
translate([sideX, 0]) {
right_trapezoid(trapezoidX - footHeight, trapezoidX, footHeight);
translate([trapezoidX, footHeight])
rotate(90)
right_trapezoid(T - footHeight, L1 - footHeight, trapezoidX);
}
}
translate([B / 2 - boltHoleRadius, -h])
mirror([1, 0, 0])
right_trapezoid(boltHoleRadius, boltHoleRadius + footHeight, footHeight);
}
}
// side blocks with bolt holes
for(x = [-B / 2, B / 2])
translate([x, G / 2 - h, 0])
rotate([90, 0, 0])
linear_extrude(G, center = true)
difference() {
square([boltHoleRadius * 2, L], center = true);
for (y = [-C / 2, C / 2])
translate([0, y])
circle(r = boltHoleRadius);
}
}
not_on_bom() no_explode()
linear_bearing(scs_bearing(type));
}
module scs_bearing_block_assembly(type, screw_length, screw_type) { //! Assembly with screws and nuts in place
scs_bearing_block(type);
G = scs_block_side_height(type);
h = scs_hole_offset(type);
screw_type = screw_type ? screw_type : scs_screw(type);
screw_length = screw_length ? screw_length : screw_longer_than(G + 10);
washer_type = screw_washer(screw_type);
washer_thickness = washer_thickness(washer_type);
screw_separation_x = scs_screw_separation_x(type);
screw_separation_z = scs_screw_separation_z(type);
for(x = [-screw_separation_x, screw_separation_x], z = [-screw_separation_z, screw_separation_z])
translate([x / 2, G - h, z / 2])
rotate([-90, 0, 0]) {
screw(screw_type, screw_length);
translate_z(-screw_length + washer_thickness)
nut(screw_nut(screw_type))
washer(washer_type);
}
}

View File

@ -0,0 +1,45 @@
//
// 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/>.
//
//
// SCS bearing blocks
//
include <NopSCADlib/core.scad>
include <NopSCADlib/vitamins/screws.scad>
include <NopSCADlib/vitamins/linear_bearings.scad>
// T h E W L F G B C K S1 S2 L1 LB
SCS6UU = ["SCS6UU", 6, 9, 15, 30, 25, 18, 15, 20, 15, 5, M4_cap_screw, 3.4, 8, LM6UU];
SCS8UU = ["SCS8UU", 6, 11, 17, 34, 30, 22, 18, 24, 18, 5, M4_cap_screw, 3.4, 8, LM8UU];
SCS10UU = ["SCS10UU", 8, 13, 20, 40, 35, 26, 21, 28, 21, 6, M5_cap_screw, 4.3, 12, LM10UU];
SCS12UU = ["SCS12UU", 8, 15, 21, 42, 36, 28, 24, 30.5, 26, 5.75, M5_cap_screw, 4.3, 12, LM12UU];
SCS16UU = ["SCS16UU", 9, 19, 25, 50, 44, 38.5, 32.5, 36, 34, 7, M5_cap_screw, 4.3, 12, LM16UU];
SCS8LUU = ["SCS8LUU", 6, 11, 17, 34, 58, 22, 18, 24, 42, 5, M4_cap_screw, 3.4, 8, LM8LUU];
SCS10LUU = ["SCS10LUU", 8, 13, 20, 40, 68, 26, 21, 28, 45, 6, M5_cap_screw, 4.3, 12, LM10LUU];
SCS12LUU = ["SCS12LUU", 8, 15, 21, 42, 70, 28, 24, 30.5, 50, 5.75, M5_cap_screw, 4.3, 12, LM12LUU];
SCS16LUU = ["SCS16LUU", 9, 19, 25, 50, 85, 38.5, 32.5, 36, 60, 7, M5_cap_screw, 4.3, 12, LM16LUU];
scs_bearing_blocks = [SCS6UU, SCS8UU, SCS10UU, SCS12UU, SCS16UU];
scs_bearing_blocks_long = [SCS8LUU, SCS10LUU, SCS12LUU, SCS16LUU];
use <scs_bearing_block.scad>