Merge branch 'sk_brackets_tidy' of https://github.com/martinbudden/NopSCADlib into martinbudden-sk_brackets_tidy

This commit is contained in:
Chris Palmer 2020-02-24 08:38:16 +00:00
commit 0335545334
2 changed files with 39 additions and 26 deletions

View File

@ -22,11 +22,13 @@ use <../utils/layout.scad>
include <../vitamins/sk_brackets.scad> include <../vitamins/sk_brackets.scad>
module sk_brackets() { module sk_brackets() {
part_thickness = 5;
nuts = [undef, M5_nut, M5_sliding_t_nut, M5_sliding_t_nut]; nuts = [undef, M5_nut, M5_sliding_t_nut, M5_sliding_t_nut];
layout([for(s = sk_brackets) 1.5 * sk_size(s)[1]]) layout([for(s = sk_brackets) 1.5 * sk_size(s)[1]])
sk_bracket_assembly(sk_brackets[$i], nut_type = nuts[$i]); sk_bracket_assembly(sk_brackets[$i], part_thickness, nut_type = nuts[$i]);
} }
if($preview) if($preview)
sk_brackets(); let($show_threads = true)
sk_brackets();

View File

@ -36,15 +36,15 @@ function sk_screw_separation(type) = type[9]; //! Separation of screws in the ba
module sk_bracket(type) { //! SK shaft support bracket module sk_bracket(type) { //! SK shaft support bracket
vitamin(str("sk_bracket(", type[0], "): SK", sk_diameter(type), " shaft support bracket")); vitamin(str("sk_bracket(", type[0], "): SK", sk_diameter(type), " shaft support bracket"));
d = type[1]; d = sk_diameter(type);
h = type[2]; h = sk_hole_offset(type);
E = type[3]; E = type[3];
W = type[4]; W = sk_size(type)[0];
L = type[5]; L = sk_size(type)[2];
F = type[6]; F = sk_size(type)[1];
G = type[7]; G = sk_base_height(type);
P = type[8]; P = type[8];
B = type[9]; B = sk_screw_separation(type);
S = type[10]; S = type[10];
bolthole_radius = type[11]; bolthole_radius = type[11];
@ -93,24 +93,35 @@ module sk_bracket(type) { //! SK shaft support bracket
screw(M3_cap_screw, P - screw_head_height(M3_cap_screw) / 2 + eps); screw(M3_cap_screw, P - screw_head_height(M3_cap_screw) / 2 + eps);
} }
module sk_bracket_hole_positions(type) { //! Place children at hole positions
module sk_bracket_assembly(type, screw_length = 16, screw_type = M5_cap_screw, nut_type = undef) { //! Assembly with fasteners in place
sk_bracket(type);
nut_type = is_undef(nut_type) ? screw_nut(screw_type) : nut_type;
for (x = [-sk_screw_separation(type), sk_screw_separation(type)]) for (x = [-sk_screw_separation(type), sk_screw_separation(type)])
translate([x / 2, sk_base_height(type) - sk_hole_offset(type), 0]) translate([x / 2, sk_base_height(type) - sk_hole_offset(type), 0])
rotate([-90, 0, 0]) { rotate([-90, 0, 0])
screw_and_washer(screw_type, screw_length); children();
translate_z(-screw_length + 2 * washer_thickness(screw_washer(screw_type))) }
if(nut_type == M5_sliding_t_nut)
translate_z(nut_thickness(nut_type)) module sk_bracket_assembly(type, part_thickness, screw_type = M5_cap_screw, nut_type = undef) { //! Assembly with fasteners in place
vflip() sk_bracket(type);
sliding_t_nut(nut_type);
else screw_type = is_undef(screw_type) ? scs_screw(type) : screw_type;
nut(nut_type) screw_washer_thickness = washer_thickness(screw_washer(screw_type));
washer(nut_washer(nut_type)); nut_type = is_undef(nut_type) ? screw_nut(screw_type) : nut_type;
} nut_washer_type = nut_washer(nut_type);
nut_washer_thickness = nut_washer_type ? washer_thickness(nut_washer_type) : 0;
nut_offset = sk_base_height(type) + part_thickness + nut_thickness(nut_type) + nut_washer_thickness;
screw_length = screw_longer_than(nut_offset + screw_washer_thickness);
sk_bracket_hole_positions(type) {
screw_and_washer(screw_type, screw_length);
translate_z(-nut_offset)
if(nut_type == M5_sliding_t_nut)
translate_z(nut_thickness(nut_type))
vflip()
sliding_t_nut(nut_type);
else
nut(nut_type)
washer(nut_washer(nut_type));
}
} }