1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-03 20:32:35 +02:00

Compare commits

...

16 Commits

Author SHA1 Message Date
Chris Palmer
dc3905b284 Removed redundant longer = true with nyloc = true. 2021-01-18 10:33:17 +00:00
Chris Palmer
7f9122ae66 Added --hardwarnings to openscad.py 2021-01-15 18:13:20 +00:00
Chris Palmer
93b260b7b9 Added screw_length() to calculuate screw lengths includin washers, inserts and nuts. 2021-01-15 18:12:37 +00:00
Chris Palmer
c33876530e Merge branch 'martinbudden-green_terminals' 2021-01-13 21:31:25 +00:00
Chris Palmer
8fea8f437b Updated images and readme for green terminals. 2021-01-13 21:31:14 +00:00
Chris Palmer
bc3ef607af Merge branch 'green_terminals' of https://github.com/martinbudden/NopSCADlib into martinbudden-green_terminals 2021-01-13 21:17:08 +00:00
Chris Palmer
6bcdc24cd3 Updated readme an images for ESP-01. 2021-01-13 21:12:29 +00:00
Chris Palmer
b8b4232882 Merge branch 'ESP8266' of https://github.com/martinbudden/NopSCADlib 2021-01-13 20:21:43 +00:00
Chris Palmer
0394d9981f Merge branch 'martinbudden-tft35' 2021-01-13 20:20:24 +00:00
Chris Palmer
e4e7096e3c Merge branch 'martinbudden-ESP8266' 2021-01-13 20:18:13 +00:00
Chris Palmer
d71bb4bdfa Remove commented out code. 2021-01-13 20:17:43 +00:00
Chris Palmer
89c3767f21 Update image. 2021-01-13 20:09:16 +00:00
Martin Budden
c837de721d Renamed ESP8266 to ESP_01 and rotated. 2021-01-13 18:52:14 +00:00
Martin Budden
f8c87bd8e3 Added ESP8266. 2021-01-13 17:22:46 +00:00
Martin Budden
ef58fe5818 Minor corrections to positions on BigTreeTech_TFT35v3_0_PCB. 2021-01-13 15:57:27 +00:00
Martin Budden
9c0c0c0acf Added green terminals gt_5x11 and gt_5x17. 2021-01-13 15:51:41 +00:00
37 changed files with 149 additions and 130 deletions

View File

