mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-09 22:51:16 +02:00
Added screw_length() to calculuate screw lengths includin washers, inserts and nuts.
This commit is contained in:
@@ -151,10 +151,8 @@ function fan_screw_depth(type, full_depth = false) = fan_boss_d(type) || full_de
|
||||
|
||||
function fan_screw_length(type, thickness, full_depth = false) =
|
||||
let(depth = fan_screw_depth(type, full_depth),
|
||||
washers = depth == fan_depth(type) ? 2 : 1,
|
||||
washer = screw_washer(fan_screw(type)),
|
||||
nut = screw_nut(fan_screw(type)))
|
||||
screw_longer_than(thickness + depth + washer_thickness(washer) * washers + nut_thickness(nut, true)); //! Screw length required
|
||||
washers = depth == fan_depth(type) ? 2 : 1)
|
||||
screw_length(fan_screw(type), thickness + depth, washers, nyloc = true); //! Screw length required
|
||||
|
||||
module fan_assembly(type, thickness, include_fan = true, screw = false, full_depth = false) { //! Fan with its fasteners
|
||||
translate_z(-fan_depth(type) / 2) {
|
||||
|
@@ -247,10 +247,7 @@ module iec_inserts(type) { //! Place the inserts
|
||||
|
||||
module iec_assembly(type, thickness) { //! Assembly with fasteners given panel thickness
|
||||
screw = iec_screw(type);
|
||||
washer = screw_washer(screw);
|
||||
nut = screw_nut(screw);
|
||||
insert = screw_insert(screw);
|
||||
screw_length = thickness ? screw_longer_than(iec_flange_t(type) + thickness + washer_thickness(washer) + nut_thickness(nut, true))
|
||||
screw_length = thickness ? screw_length(screw, iec_flange_t(type) + thickness, 1, nyloc = true)
|
||||
: insert_screw_length;
|
||||
|
||||
iec(type);
|
||||
@@ -262,6 +259,6 @@ module iec_assembly(type, thickness) { //! Assembly with fasteners given panel
|
||||
if(thickness)
|
||||
translate_z(-thickness)
|
||||
vflip()
|
||||
nut_and_washer(nut, true);
|
||||
nut_and_washer(screw_nut(screw), true);
|
||||
}
|
||||
}
|
||||
|
@@ -129,15 +129,13 @@ module mod_screw_positions(type) //! Position children at the screw positions
|
||||
|
||||
module module_assembly(type, thickness) { //! Module with its fasteners in place
|
||||
screw = mod_screw(type);
|
||||
washer = screw_washer(screw);
|
||||
nut = screw_nut(screw);
|
||||
screw_length = screw_longer_than(thickness + mod_screw_z(type) + 2 * washer_thickness(washer) + nut_thickness(nut, true));
|
||||
screw_length = screw_length(screw, thickness + mod_screw_z(type), 2, nyloc = true);
|
||||
|
||||
mod(type);
|
||||
|
||||
mod_screw_positions(type) {
|
||||
translate_z(mod_screw_z(type))
|
||||
nut_and_washer(nut, true);
|
||||
nut_and_washer(screw_nut(screw), true);
|
||||
|
||||
translate_z(-thickness)
|
||||
vflip()
|
||||
|
@@ -1121,9 +1121,7 @@ module pcb_assembly(type, height, thickness) { //! Draw PCB assembly with spaces
|
||||
|
||||
screw = pcb_screw(type);
|
||||
if(!is_undef(screw)) {
|
||||
washer = screw_washer(screw);
|
||||
nut = screw_nut(screw);
|
||||
screw_length = screw_longer_than(height + thickness + pcb_thickness(type) + washer_thickness(washer) + nut_thickness(nut, true));
|
||||
screw_length = screw_length(screw, height + thickness + pcb_thickness(type), 1, nyloc = true);
|
||||
|
||||
taper = screw_smaller_than(pcb_hole_d(type)) > 2 * screw_radius(screw); // Arduino?
|
||||
pcb_screw_positions(type) {
|
||||
@@ -1138,7 +1136,7 @@ module pcb_assembly(type, height, thickness) { //! Draw PCB assembly with spaces
|
||||
|
||||
translate_z(-thickness)
|
||||
vflip()
|
||||
nut_and_washer(nut, true);
|
||||
nut_and_washer(screw_nut(screw), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -128,7 +128,7 @@ module ring_terminal_assembly(type, thickness, top = false) { //! Earthing assem
|
||||
screw = ringterm_screw(type);
|
||||
washer = screw_washer(screw);
|
||||
nut = screw_nut(screw);
|
||||
screw_length = screw_longer_than(thickness + 2 * washer_thickness(washer) + nut_thickness(nut, true) + ringterm_thickness(type));
|
||||
screw_length = screw_length(screw, thickness + ringterm_thickness(type), 2, nyloc = true);
|
||||
|
||||
explode(10, true) star_washer(washer)
|
||||
if(top)
|
||||
|
@@ -48,7 +48,7 @@ function screw_head_depth(type, d = 0) = //! How far a counter sink
|
||||
? 0
|
||||
: let(r = screw_radius(type)) screw_head_radius(type) - max(r, d / 2) + r / 5;
|
||||
|
||||
function screw_longer_than(x) = x <= 5 ? 5 : //! Returns shortest screw length longer or equal to x
|
||||
function screw_longer_than(x) = x <= 5 ? 5 : //! Returns the length of the shortest screw length longer or equal to x
|
||||
x <= 6 ? 6 :
|
||||
x <= 8 ? 8 :
|
||||
x <= 10 ? 10 :
|
||||
@@ -56,7 +56,7 @@ function screw_longer_than(x) = x <= 5 ? 5 : //! Returns shortest screw length
|
||||
x <= 16 ? 16 :
|
||||
ceil(x / 5) * 5;
|
||||
|
||||
function screw_shorter_than(x) = x >= 20 ? floor(x / 5) * 5 : //! Returns longest screw length shorter than or equal to x
|
||||
function screw_shorter_than(x) = x >= 20 ? floor(x / 5) * 5 : //! Returns the length of the longest screw shorter than or equal to x
|
||||
x >= 16 ? 16 :
|
||||
x >= 12 ? 12 :
|
||||
x >= 10 ? 10 :
|
||||
@@ -64,6 +64,14 @@ function screw_shorter_than(x) = x >= 20 ? floor(x / 5) * 5 : //! Returns longes
|
||||
x >= 6 ? 6 :
|
||||
5;
|
||||
|
||||
function screw_length(screw, thickness, washers, insert = false, nyloc = false, nut = false, longer = false) = //! Returns the length of the longest or shortest screw that will got through `thickness` and `washers` and possibly an `insert`, `nut` or `nyloc`
|
||||
let(washer = washers ? washers * washer_thickness(screw_washer(screw)) : 0,
|
||||
insert = insert ? insert_length(screw_insert(screw)) : 0,
|
||||
nut = nut || nyloc ? nut_thickness(screw_nut(screw), nyloc) : 0,
|
||||
total = thickness + washer + insert + nut
|
||||
)
|
||||
longer || nut || nyloc ? screw_longer_than(total) : screw_shorter_than(total);
|
||||
|
||||
function screw_smaller_than(d) = d >= 2.5 && d < 3 ? 2.5 : floor(d); // Largest diameter screw less than or equal to specified diameter
|
||||
|
||||
function screw_insert(screw, i = 0) = let(d = screw_radius(screw) * 2)
|
||||
|
@@ -71,15 +71,13 @@ use <nut.scad>
|
||||
use <washer.scad>
|
||||
|
||||
module ssr_assembly(type, screw, thickness) { //! Assembly with fasteners in place
|
||||
nut = screw_nut(screw);
|
||||
washer = screw_washer(screw);
|
||||
screw_length = screw_longer_than(2 * washer_thickness(washer) + thickness + ssr_base_t(type) + nut_thickness(nut, true));
|
||||
screw_length = screw_length(screw, thickness + ssr_base_t(type), 2, nyloc = true);
|
||||
|
||||
ssr(type);
|
||||
|
||||
ssr_hole_positions(type) {
|
||||
translate_z(ssr_base_t(type))
|
||||
nut_and_washer(nut, true);
|
||||
nut_and_washer(screw_nut(screw), true);
|
||||
|
||||
translate_z(-thickness)
|
||||
vflip()
|
||||
|
@@ -146,9 +146,8 @@ module vero_cutouts(type, angle = undef) vero_components(type, true, angle); //!
|
||||
module veroboard_assembly(type, height, thickness, flip = false) //! Draw the assembly with components and fasteners in place
|
||||
assembly(vero_assembly(type)) {
|
||||
screw = vero_screw(type);
|
||||
washer = screw_washer(screw);
|
||||
nut = screw_nut(screw);
|
||||
screw_length = screw_longer_than(height + thickness + vero_thickness(type) + 2 * washer_thickness(washer) + nut_thickness(nut, true));
|
||||
screw_length = screw_length(screw, height + thickness + vero_thickness(type), 2, nyloc = true);
|
||||
|
||||
translate_z(height) {
|
||||
veroboard(type);
|
||||
|
Reference in New Issue
Block a user