@@ -182,7 +182,7 @@ This is achieved by having a pair of modules: -
}
module handle_fastened_assembly(thickness) { //! Assembly with fasteners in place
screw_length = screw_longer_than(thickness + insert_length(insert) + 2 * washer_thickness(screw_washer(screw)));
screw_length = screw_length(screw, thickness, 2, true, longer = true);
handle_assembly();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 868 KiB

After

Width:  |  Height:  |  Size: 870 KiB

View File

@@ -75,9 +75,9 @@ function box_corner_overlap(type) = box_wall(type);
function box_corner_rad(type) = box_sheet_slot(type) - sheet_slot_clearance / 2 + box_corner_gap(type) + box_corner_overlap(type);
function box_sheet_r(type) = box_corner_rad(type) - box_sheet_slot(type) - box_corner_overlap(type);
function box_screw_length(type, top) = screw_longer_than(2 * washer_thickness(box_washer(type))
+ sheet_thickness(top ? box_top_sheet(type) : box_base_sheet(type))
+ box_corner_gap(type) + box_profile_overlap(type) + box_insert_l(type) - 1);
function box_screw_length(type, top) =
let(s = top ? box_top_sheet(type) : box_base_sheet(type))
screw_length(box_screw(type), sheet_thickness(s) + box_corner_gap(type) + box_profile_overlap(type) - 1, washers = 2, insert = true, longer = true);
function box_wall_clearance(type) = box_sheet_slot(type) / 2 - sheet_thickness(box_sheets(type)) / 2;
function box_margin(type) = box_profile_overlap(type) + box_corner_gap(type); //! How much the bezel intrudes on the specified height

View File

@@ -68,7 +68,7 @@ function cam_screw_length(cam) = let(
front = cam_front_size(cam),
screw = pcb_screw(camera_pcb(cam)),
nut = screw_nut(screw)
) screw_longer_than(front.z + washer_thickness(screw_washer(screw)) - nut_trap_depth(nut) + nut_thickness(nut, true));
) screw_length(screw, front.z - nut_trap_depth(nut), 1, nyloc = true);
function hinge_z(cam) = cam_screw_length(cam) - hinge_r;
@@ -344,9 +344,8 @@ module camera_fastened_assembly(cam, thickness, angle = 0) {
camera_bracket_position(cam)
camera_bracket_screw_positions(cam) {
nut = screw_nut(bracket_screw);
washer = screw_washer(bracket_screw);
t = bracket_thickness(cam);
screw_length = screw_longer_than(thickness + t + nut_thickness(nut, true) + 2 * washer_thickness(washer));
screw_length = screw_length(bracket_screw, thickness + t, 2, nyloc = true);
vflip()
translate_z(thickness)
screw_and_washer(bracket_screw, screw_length);

View File

@@ -133,12 +133,10 @@ assembly(str("corner_block_M", 20 * screw_radius(screw))) {
module fastened_corner_block_assembly(thickness, screw = def_screw, thickness_below = undef, thickness_side2 = undef, name = false, show_block = true, star_washers = true) { //! Printed block with all fasteners
thickness2 = !is_undef(thickness_below) ? thickness_below : thickness;
thickness3 = !is_undef(thickness_side2) ? thickness_side2 : thickness;
washer = screw_washer(screw);
insert = screw_insert(screw);
function screw_length(t) = screw_shorter_than((star_washers ? 2 : 1) * washer_thickness(washer) + t + insert_length(insert) + overshoot);
screw_length = screw_length(thickness);
screw_length2 = screw_length(thickness2);
screw_length3 = screw_length(thickness3);
function screw_len(t) = screw_length(screw, t + overshoot, star_washers ? 2 : 1, true);
screw_length = screw_len(thickness);
screw_length2 = screw_len(thickness2);
screw_length3 = screw_len(thickness3);
if(show_block)
corner_block_assembly(screw, name) children();

View File

@@ -136,8 +136,7 @@ module door_hinge_assembly(top, door_thickness = 6) { //! The moving assembly th
dir = top ? -1 : 1;
pin_x = door_hinge_pin_x();
pin_y = door_hinge_pin_y();
washer = screw_washer(screw);
screw_length = screw_shorter_than(thickness + door_thickness + washer_thickness(washer));
screw_length = screw_length(screw, thickness + door_thickness, 1);
translate([0, pin_y - (thickness + door_thickness / 2), dir * width / 2]) {
rotate([90, 0, 180])
@@ -148,20 +147,20 @@ module door_hinge_assembly(top, door_thickness = 6) { //! The moving assembly th
screw_and_washer(screw, screw_length);
}
translate([pin_x, pin_y, top ? 0 : -washer_thickness(screw_washer(pin_screw))])
washer(screw_washer(pin_screw));
washer = screw_washer(pin_screw);
wt = washer_thickness(washer);
translate([pin_x, pin_y, top ? 0 : -wt])
washer(washer);
translate([pin_x, pin_y, top ? washer_thickness(screw_washer(pin_screw)) + stat_width : width])
screw_and_washer(pin_screw, screw_longer_than(2 * washer_thickness(screw_washer(pin_screw)) + width + stat_width));
translate([pin_x, pin_y, top ? wt + stat_width : width])
screw_and_washer(pin_screw, screw_length(pin_screw, width + stat_width, 2, longer = true));
}
module door_hinge_static_assembly(top, sheet_thickness = 3) { //! The stationary assembly
dir = top ? -1 : 1;
pin_x = door_hinge_pin_x();
stat_washer = screw_washer(stat_screw);
stat_nut = screw_nut(stat_screw);
stat_screw_length = screw_longer_than(thickness + sheet_thickness + 2 * washer_thickness(stat_washer) + nut_thickness(stat_nut, true));
stat_screw_length = screw_length(stat_screw, thickness + sheet_thickness, 2, nyloc = true);
translate([pin_x, 0, -dir * (stat_width / 2 + washer_thickness(screw_washer(pin_screw)))])
rotate([90, 0, 0]) {
@@ -169,9 +168,10 @@ module door_hinge_static_assembly(top, sheet_thickness = 3) { //! The stationary
door_hinge_stat_hole_positions() {
screw_and_washer(stat_screw, stat_screw_length);
translate_z(-thickness - sheet_thickness)
vflip()
nut_and_washer(stat_nut, true);
nut_and_washer(screw_nut(stat_screw), true);
}
}
}

View File

@@ -61,7 +61,7 @@ module door_latch_assembly(sheet_thickness = 3) { //! The assembly for a specifi
washer = screw_washer(screw);
nut = screw_nut(screw);
screw_length = screw_longer_than(height - nut_trap_depth + sheet_thickness + 2 * washer_thickness(washer) + nut_thickness(nut, true));
screw_length = screw_length(screw, height - nut_trap_depth + sheet_thickness, 2, nyloc = true);
translate([0, -height - washer_thickness(washer)])
rotate([-90, 0, 0]) {

View File

@@ -122,9 +122,7 @@ assembly(str("fixing_block_M", 20 * screw_radius(screw))) {
module fastened_fixing_block_assembly(thickness, screw = def_screw, screw2 = undef, thickness2 = undef, show_block = true, star_washers = true) { //! Assembly with fasteners in place
module fb_screw(screw, thickness) {
washer = screw_washer(screw);
insert = screw_insert(screw);
screw_length = screw_longer_than((star_washers ? 2 : 1) * washer_thickness(washer) + thickness + insert_length(insert));
screw_length = screw_length(screw, thickness, star_washers ? 2 : 1, true, longer = true);
if(thickness)
translate_z(thickness)

View File

@@ -155,9 +155,7 @@ module hinge_fastened_assembly(type, thickness1, thickness2, angle, show_hinge =
hinge_assembly(type, angle);
screw = hinge_screw(type);
washer_t = 2 * washer_thickness(screw_washer(screw));
nut = screw_nut(screw);
nut_t = nut_thickness(nut, true);
t = hinge_thickness(type);
kr = hinge_knuckle_dia(type) / 2;
@@ -165,7 +163,7 @@ module hinge_fastened_assembly(type, thickness1, thickness2, angle, show_hinge =
if(thickness)
hinge_screw_positions(type) {
translate_z(t)
screw_and_washer(screw, screw_longer_than(t + thickness + washer_t + nut_t));
screw_and_washer(screw, screw_length(screw, t + thickness, 2, nyloc = true));
translate_z(-thickness)
vflip()

View File

@@ -69,10 +69,9 @@ module foot(type = foot) { //! Generate STL
module foot_assembly(t = 0, type = foot, flip = false) { //! Assembly with fasteners in place for specified sheet thickness
screw = foot_screw(type);
washer = screw_washer(screw);
nut = screw_nut(screw);
squeeze = 0.5;
screw_length = screw_longer_than(foot_thickness(type) + t + 2 * washer_thickness(washer) + nut_thickness(nut, true) - squeeze);
screw_length = screw_length(screw, foot_thickness(type) + t - squeeze, 2, nyloc = true);
vflip() explode(15, true) {
stl_colour(pp4_colour) foot(type);
@@ -146,9 +145,7 @@ assembly("insert_foot") {
module fastened_insert_foot_assembly(t = 3, type = insert_foot) { //! Assembly with fasteners in place for specified sheet thickness
screw = foot_screw(type);
washer = screw_washer(screw);
insert = screw_insert(screw);
screw_length = screw_shorter_than(insert_length(insert) + t + 2 * washer_thickness(washer));
screw_length = screw_length(screw, t, 2, insert = true);
explode(-10) insert_foot_assembly(type);

View File

@@ -91,7 +91,7 @@ assembly("handle") {
}
module handle_fastened_assembly(thickness) { //! Assembly with fasteners in place
screw_length = screw_longer_than(thickness + insert_length(insert) + 2 * washer_thickness(screw_washer(screw)));
screw_length = screw_length(screw, thickness, 2, true, longer = true);
handle_assembly();

View File

@@ -103,10 +103,9 @@ module pcb_mount_assembly(pcb, thickness, height = 5) { //! A PCB mount assembly
stl_colour(pp1_colour) pcb_mount(pcb, washers = false);
washer = screw_washer(screw);
nut = screw_nut(screw);
t = pcb_thickness(pcb);
screw_length = screw_longer_than(height + t + washer_thickness + thickness + washer_thickness(washer) + nut_thickness(nut, true));
screw_length = screw_length(screw, height + t + washer_thickness + thickness, 1, nyloc = true);
pcb_mount_screw_positions(pcb) {
translate_z(height + t) {

View File

@@ -65,10 +65,8 @@ function pbox_insert(type) = screw_insert(pbox_screw(type)); //! The insert for
function pbox_washer(type) = screw_washer(pbox_screw(type)); //! The washer for the base screws
function pbox_screw_length(type, panel_thickness = 0) = //! Length of the base screw
let(foot = pbox_foot(type))
screw_shorter_than(pbox_base(type) + washer_thickness(pbox_washer(type))
+ insert_length(pbox_insert(type))
+ (foot ? foot_thickness(foot) : panel_thickness));
let(foot = pbox_foot(type), screw = pbox_screw(type))
screw_length(screw, pbox_base(type) + (foot ? foot_thickness(foot) : panel_thickness), 1, true);
function pbox_mid_offset(type) = pbox_ridges(type).y + pbox_wall(type) / 2; // Offset to wall midpoint

View File

@@ -156,8 +156,7 @@ assembly(str("PSU_shroud_", name)) {
module psu_shroud_fastened_assembly(type, cable_d, thickness, name, cables = 1) //! Assembly with screws in place
{
washer = screw_washer(screw);
screw_length = screw_shorter_than(2 * washer_thickness(washer) + thickness + insert_length(insert) + counter_bore);
screw_length = screw_length(screw,thickness + counter_bore, 2, true);
psu_shroud_assembly(type, cable_d, name, cables);

View File

@@ -101,8 +101,7 @@ module ribbon_clamp_fastened_assembly(ways, thickness, screw = screw) { //! Clam
vitamin(str(": Tape self amalgamating silicone ",tape_l," x 25mm"));
washer = screw_washer(screw);
screw_length = screw_shorter_than(2 * washer_thickness(washer) + thickness + ribbon_clamp_screw_depth(screw));
screw_length = screw_length(screw, thickness + ribbon_clamp_screw_depth(screw), 2);
ribbon_clamp_assembly(ways, screw);

View File

@@ -105,8 +105,7 @@ module socket_box_MKLOGIC_assembly() socket_box_assembly(MKLOGIC);
module socket_box_fastened_assembly(type, thickness) { //! The socket and backbox on each side of the specified panel thickness
screw = mains_socket_screw(type);
insert = screw_insert(screw);
screw_length = screw_longer_than(mains_socket_height(type) + thickness + insert_length(insert));
screw_length = screw_length(screw, mains_socket_height(type) + thickness, 0, true, longer = true);
explode(-50)
translate_z(-height - thickness)

View File

@@ -119,8 +119,7 @@ assembly(str("SSR_shroud_", name)) {
module ssr_shroud_fastened_assembly(type, cable_d, thickness, name) //! Assembly with screws in place
{
washer = screw_washer(screw);
screw_length = screw_shorter_than(2 * washer_thickness(washer) + thickness + insert_length(insert) + counter_bore);
screw_length = screw_length(screw, thickness + counter_bore, 2, true);
ssr_shroud_assembly(type, cable_d, name);

View File

@@ -172,11 +172,9 @@ assembly("strap_end") {
module strap_assembly(length, type = strap) { //! Assembly with screws in place
screw = strap_screw(type);
washer = screw_washer(screw);
penny = penny_washer(washer);
insert = strap_insert(type);
penny = penny_washer(screw_washer(screw));
screw_length = screw_shorter_than(washer_thickness(washer) + washer_thickness(penny) + insert_length(insert) + panel_clearance + counterbore);
screw_length = screw_length(screw, washer_thickness(penny) + panel_clearance + counterbore, 1, true);
stl_colour(pp4_colour) strap(length, type);

View File

@@ -1048,10 +1048,12 @@ Parametric green terminal blocks
### Vitamins
| Qty | Module call | BOM entry |
| ---:|:--- |:---|
| 1 | `green_terminal(gt_6p35, 2)` | Terminal block 2 way 0.25" |
| 1 | `green_terminal(gt_5p08, 3)` | Terminal block 3 way 0.2" |
| 1 | `green_terminal(gt_3p5, 4)` | Terminal block 4 way 3.5mm |
| 1 | `green_terminal(gt_2p54, 5)` | Terminal block 5 way 0.1" |
| 1 | `green_terminal(gt_5x17, 2)` | Terminal block 2 way 5mm |
| 1 | `green_terminal(gt_5x11, 3)` | Terminal block 3 way 5mm |
| 1 | `green_terminal(gt_6p35, 4)` | Terminal block 4 way 0.25" |
| 1 | `green_terminal(gt_5p08, 5)` | Terminal block 5 way 0.2" |
| 1 | `green_terminal(gt_3p5, 6)` | Terminal block 6 way 3.5mm |
| 1 | `green_terminal(gt_2p54, 7)` | Terminal block 7 way 0.1" |
<a href="#top">Top</a>
@@ -2308,6 +2310,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 1 | `pcb(DuetE)` | Duet 2 Ethernet electronics |
| 1 | `pcb(Duex2)` | Duex2 expansion board |
| 1 | `pcb(Duex5)` | Duex5 expansion board |
| 1 | `pcb(ESP-01)` | ESP-01 |
| 1 | `pcb(EnviroPlus)` | Enviro+ |
| 1 | `pcb(ExtruderPCB)` | Extruder connection PCB |
| 1 | `pcb(Keyes5p1)` | Keyes5.1 Arduino Uno expansion board |
@@ -2337,8 +2340,8 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 2 | `screw(M2p5_cap_screw, 20)` | Screw M2.5 cap x 20mm |
| 8 | `screw(M2p5_cap_screw, 25)` | Screw M2.5 cap x 25mm |
| 8 | `screw(M2p5_cap_screw, 30)` | Screw M2.5 cap x 30mm |
| 4 | `screw(M2p5_pan_screw, 20)` | Screw M2.5 pan x 20mm |
| 12 | `screw(M2p5_pan_screw, 25)` | Screw M2.5 pan x 25mm |
| 4 | `screw(M2p5_pan_screw, 30)` | Screw M2.5 pan x 30mm |
| 4 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
| 8 | `screw(M3_cap_screw, 30)` | Screw M3 cap x 30mm |
| 12 | `screw(M4_cap_screw, 35)` | Screw M4 cap x 35mm |
@@ -2359,21 +2362,21 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 4 | pcb_spacer2070.stl |
| 4 | pcb_spacer2080.stl |
| 4 | pcb_spacer2090.stl |
| 4 | pcb_spacer25110.stl |
| 4 | pcb_spacer25120.stl |
| 4 | pcb_spacer25130.stl |
| 4 | pcb_spacer25140_2.stl |
| 4 | pcb_spacer25140.stl |
| 4 | pcb_spacer25150_2.stl |
| 4 | pcb_spacer25160_2.stl |
| 4 | pcb_spacer25190.stl |
| 4 | pcb_spacer25170_2.stl |
| 4 | pcb_spacer25200.stl |
| 2 | pcb_spacer2580.stl |
| 4 | pcb_spacer30170.stl |
| 4 | pcb_spacer25210.stl |
| 2 | pcb_spacer2590.stl |
| 4 | pcb_spacer30180.stl |
| 4 | pcb_spacer30190.stl |
| 4 | pcb_spacer3050.stl |
| 4 | pcb_spacer40210.stl |
| 4 | pcb_spacer40220.stl |
| 4 | pcb_spacer40230.stl |
| 4 | pcb_spacer40240.stl |
<a href="#top">Top</a>
@@ -2899,10 +2902,11 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|:--- |:--- |
| `screw_boss_diameter(type)` | Boss big enough for nut trap and washer |
| `screw_head_depth(type, d = 0)` | How far a counter sink head will go into a straight hole diameter d |
| `screw_longer_than(x)` | Returns shortest screw length longer or equal to x |
| `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` |
| `screw_longer_than(x)` | Returns the length of the shortest screw length longer or equal to x |
| `screw_nut_radius(type)` | Radius of matching nut |
| `screw_polysink_r(type, z)` | Countersink hole profile corrected for rounded staircase extrusions. |
| `screw_shorter_than(x)` | Returns longest screw length shorter than or equal to x |
| `screw_shorter_than(x)` | Returns the length of the longest screw shorter than or equal to x |
### Modules
| Module | Description |

View File

@@ -249,7 +249,7 @@ def boms(target = None, assembly = None):
#
# Run openscad
#
openscad.run("-D", "$bom=2", "-D", "$preview=true", "--hardwarnings", "-o", "openscad.echo", "-d", bom_dir + "/bom.deps", bom_maker_name)
openscad.run("-D", "$bom=2", "-D", "$preview=true", "-o", "openscad.echo", "-d", bom_dir + "/bom.deps", bom_maker_name)
os.remove(bom_maker_name)
print("Generating bom ...", end=" ")

View File

@@ -25,7 +25,7 @@ from __future__ import print_function
import subprocess, sys
def run_list(args, silent = False, verbose = False):
cmd = ["openscad"] + args
cmd = ["openscad", "--hardwarnings"] + args
if not silent:
for arg in cmd:
print(arg, end=" ")

View File

@@ -30,7 +30,6 @@ sheet = PMMA3;
height = 10;
insert = screw_insert(screw);
washer = screw_washer(screw);
module widget(thickness) {
vitamin(str("widget(", thickness, "): Rivit like thing for ", thickness, "mm sheets"));
@@ -92,7 +91,7 @@ assembly("wigdit") {
translate_z(height) {
translate_z(sheet_thickness(sheet))
screw_and_washer(screw, screw_longer_than(sheet_thickness(sheet) + 2 * washer_thickness(washer) + 3), true);
screw_and_washer(screw, screw_length(screw, sheet_thickness(sheet) + 3, 2, longer = true), true);
explode(5)
translate_z(sheet_thickness(sheet) / 2 + eps)

View File

@@ -24,16 +24,13 @@ include <../vitamins/blowers.scad>
module blowers()
layout([for(b = blowers) blower_width(b)], 10, true) let(b = blowers[$i]){
screw = blower_screw(b);
washer = screw_washer(screw);
h = blower_lug(b);
blower(b);
blower_hole_positions(b)
translate_z(h)
screw_and_washer(screw, screw_longer_than(h + washer_thickness(washer) + 5));
screw_and_washer(screw, screw_length(screw, h + 5, 1, longer = true));
}
if($preview)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

@@ -73,39 +73,54 @@ SSD1963_4p3 = ["SSD1963_4p3", "LCD display SSD1963 4.3\"", 105.5, 67.2, 3.4, SSD
[[0, -34.5], [12, -31.5]],
];
/* Dimensions taken from:
https://github.com/bigtreetech/BIGTREETECH-TFT35-V3.0/blob/master/Hardware/TFT35%20V3.0-SIZE-TOP.pdf
and
https://github.com/bigtreetech/BIGTREETECH-TFT35-V3.0/blob/master/Hardware/TFT35%20V3.0-SIZE-BOT.pdf
*/
BigTreeTech_TFT35v3_0_PCB = ["", "",
110, 55.77, 1.6, 0, 3, 0, "green", false,
[ [-3.12, 3.17], [-3.12, -3.17], [3.12, -3.17], [3.12, 3.17] ],
[
[ 10, 7.5, 0, "-button_6mm" ],
[ 9, 43, 0, "-buzzer", 5, 9 ],
[ 9, 27, 0, "-potentiometer" ],
[ 102,28.82, 0, "uSD", [26.5, 16, 3] ],
[16.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[36.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[56.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[82.5, 4, 0, "jst_xh", 5 ],
[26.5, 52.8, 180, "jst_xh", 2 ],
[39.5, 52.8, 180, "jst_xh", 3 ],
[52.5, 52.8, 180, "jst_xh", 3 ],
[65.5, 52.8, 180, "jst_xh", 3 ],
[78.5, 52.8, 180, "jst_xh", 3 ],
[94.5, 52.8, 180, "jst_xh", 5 ],
[ 8, 43, 180, "usb_A" ],
[ 97, 4, 0, "chip", 9, 3.5, 1, grey(20) ],
// ESP-8266
[ 23, 28, 90, "2p54socket", 4, 2 ],
110, 55.77, 1.6, // size
0, // corner radius
3, // mounting hole diameter
0, // pad around mounting hole
"green", // color
false, // true if parts should be separate BOM items
[ // hole positions
[-3.12, 3.17], [-3.12, -3.17], [3.12, -3.17], [3.12, 3.17]
],
[]
[ // components
[ 9, -( 8.46 + 17.45)/2, 0, "-buzzer", 5, 9 ],
[ 9, -(23.76 + 34.94)/2, 0, "-potentiometer" ],
[ (6.84 + 12.85)/2, -(45.73 + 51.73)/2, 0, "-button_6mm" ],
[ 102, (15.57 + 42.07)/2, 0, "uSD", [26.5, 16, 3] ],
[ 8, -( 6.76 + 18.76)/2, 180, "usb_A" ],
[ 23, (23.32 + 33.64)/2, 90, "2p54socket", 4, 2 ], // ESP-8266
[ 16.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[ 36.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[ 56.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[ 82.5, 4, 0, "jst_xh", 5 ],
[ 26.5, 52.8, 180, "jst_xh", 2 ],
[ 39.5, 52.8, 180, "jst_xh", 3 ],
[ 52.5, 52.8, 180, "jst_xh", 3 ],
[ 65.5, 52.8, 180, "jst_xh", 3 ],
[ 78.5, 52.8, 180, "jst_xh", 3 ],
[ 94.5, 52.8, 180, "jst_xh", 5 ],
[ 97, 4, 0, "chip", 9, 3.5, 1, grey(20) ],
],
[] // accessories
];
BigTreeTech_TFT35v3_0 = ["BigTreeTech_TFT35v3_0", "BigTreeTech TFT35 v3.0",
84.5, 54.5, 4, BigTreeTech_TFT35v3_0_PCB,
[-6, 0, 0], // pcb offset
84.5, 54.5, 4, // size
BigTreeTech_TFT35v3_0_PCB, // pcb
[7 - (110 - 84.5)/2, 0, 0], // pcb offset from center
[[-40, -26.5], [41.5, 26.5, 0.5]], // aperture
[], // touch screen
0, // thread length
[], // clearance need for the ts ribbon
[], // touch screen position and size
0, // length that studs protrude from the PCB holes
[], // keep out region for ribbon cable
];

View File

@@ -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) {

View File

@@ -31,7 +31,9 @@ gt_2p54 = ["gt_2p54", 2.54, 6.6, 10, 3, 6, 0.4, 6.4, 1, 1, 0.2, 2,
gt_3p5 = ["gt_3p5", 3.5, 7.3, 8.5, 4, 5, 0.4, 4, 0, 1.35, 0.4, 1.8, 2, 2, 0, 0, 0];
gt_5p08 = ["gt_5p08", 5.08, 7.9, 10, 5.0, 7, 0.0, 6.8, 1.45, 1.95, 0.5, 4.0, 5.4, 0.5, 0, 0, 0];
gt_6p35 = ["gt_6p35", 6.35, 12.6, 17.4, 6.8, 12, 0.4, 11, 2, 2.7, 0.8, 3.4, 4.2, 2, 1.8, 1.1, 21.4];
gt_5x11 = ["gt_5x11", 5, 8, 11, 5, 7, 0.4, 7, 1.5, 1.5, 1, 2.5, 6, 0, 0, 0, 0];
gt_5x17 = ["gt_5x17", 5, 10, 17, 5, 11, 0.4, 9, 2, 1.5, 1, 3, 6, 0, 0, 0, 0];
green_terminals = [gt_2p54, gt_3p5, gt_5p08, gt_6p35];
green_terminals = [gt_2p54, gt_3p5, gt_5p08, gt_6p35, gt_5x11, gt_5x17];
use <green_terminal.scad>

View File

@@ -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);
}
}

View File

@@ -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()

View File

@@ -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);
}
}
}

View File

@@ -414,8 +414,33 @@ RAMPSEndstop = ["RAMPSEndstop", "RAMPS Endstop Switch",
],
[]];
ESP_01 = [
"ESP-01", "ESP-01",
24.8, 14.6, 1, // size
0, // corner radius
0, // mounting hole diameter
0, // pad around mounting hole
grey(25), // color
false, // true if parts should be separate BOM items
[], // hole positions
[ // components
[ 2.8, -7.25, 0, "-2p54header", 2, 4 ],
[ -14.55, -11.3, 0, "chip", 5.25, 5.25, 2.25, grey(15) ],
[ -14, -5.2, 0, "chip", 4.5, 4.75, 1.1, grey(15) ],
// antenna
for (y = [ 2.8 : 2.3 : 7.4 ]) [ -0.7, -y, 0, "block", 0.7, 1.75, 0.1, gold ],
for (y = [ 4 : 2.3 : 10.6 ]) [ -4.3, -y, 0, "block", 0.7, 1.75, 0.1, gold ],
for (y = [ 3.4 : 2.3 : 10.1 ]) [ -2.5, -y, 0, "block", 4.3, 0.7, 0.1, gold ],
for (y = [ 4.55 : 2.3 : 11.2 ]) [ -2.5, -y, 0, "block", 4.3, 0.7, 0.1, gold ],
pcbs = [MP1584EN, TP4056, MT3608, RAMPSEndstop, ExtruderPCB, PI_IO, ZC_A0591, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, Keyes5p1, PSU12V1A, WD2002SJ, RPI3, RPI4, DuetE, Duex2, Duex5];
[ -0.7, -10.85, 0, "block", 0.7,3.75, 0.1, gold ],
[ -6.6, -5.8, 0, "block", 0.7, 7.5, 0.1, gold ],
[ -4.8, -2.3, 0, "block", 8.8, 0.7, 0.1, gold ],
],
[] // accessories
];
pcbs = [MP1584EN, TP4056, ESP_01, MT3608, RAMPSEndstop, ExtruderPCB, PI_IO, ZC_A0591, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, Keyes5p1, PSU12V1A, WD2002SJ, RPI3, RPI4, DuetE, Duex2, Duex5];
perfboards = [PERF74x51, PERF70x50, PERF60x40, PERF70x30, PERF80x20];

View File

@@ -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)

View File

@@ -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)

View File

@@ -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()

View File

@@ -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);