Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
aedccd35b3 | ||
|
98b82873bf | ||
|
aca921d737 | ||
|
018f70ae3c | ||
|
89c4b96525 | ||
|
4e443fc742 | ||
|
f032bb76db | ||
|
c23c3619e4 | ||
|
c16f0bd472 | ||
|
9756845c59 | ||
|
00eeb1b52d | ||
|
80b17a012d | ||
|
9327c7c134 | ||
|
55f7537ba6 | ||
|
bfaa48dc7c | ||
|
a785ae1050 | ||
|
20ee4026f8 | ||
|
80eb5ebc43 | ||
|
d15cf6cf35 | ||
|
2769c3714c | ||
|
185bb8d6a9 | ||
|
eddebc65a2 | ||
|
915ceea296 | ||
|
5a14c55ca5 | ||
|
ca9cc97b2a | ||
|
652c5d1a26 |
21
CHANGELOG.md
@@ -3,6 +3,25 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
### [v21.40.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.40.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.39.0...v21.40.0 "diff with v21.39.0")
|
||||
* 2025-07-01 [`d15cf6c`](https://github.com/nophead/NopSCADlib/commit/d15cf6cf35cbbd790525341c461e168eda9f3964 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2025-06-28 [`ca9cc97`](https://github.com/nophead/NopSCADlib/commit/ca9cc97b2a26324bef2b4683bef82eaceee1ffe9 "show commit") [E.F.](# "Elliot Foster") Makerbeam work in progress
|
||||
|
||||
### [v21.39.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.39.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.38.1...v21.39.0 "diff with v21.38.1")
|
||||
* 2025-07-01 [`915ceea`](https://github.com/nophead/NopSCADlib/commit/915ceea296aa54e8432c98ac01d527d214740953 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2025-06-28 [`5a14c55`](https://github.com/nophead/NopSCADlib/commit/5a14c55ca5fc064c0ca04f1f4058bac25f2a65be "show commit") [E.F.](# "Elliot Foster") Add the Mellow Fly D5 PCB
|
||||
|
||||
#### [v21.38.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.38.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.38.0...v21.38.1 "diff with v21.38.0")
|
||||
* 2025-05-16 [`9c5014b`](https://github.com/nophead/NopSCADlib/commit/9c5014b73d51d5071259fb7df814b8a62016d214 "show commit") [C.P.](# "Chris Palmer") Updated examples.
|
||||
|
||||
* 2025-05-11 [`5c289bb`](https://github.com/nophead/NopSCADlib/commit/5c289bb7f566f3eebd8ad061645abb6dddb6ef97 "show commit") [P.](# "pcremades") `[Fix]` Fix route to svgs
|
||||
|
||||
* 2025-05-09 [`3211fe1`](https://github.com/nophead/NopSCADlib/commit/3211fe1f19f8d2a9ea090c8232f65ddad379cd26 "show commit") [P.](# "pcremades") `[Feature]` Add link to `DXFs/SVGs` files in documentation
|
||||
|
||||
* 2025-04-15 [`99ff256`](https://github.com/nophead/NopSCADlib/commit/99ff25684756ccf1ec86fd8538a03172e6ce62e9 "show commit") [C.P.](# "Chris Palmer") Fixed example link.
|
||||
|
||||
### [v21.38.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.38.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.37.1...v21.38.0 "diff with v21.37.1")
|
||||
* 2025-04-15 [`bd94182`](https://github.com/nophead/NopSCADlib/commit/bd94182ff1ca85df7b667fc6985defb779846252 "show commit") [C.P.](# "Chris Palmer") Added simple Gridfinity generator and examples.
|
||||
|
||||
@@ -22,6 +41,8 @@ named parameters after the first named one was used.
|
||||
Moved `I2C_LCD_Backpack` from `tiny_pcbs` to pcbs to prevent connector clash.
|
||||
Updated images and readme.
|
||||
|
||||
* 2025-04-22 [`917f404`](https://github.com/nophead/NopSCADlib/commit/917f404c591350d8b1821e9cc6422c9bdbf24b22 "show commit") [P.](# "pcremades") `[Feature]` Add link to STL files in documentation
|
||||
|
||||
* 2025-04-11 [`a9b501a`](https://github.com/nophead/NopSCADlib/commit/a9b501a2d2ce242c181c2cd5f5d1f86ba7150eec "show commit") [P.](# "pcremades") Added a 1602 LCD with I2C module
|
||||
|
||||
* 2025-04-11 [`126343d`](https://github.com/nophead/NopSCADlib/commit/126343d5af75a2aa458db112305a62b953e23694 "show commit") [P.](# "pcremades") Added a I2C TWI SPI Serial Interface for 1602 LCD
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
@@ -473,7 +473,7 @@ translate([x3 + 10, hot_ends_y])
|
||||
translate([x2, panel_meters_y])
|
||||
panel_meters();
|
||||
|
||||
translate([x2, extrusions_y])
|
||||
translate([x2 - 15, extrusions_y])
|
||||
extrusions();
|
||||
|
||||
translate([x2, box_sections_y])
|
||||
|
71
readme.md
@@ -1128,6 +1128,19 @@ Brackets for joining extrusions at a corner.
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_corner_bracket_3D_inner_height(type)` | The depth offset of the dip in the cuboid |
|
||||
| `extrusion_corner_bracket_3D_inner_side_length(type)` | The length of the dip in the cuboid sides |
|
||||
| `extrusion_corner_bracket_3D_nut_dia(type)` | The width of bottom part of the nut |
|
||||
| `extrusion_corner_bracket_3D_nut_nyloc_thickness(type)` | The total thickness of the nut |
|
||||
| `extrusion_corner_bracket_3D_nut_screw(type)` | The screw (most likely Mx_grub_screw from <NopSCADlib/vitamins/screws.scad>) |
|
||||
| `extrusion_corner_bracket_3D_nut_screws_hor(type)` | The positions of the screw holes on the horizontal arms, expressed in %/100 of the nut arm |
|
||||
| `extrusion_corner_bracket_3D_nut_screws_ver(type)` | The positions of the screw holes on the vertical arms, expressed in %/100 of the nut arm |
|
||||
| `extrusion_corner_bracket_3D_nut_sx(type)` | The length of the nuts |
|
||||
| `extrusion_corner_bracket_3D_nut_thickness(type)` | The thickness of the top part of the nut |
|
||||
| `extrusion_corner_bracket_3D_nut_ty1(type)` | The total width of the nut |
|
||||
| `extrusion_corner_bracket_3D_nut_ty2(type)` | The width of the top edge of the nut |
|
||||
| `extrusion_corner_bracket_3D_outer_height(type)` | The height of the cuboid |
|
||||
| `extrusion_corner_bracket_3D_outer_side_length(type)` | The length of the base cuboid sides |
|
||||
| `extrusion_corner_bracket_base_thickness(type)` | Thickness of base of bracket |
|
||||
| `extrusion_corner_bracket_extrusion(type)` | Default extrusion this bracket is for |
|
||||
| `extrusion_corner_bracket_hole_offset(type)` | Hole offset from corner |
|
||||
@@ -1139,12 +1152,20 @@ Brackets for joining extrusions at a corner.
|
||||
| `extrusion_inner_corner_bracket_size(type)` | Size of inner bracket |
|
||||
| `extrusion_inner_corner_bracket_tnut(type)` | The sliding t-nut it is based on |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_corner_bracket_3D_get_x_offset(type)` | helper function to position the x beam |
|
||||
| `extrusion_corner_bracket_3D_get_x_rot(type)` | helper function to rotate the y beam |
|
||||
| `extrusion_corner_bracket_3D_get_y_offset(type)` | helper function to position the y beam |
|
||||
| `extrusion_corner_bracket_3D_get_y_rot(type)` | helper function to rotate the y beam |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_corner_bracket(type)` | Corner bracket for extrusion |
|
||||
| `extrusion_corner_bracket_3D(type, grub_screws = true)` | draw the specified extrusion_corner_bracket_3D |
|
||||
| `extrusion_corner_bracket_assembly(type, part_thickness = undef, screw_type = undef, nut_type = undef, max_screw_depth = undef, extrusion = undef)` | Assembly with fasteners in place |
|
||||
| `extrusion_corner_bracket_hole_positions(type)` | Place children at hole positions |
|
||||
| `extrusion_inner_corner_bracket(type, grub_screws = true, backwards = false, extrusion = undef)` | Inner corner bracket for extrusion |
|
||||
|
||||

|
||||
@@ -1152,21 +1173,30 @@ Brackets for joining extrusions at a corner.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 3 | `extrusion(E2020, 40, cornerHole = true)` | Extrusion E2020 x 40mm |
|
||||
| 2 | `extrusion(E2020t, 20.5)` | Extrusion E2020t x 20.5mm |
|
||||
| 1 | `extrusion(E2020t, 28)` | Extrusion E2020t x 28mm |
|
||||
| 2 | `extrusion(E2020t, 39.5)` | Extrusion E2020t x 39.5mm |
|
||||
| 1 | `extrusion(E2020t, 48)` | Extrusion E2020t x 48mm |
|
||||
| 3 | `extrusion(E3030, 40, cornerHole = true)` | Extrusion E3030 x 40mm |
|
||||
| 3 | `extrusion(E4040, 40, cornerHole = true)` | Extrusion E4040 x 40mm |
|
||||
| 1 | `extrusion(E4040t, 27.4, cornerHole = true)` | Extrusion E4040t x 27.4mm |
|
||||
| 1 | `extrusion(E4040t, 40, cornerHole = true)` | Extrusion E4040t x 40mm |
|
||||
| 1 | `extrusion(E4040t, 60.4, cornerHole = true)` | Extrusion E4040t x 60.4mm |
|
||||
| 1 | `extrusion(E4040t, 80, cornerHole = true)` | Extrusion E4040t x 80mm |
|
||||
| 2 | `extrusion_corner_bracket(E20_corner_bracket)` | Extrusion corner bracket 20mm for E2020t |
|
||||
| 2 | `extrusion_corner_bracket(E40_corner_bracket)` | Extrusion corner bracket 35mm for E4040t |
|
||||
| 2 | `extrusion_corner_bracket_3D(extrusion_corner_bracket_3D_2020)` | Extrusion corner bracket 3D mm for E2020 |
|
||||
| 2 | `extrusion_corner_bracket_3D(extrusion_corner_bracket_3D_3030)` | Extrusion corner bracket 3D mm for E3030 |
|
||||
| 2 | `extrusion_corner_bracket_3D(extrusion_corner_bracket_3D_4040)` | Extrusion corner bracket 3D mm for E4040 |
|
||||
| 4 | `extrusion_inner_corner_bracket(E20_inner_corner_bracket)` | Extrusion inner corner bracket for E2020t |
|
||||
| 2 | `extrusion_inner_corner_bracket(E40_inner_corner_bracket)` | Extrusion inner corner bracket for E4040t |
|
||||
| 4 | `sliding_t_nut(M4_sliding_t_nut)` | Nut M4 sliding T |
|
||||
| 4 | `sliding_t_nut(M8_sliding_ball_t_nut)` | Nut M8 sliding T with spring loaded ball |
|
||||
| 4 | `screw(M4_cap_screw, 8)` | Screw M4 cap x 8mm |
|
||||
| 12 | `screw(M4_grub_screw, 5)` | Screw M4 grub x 5mm |
|
||||
| 20 | `screw(M6_grub_screw, 6.2)` | Screw M6 grub x 6.2mm |
|
||||
| 20 | `screw(M6_grub_screw, 9.5)` | Screw M6 grub x 9.5mm |
|
||||
| 4 | `screw(M8_cap_screw, 12)` | Screw M8 cap x 12mm |
|
||||
| 4 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 4 | `washer(M8_washer)` | Washer M8 x 17mm x 1.6mm |
|
||||
@@ -1210,24 +1240,26 @@ Aluminium extrusion.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion(type, length, center = true, cornerHole = false)` | Draw the specified extrusion |
|
||||
| `extrusion(type, length, center = true, cornerHole = true)` | Draw the specified extrusion |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `extrusion(E1515, 80)` | Extrusion E1515 x 80mm |
|
||||
| 1 | `extrusion(E2020, 80)` | Extrusion E2020 x 80mm |
|
||||
| 1 | `extrusion(E2020t, 80)` | Extrusion E2020t x 80mm |
|
||||
| 1 | `extrusion(E2040, 80)` | Extrusion E2040 x 80mm |
|
||||
| 1 | `extrusion(E2060, 80)` | Extrusion E2060 x 80mm |
|
||||
| 1 | `extrusion(E2080, 80)` | Extrusion E2080 x 80mm |
|
||||
| 1 | `extrusion(E1515, 80, cornerHole = true)` | Extrusion E1515 x 80mm |
|
||||
| 1 | `extrusion(E2020, 80, cornerHole = true)` | Extrusion E2020 x 80mm |
|
||||
| 1 | `extrusion(E2020t, 80, cornerHole = true)` | Extrusion E2020t x 80mm |
|
||||
| 1 | `extrusion(E2040, 80, cornerHole = true)` | Extrusion E2040 x 80mm |
|
||||
| 1 | `extrusion(E2060, 80, cornerHole = true)` | Extrusion E2060 x 80mm |
|
||||
| 1 | `extrusion(E2080, 80, cornerHole = true)` | Extrusion E2080 x 80mm |
|
||||
| 1 | `extrusion(E3030, 80, cornerHole = true)` | Extrusion E3030 x 80mm |
|
||||
| 1 | `extrusion(E3060, 80, cornerHole = true)` | Extrusion E3060 x 80mm |
|
||||
| 1 | `extrusion(E4040, 80, cornerHole = true)` | Extrusion E4040 x 80mm |
|
||||
| 1 | `extrusion(E4040t, 80, cornerHole = true)` | Extrusion E4040t x 80mm |
|
||||
| 1 | `extrusion(E4080, 80, cornerHole = true)` | Extrusion E4080 x 80mm |
|
||||
| 1 | `extrusion(Makerbeam, 80, cornerHole = true)` | Extrusion Makerbeam x 80mm |
|
||||
| 1 | `extrusion(MakerbeamXL, 80, cornerHole = true)` | Extrusion MakerbeamXL x 80mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -3007,6 +3039,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pcb(LIPO_fuel_gauge)` | LIPO fuel gauge |
|
||||
| 1 | `pcb(MP1584EN)` | MP1584EN 3A buck converter |
|
||||
| 1 | `pcb(MT3608)` | MT3608 boost converter module |
|
||||
| 1 | `pcb(MELLOW_FLY_D5)` | Mellow FLY D5 |
|
||||
| 1 | `pcb(Melzi)` | Melzi electronics - not shown |
|
||||
| 6 | | Micro SD card |
|
||||
| 1 | | Micro SD card - not shown |
|
||||
@@ -3015,7 +3048,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `molex_254(3)` | Molex KK header 3 way - not shown |
|
||||
| 20 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 38 | `nut(M2p5_nut, nyloc = true)` | Nut M2.5 x 2.2mm nyloc |
|
||||
| 48 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 52 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 8 | `nut(M4_nut, nyloc = true)` | Nut M4 x 3.2mm nyloc |
|
||||
| 1 | `pcb(OPZ2)` | Orange Pi Zero 2 |
|
||||
| 1 | `pcb(PI_IO)` | PI_IO V2 - not shown |
|
||||
@@ -3045,12 +3078,11 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 4 | `screw(M2p5_pan_screw, 20)` | Screw M2.5 pan x 20mm |
|
||||
| 4 | `screw(M2p5_pan_screw, 30)` | Screw M2.5 pan x 30mm |
|
||||
| 4 | `screw(M2p5_pan_screw, 35)` | Screw M2.5 pan x 35mm |
|
||||
| 19 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
|
||||
| 13 | `screw(M3_cap_screw, 20)` | Screw M3 cap x 20mm |
|
||||
| 18 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
|
||||
| 18 | `screw(M3_cap_screw, 20)` | Screw M3 cap x 20mm |
|
||||
| 5 | `screw(M3_cap_screw, 25)` | Screw M3 cap x 25mm |
|
||||
| 11 | `screw(M3_cap_screw, 35)` | Screw M3 cap x 35mm |
|
||||
| 4 | `screw(M4_cap_screw, 20)` | Screw M4 cap x 20mm |
|
||||
| 4 | `screw(M4_cap_screw, 25)` | Screw M4 cap x 25mm |
|
||||
| 8 | `screw(M4_cap_screw, 25)` | Screw M4 cap x 25mm |
|
||||
| 1 | `pcb(XIAO)` | Seeeduino XIAO |
|
||||
| 1 | `pcb(9DOF_stick)` | Sparkfun 9 degrees of freedom IMU |
|
||||
| 1 | `pcb(TP4056)` | TP4056 Li-lon Battery charger module |
|
||||
@@ -3061,7 +3093,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pcb(WD2002SJ)` | WD2002SJ Buck Boost DC-DC converter |
|
||||
| 20 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 38 | `washer(M2p5_washer)` | Washer M2.5 x 5.9mm x 0.5mm |
|
||||
| 48 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 52 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 8 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 1 | `pcb(ZC_A0591)` | ZC-A0591 ULN2003 driver PCB |
|
||||
|
||||
@@ -3089,11 +3121,12 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 4 | pcb_spacer30240.stl |
|
||||
| 3 | pcb_spacer30250.stl |
|
||||
| 10 | pcb_spacer3050.stl |
|
||||
| 9 | pcb_spacer3060.stl |
|
||||
| 8 | pcb_spacer3060.stl |
|
||||
| 9 | pcb_spacer3070.stl |
|
||||
| 4 | pcb_spacer3080.stl |
|
||||
| 5 | pcb_spacer3080.stl |
|
||||
| 4 | pcb_spacer3090.stl |
|
||||
| 4 | pcb_spacer40100.stl |
|
||||
| 4 | pcb_spacer4090.stl |
|
||||
| 4 | pcb_spacer40110.stl |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -4302,8 +4335,8 @@ SK shaft support brackets
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 2 | `extrusion(E2020, 20)` | Extrusion E2020 x 20mm |
|
||||
| 2 | `extrusion(E3030, 20)` | Extrusion E3030 x 20mm |
|
||||
| 2 | `extrusion(E2020, 20, cornerHole = true)` | Extrusion E2020 x 20mm |
|
||||
| 2 | `extrusion(E3030, 20, cornerHole = true)` | Extrusion E3030 x 20mm |
|
||||
| 2 | `sliding_t_nut(M4_hammer_nut)` | Nut M4 hammer |
|
||||
| 2 | `sliding_t_nut(M4_sliding_t_nut)` | Nut M4 sliding T |
|
||||
| 2 | `sliding_t_nut(M5_sliding_t_nut)` | Nut M5 sliding T |
|
||||
|
@@ -24,76 +24,109 @@ include <../vitamins/washers.scad>
|
||||
include <../vitamins/nuts.scad>
|
||||
|
||||
module inner_bracket_test(bracket, backwards = false)
|
||||
rotate([90, 0, 180]) {
|
||||
extrusion = extrusion_inner_corner_bracket_extrusion(bracket);
|
||||
eWidth = extrusion_width(extrusion);
|
||||
size = extrusion_inner_corner_bracket_size(bracket);
|
||||
tnut = extrusion_inner_corner_bracket_tnut(bracket);
|
||||
rotate([90, 0, 180]) {
|
||||
extrusion = extrusion_inner_corner_bracket_extrusion(bracket);
|
||||
eWidth = extrusion_width(extrusion);
|
||||
size = extrusion_inner_corner_bracket_size(bracket);
|
||||
tnut = extrusion_inner_corner_bracket_tnut(bracket);
|
||||
|
||||
translate([backwards ? -eWidth : 0, 0])
|
||||
extrusion_inner_corner_bracket(bracket, backwards = backwards);
|
||||
translate([backwards ? -eWidth : 0, 0])
|
||||
extrusion_inner_corner_bracket(bracket, backwards=backwards);
|
||||
|
||||
translate([-eWidth / 2, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(extrusion, size.x - nut_thickness(tnut) - extrusion_tab_thickness(extrusion), false, cornerHole = eWidth > 20);
|
||||
translate([-eWidth / 2, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(extrusion, size.x - nut_thickness(tnut) - extrusion_tab_thickness(extrusion), false, cornerHole=eWidth > 20);
|
||||
|
||||
translate([-eWidth, -eWidth / 2])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(extrusion, eWidth + size.y - nut_thickness(tnut) - extrusion_tab_thickness(extrusion), false, cornerHole = eWidth > 20);
|
||||
}
|
||||
translate([-eWidth, -eWidth / 2])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(extrusion, eWidth + size.y - nut_thickness(tnut) - extrusion_tab_thickness(extrusion), false, cornerHole=eWidth > 20);
|
||||
}
|
||||
|
||||
|
||||
module bracket_test(bracket)
|
||||
rotate([90, 0, 180]) {
|
||||
extrusion = extrusion_corner_bracket_extrusion(bracket);
|
||||
eWidth = extrusion_width(extrusion);
|
||||
size = extrusion_corner_bracket_size(bracket);
|
||||
|
||||
extrusion_corner_bracket_assembly(bracket);
|
||||
|
||||
translate([-eWidth / 2, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(extrusion, size.y, false, cornerHole = eWidth > 20);
|
||||
|
||||
translate([-eWidth, -eWidth / 2])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(extrusion, eWidth + size.x, false, cornerHole = eWidth > 20);
|
||||
}
|
||||
|
||||
|
||||
module extrusion_brackets(examples = false) {
|
||||
extrusion_inner_corner_bracket(E20_inner_corner_bracket);
|
||||
|
||||
translate([30, 0])
|
||||
extrusion_inner_corner_bracket(E20_inner_corner_bracket, grub_screws = false);
|
||||
|
||||
translate([60, 0])
|
||||
extrusion_corner_bracket_assembly(E20_corner_bracket);
|
||||
|
||||
translate([110, 0])
|
||||
extrusion_inner_corner_bracket(E40_inner_corner_bracket);
|
||||
|
||||
translate([140, 0])
|
||||
extrusion_corner_bracket_assembly(E40_corner_bracket);
|
||||
|
||||
if(examples) {
|
||||
translate([20, 50, 10])
|
||||
inner_bracket_test(E20_inner_corner_bracket, true);
|
||||
|
||||
translate([20, 80, 10])
|
||||
inner_bracket_test(E20_inner_corner_bracket);
|
||||
|
||||
translate([20, 120, 10])
|
||||
bracket_test(E20_corner_bracket);
|
||||
|
||||
translate([100, 70, 10])
|
||||
inner_bracket_test(E40_inner_corner_bracket);
|
||||
|
||||
translate([100, 130, 10])
|
||||
bracket_test(E40_corner_bracket);
|
||||
}
|
||||
module corner_3d_connector(with_profiles = false, corner_connector_type, extrusion_type) {
|
||||
extrusion_length = 40;
|
||||
extrusion_corner_bracket_3D(corner_connector_type, grub_screws=true);
|
||||
if (with_profiles) {
|
||||
translate([0, 0, extrusion_length / 2])
|
||||
extrusion(extrusion_type, extrusion_length);
|
||||
translate(extrusion_corner_bracket_3D_get_y_offset(corner_connector_type))
|
||||
rotate(extrusion_corner_bracket_3D_get_y_rot(corner_connector_type))
|
||||
translate([0, 0, extrusion_length / 2])
|
||||
extrusion(extrusion_type, extrusion_length);
|
||||
translate(extrusion_corner_bracket_3D_get_x_offset(corner_connector_type))
|
||||
rotate(extrusion_corner_bracket_3D_get_x_rot(corner_connector_type))
|
||||
translate([0, 0, extrusion_length / 2])
|
||||
extrusion(extrusion_type, extrusion_length);
|
||||
}
|
||||
}
|
||||
|
||||
if($preview)
|
||||
let($show_threads = true)
|
||||
extrusion_brackets(true);
|
||||
module corner_3d_connectors(with_profiles = false) {
|
||||
corner_3d_connector(with_profiles, extrusion_corner_bracket_3D_2020, E2020);
|
||||
|
||||
translate([80, 0, 0])
|
||||
corner_3d_connector(with_profiles, extrusion_corner_bracket_3D_3030, E3030);
|
||||
|
||||
translate([180, 0, 0])
|
||||
corner_3d_connector(with_profiles, extrusion_corner_bracket_3D_4040, E4040);
|
||||
}
|
||||
|
||||
module bracket_test(bracket)
|
||||
rotate([90, 0, 180]) {
|
||||
extrusion = extrusion_corner_bracket_extrusion(bracket);
|
||||
eWidth = extrusion_width(extrusion);
|
||||
size = extrusion_corner_bracket_size(bracket);
|
||||
|
||||
extrusion_corner_bracket_assembly(bracket);
|
||||
|
||||
translate([-eWidth / 2, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(extrusion, size.y, false, cornerHole=eWidth > 20);
|
||||
|
||||
translate([-eWidth, -eWidth / 2])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(extrusion, eWidth + size.x, false, cornerHole=eWidth > 20);
|
||||
}
|
||||
|
||||
module extrusion_brackets(examples = false) {
|
||||
extrusion_inner_corner_bracket(E20_inner_corner_bracket);
|
||||
|
||||
translate([30, 0])
|
||||
extrusion_inner_corner_bracket(E20_inner_corner_bracket, grub_screws=false);
|
||||
|
||||
translate([60, 0])
|
||||
extrusion_corner_bracket_assembly(E20_corner_bracket);
|
||||
|
||||
translate([110, 0])
|
||||
extrusion_inner_corner_bracket(E40_inner_corner_bracket);
|
||||
|
||||
translate([140, 0])
|
||||
extrusion_corner_bracket_assembly(E40_corner_bracket);
|
||||
|
||||
if (examples) {
|
||||
translate([20, 50, 10])
|
||||
inner_bracket_test(E20_inner_corner_bracket, true);
|
||||
|
||||
translate([20, 80, 10])
|
||||
inner_bracket_test(E20_inner_corner_bracket);
|
||||
|
||||
translate([20, 120, 10])
|
||||
bracket_test(E20_corner_bracket);
|
||||
|
||||
translate([100, 70, 10])
|
||||
inner_bracket_test(E40_inner_corner_bracket);
|
||||
|
||||
translate([100, 130, 10])
|
||||
bracket_test(E40_corner_bracket);
|
||||
}
|
||||
|
||||
//the 3d connectors
|
||||
translate([0, -30, 0])
|
||||
corner_3d_connectors();
|
||||
if (examples) {
|
||||
translate([0, -110, 0])
|
||||
corner_3d_connectors(true);
|
||||
}
|
||||
}
|
||||
|
||||
if ($preview)
|
||||
let ($show_threads = true)
|
||||
extrusion_brackets(true);
|
||||
|
@@ -35,10 +35,10 @@ module extrusions()
|
||||
rotate(90)
|
||||
layout(heights, gap)
|
||||
rotate(-90)
|
||||
extrusion(list[$i], 80, cornerHole = extrusion_width(list[$i]) > 20);
|
||||
extrusion(list[$i], 80);
|
||||
}
|
||||
else
|
||||
extrusion(e, 80, cornerHole = extrusion_width(e) > 20);
|
||||
extrusion(e, 80);
|
||||
|
||||
if ($preview)
|
||||
extrusions();
|
||||
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 49 KiB |
@@ -37,7 +37,7 @@ function extrusion_center_hole(type) = abs(extrusion_center_hole_wd(t
|
||||
function extrusion_corner_hole(type) = abs(extrusion_corner_hole_wd(type)); //! Diameter of corner hole or side if square
|
||||
function extrusion_center_square(type) = abs(extrusion_center_square_wd(type)); //! Size of center square or tube
|
||||
|
||||
module extrusion_cross_section(type, cornerHole) {
|
||||
module extrusion_cross_section(type, cornerHole=true) {
|
||||
width = extrusion_width(type);
|
||||
height = extrusion_height(type);
|
||||
centerSquare = extrusion_center_square(type);
|
||||
@@ -54,7 +54,7 @@ module extrusion_cross_section(type, cornerHole) {
|
||||
if(d < 0)
|
||||
circle(d = -d);
|
||||
|
||||
module extrusion_corner(type, cornerHole) {
|
||||
module extrusion_corner(type) {
|
||||
fillet = extrusion_fillet(type);
|
||||
cornerSize = (width - channelWidth) / 2;
|
||||
cornerHoleDiameter = abs(extrusion_corner_hole(type));
|
||||
@@ -74,7 +74,7 @@ module extrusion_cross_section(type, cornerHole) {
|
||||
translate([fillet, fillet])
|
||||
square([cornerSquare - fillet, cornerSquare - fillet]);
|
||||
}
|
||||
if(cornerHole)
|
||||
if(cornerHole && cornerHoleDiameter)
|
||||
translate([cornerSquare / 2, cornerSquare / 2])
|
||||
squircle(extrusion_corner_hole_wd(type));
|
||||
}
|
||||
@@ -117,7 +117,7 @@ module extrusion_cross_section(type, cornerHole) {
|
||||
translate([0, side * (width - height) / 2])
|
||||
for(angle = [0, 90])
|
||||
rotate(angle + (side < 0 ? 180 : 0))
|
||||
extrusion_corner(type, cornerHole);
|
||||
extrusion_corner(type);
|
||||
|
||||
if(count >= 1)
|
||||
for(i = [1 : count])
|
||||
@@ -133,7 +133,7 @@ module extrusion_cross_section(type, cornerHole) {
|
||||
}
|
||||
}
|
||||
|
||||
module extrusion(type, length, center = true, cornerHole = false) { //! Draw the specified extrusion
|
||||
module extrusion(type, length, center = true, cornerHole = true) { //! Draw the specified extrusion
|
||||
|
||||
vitamin(str("extrusion(", type[0], ", ", length, arg(cornerHole, false, "cornerHole"), "): Extrusion ", type[0], " x ", length, "mm"));
|
||||
|
||||
|
@@ -20,151 +20,301 @@
|
||||
//! Brackets for joining extrusions at a corner.
|
||||
|
||||
include <../core.scad>
|
||||
include <../utils/thread.scad>
|
||||
|
||||
use <extrusion.scad>
|
||||
|
||||
function extrusion_inner_corner_bracket_size(type) = type[1]; //! Size of inner bracket
|
||||
function extrusion_inner_corner_bracket_tnut(type) = type[2]; //! The sliding t-nut it is based on
|
||||
function extrusion_inner_corner_bracket_extrusion(type) = type[3]; //! Default extrusion this bracket is for
|
||||
function extrusion_inner_corner_bracket_screw_offsets(type) = type[4]; //! Screw offsets from the ends
|
||||
function extrusion_inner_corner_bracket_size(type) = type[1]; //! Size of inner bracket
|
||||
function extrusion_inner_corner_bracket_tnut(type) = type[2]; //! The sliding t-nut it is based on
|
||||
function extrusion_inner_corner_bracket_extrusion(type) = type[3]; //! Default extrusion this bracket is for
|
||||
function extrusion_inner_corner_bracket_screw_offsets(type) = type[4]; //! Screw offsets from the ends
|
||||
|
||||
module extrusion_inner_corner_bracket(type, grub_screws = true, backwards = false, extrusion = undef) { //! Inner corner bracket for extrusion
|
||||
extrusion = is_undef(extrusion) ? extrusion_inner_corner_bracket_extrusion(type) : extrusion;
|
||||
vitamin(str("extrusion_inner_corner_bracket(", type[0], "): Extrusion inner corner bracket for ", extrusion[0]));
|
||||
module extrusion_inner_corner_bracket(type, grub_screws = true, backwards = false, extrusion = undef) { //! Inner corner bracket for extrusion
|
||||
extrusion = is_undef(extrusion) ? extrusion_inner_corner_bracket_extrusion(type) : extrusion;
|
||||
vitamin(str("extrusion_inner_corner_bracket(", type[0], "): Extrusion inner corner bracket for ", extrusion[0]));
|
||||
|
||||
size = extrusion_inner_corner_bracket_size(type);
|
||||
tnut = extrusion_inner_corner_bracket_tnut(type);
|
||||
screw_offsets = extrusion_inner_corner_bracket_screw_offsets(type);
|
||||
bottomTabOffset = 4;
|
||||
topTabOffset = 10;
|
||||
sizeBottom = [size.y - bottomTabOffset, nut_square_width(tnut), size.z];
|
||||
sizeTop = [size.x - topTabOffset, nut_square_width(tnut), size.z];
|
||||
tab = t_nut_tab(tnut);
|
||||
tabSizeZ = nut_thickness(tnut);
|
||||
screw = find_screw(hs_grub, nut_size(tnut));
|
||||
holeRadius = screw_pilot_hole(screw);
|
||||
depth = (extrusion_width(extrusion) - extrusion_center_square(extrusion)) / 2;
|
||||
size = extrusion_inner_corner_bracket_size(type);
|
||||
tnut = extrusion_inner_corner_bracket_tnut(type);
|
||||
screw_offsets = extrusion_inner_corner_bracket_screw_offsets(type);
|
||||
bottomTabOffset = 4;
|
||||
topTabOffset = 10;
|
||||
sizeBottom = [size.y - bottomTabOffset, nut_square_width(tnut), size.z];
|
||||
sizeTop = [size.x - topTabOffset, nut_square_width(tnut), size.z];
|
||||
tab = t_nut_tab(tnut);
|
||||
tabSizeZ = nut_thickness(tnut);
|
||||
screw = find_screw(hs_grub, nut_size(tnut));
|
||||
holeRadius = screw_pilot_hole(screw);
|
||||
depth = (extrusion_width(extrusion) - extrusion_center_square(extrusion)) / 2;
|
||||
|
||||
offset = extrusion_tab_thickness(extrusion) + tabSizeZ;
|
||||
offset2 = extrusion_tab_thickness(extrusion) - nut_thickness(tnut, true) + nut_thickness(tnut);
|
||||
translate([backwards ? offset2 : -offset, -offset])
|
||||
rotate([-90, 0, 0]) {
|
||||
color("silver") {
|
||||
translate([(size.y + bottomTabOffset) / 2, 0, tabSizeZ])
|
||||
rotate([0, 180, 0])
|
||||
extrusionSlidingNut(sizeBottom, tab[0], tab[1], tabSizeZ, holeRadius, (bottomTabOffset - size.y) / 2 + screw_offsets.y);
|
||||
offset = extrusion_tab_thickness(extrusion) + tabSizeZ;
|
||||
offset2 = extrusion_tab_thickness(extrusion) - nut_thickness(tnut, true) + nut_thickness(tnut);
|
||||
translate([backwards ? offset2 : -offset, -offset])
|
||||
rotate([-90, 0, 0]) {
|
||||
color("silver") {
|
||||
translate([(size.y + bottomTabOffset) / 2, 0, tabSizeZ])
|
||||
rotate([0, 180, 0])
|
||||
extrusionSlidingNut(sizeBottom, tab[0], tab[1], tabSizeZ, holeRadius, (bottomTabOffset - size.y) / 2 + screw_offsets.y);
|
||||
|
||||
translate([tabSizeZ, 0, (size.x + topTabOffset) / 2])
|
||||
rotate([0, -90, 0])
|
||||
extrusionSlidingNut(sizeTop, tab[0], tab[0], tabSizeZ, holeRadius, -(topTabOffset - size.x) / 2 - screw_offsets.x);
|
||||
translate([tabSizeZ, 0, (size.x + topTabOffset) / 2])
|
||||
rotate([0, -90, 0])
|
||||
extrusionSlidingNut(sizeTop, tab[0], tab[0], tabSizeZ, holeRadius, -(topTabOffset - size.x) / 2 - screw_offsets.x);
|
||||
|
||||
translate([0, -tab[1] / 2]) {
|
||||
cube([bottomTabOffset, tab[1], size.z]);
|
||||
cube([size.z, tab[1], topTabOffset]);
|
||||
}
|
||||
}
|
||||
if(grub_screws)
|
||||
not_on_bom() no_explode() {
|
||||
screw_len = screw_shorter_than(depth);
|
||||
gap = depth - screw_len;
|
||||
screw_z = offset - gap;
|
||||
|
||||
rotate([0, -90, 180])
|
||||
if(backwards)
|
||||
translate([size.x - screw_offsets.x, 0, -offset2 + gap])
|
||||
vflip()
|
||||
screw(screw, screw_len);
|
||||
else
|
||||
translate([size.x - screw_offsets.x, 0, screw_z])
|
||||
screw(screw, screw_len);
|
||||
|
||||
translate([size.y - screw_offsets.y, 0, screw_z])
|
||||
screw(screw, screw_len);
|
||||
}
|
||||
translate([0, -tab[1] / 2]) {
|
||||
cube([bottomTabOffset, tab[1], size.z]);
|
||||
cube([size.z, tab[1], topTabOffset]);
|
||||
}
|
||||
}
|
||||
if (grub_screws)
|
||||
not_on_bom() no_explode() {
|
||||
screw_len = screw_shorter_than(depth);
|
||||
gap = depth - screw_len;
|
||||
screw_z = offset - gap;
|
||||
|
||||
rotate([0, -90, 180]) if (backwards)
|
||||
translate([size.x - screw_offsets.x, 0, -offset2 + gap])
|
||||
vflip()
|
||||
screw(screw, screw_len);
|
||||
else
|
||||
translate([size.x - screw_offsets.x, 0, screw_z])
|
||||
screw(screw, screw_len);
|
||||
|
||||
translate([size.y - screw_offsets.y, 0, screw_z])
|
||||
screw(screw, screw_len);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function extrusion_corner_bracket_size(type) = type[1]; //! Size of bracket
|
||||
function extrusion_corner_bracket_base_thickness(type) = type[2]; //! Thickness of base of bracket
|
||||
function extrusion_corner_bracket_side_thickness(type) = type[3]; //! Thickness of side of bracket
|
||||
function extrusion_corner_bracket_hole_offset(type) = type[4]; //! Hole offset from corner
|
||||
function extrusion_corner_bracket_tnut(type) = type[5]; //! The sliding t-nut to use in the assembly
|
||||
function extrusion_corner_bracket_extrusion(type) = type[6]; //! Default extrusion this bracket is for
|
||||
function extrusion_corner_bracket_size(type) = type[1]; //! Size of bracket
|
||||
function extrusion_corner_bracket_base_thickness(type) = type[2]; //! Thickness of base of bracket
|
||||
function extrusion_corner_bracket_side_thickness(type) = type[3]; //! Thickness of side of bracket
|
||||
function extrusion_corner_bracket_hole_offset(type) = type[4]; //! Hole offset from corner
|
||||
function extrusion_corner_bracket_tnut(type) = type[5]; //! The sliding t-nut to use in the assembly
|
||||
function extrusion_corner_bracket_extrusion(type) = type[6]; //! Default extrusion this bracket is for
|
||||
|
||||
module extrusion_corner_bracket(type) { //! Corner bracket for extrusion
|
||||
vitamin(str("extrusion_corner_bracket(", type[0], "): Extrusion corner bracket ", type[1].z, "mm for ", extrusion_corner_bracket_extrusion(type)[0]));
|
||||
module extrusion_corner_bracket(type) { //! Corner bracket for extrusion
|
||||
vitamin(str("extrusion_corner_bracket(", type[0], "): Extrusion corner bracket ", type[1].z, "mm for ", extrusion_corner_bracket_extrusion(type)[0]));
|
||||
|
||||
eSize = extrusion_corner_bracket_size(type).z;
|
||||
cbSize = extrusion_corner_bracket_size(type).x;
|
||||
baseThickness = extrusion_corner_bracket_base_thickness(type);
|
||||
hole_r = screw_clearance_radius(find_screw(hs_cap, nut_size(extrusion_corner_bracket_tnut(type))));
|
||||
eSize = extrusion_corner_bracket_size(type).z;
|
||||
cbSize = extrusion_corner_bracket_size(type).x;
|
||||
baseThickness = extrusion_corner_bracket_base_thickness(type);
|
||||
hole_r = screw_clearance_radius(find_screw(hs_cap, nut_size(extrusion_corner_bracket_tnut(type))));
|
||||
|
||||
module base() {
|
||||
linear_extrude(baseThickness)
|
||||
difference() {
|
||||
translate([0, -eSize / 2])
|
||||
square([cbSize, eSize]);
|
||||
module base() {
|
||||
linear_extrude(baseThickness)
|
||||
difference() {
|
||||
translate([0, -eSize / 2])
|
||||
square([cbSize, eSize]);
|
||||
|
||||
hull() {
|
||||
translate([extrusion_corner_bracket_hole_offset(type) + 1.5, 0])
|
||||
circle(hole_r);
|
||||
hull() {
|
||||
translate([extrusion_corner_bracket_hole_offset(type) + 1.5, 0])
|
||||
circle(hole_r);
|
||||
|
||||
translate([extrusion_corner_bracket_hole_offset(type) - 1.5, 0])
|
||||
circle(hole_r);
|
||||
}
|
||||
}
|
||||
translate([extrusion_corner_bracket_hole_offset(type) - 1.5, 0])
|
||||
circle(hole_r);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
color("silver") {
|
||||
rotate([90, 0, 90])
|
||||
base();
|
||||
|
||||
translate([0, baseThickness])
|
||||
rotate([90, 0, 0])
|
||||
base();
|
||||
|
||||
sideThickness = extrusion_corner_bracket_side_thickness(type);
|
||||
for (z = [-eSize / 2, eSize / 2 - sideThickness]) {
|
||||
translate_z(z) {
|
||||
right_triangle(cbSize, cbSize, sideThickness, center=false);
|
||||
cube([5, cbSize, sideThickness]);
|
||||
cube([cbSize, 5, sideThickness]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
color("silver") {
|
||||
rotate([90, 0, 90])
|
||||
base();
|
||||
module extrusion_corner_bracket_hole_positions(type) {
|
||||
//! Place children at hole positions
|
||||
for (angle = [[0, 90, 0], [-90, -90, 0]])
|
||||
rotate(angle)
|
||||
translate([0, extrusion_corner_bracket_hole_offset(type), extrusion_corner_bracket_base_thickness(type)])
|
||||
children();
|
||||
}
|
||||
|
||||
translate([0, baseThickness])
|
||||
rotate([90, 0, 0])
|
||||
base();
|
||||
module extrusion_corner_bracket_assembly(type, part_thickness = undef, screw_type = undef, nut_type = undef, max_screw_depth = undef, extrusion = undef) { //! Assembly with fasteners in place
|
||||
extrusion_corner_bracket(type);
|
||||
extrusion = is_undef(extrusion) ? extrusion_corner_bracket_extrusion(type) : extrusion;
|
||||
|
||||
sideThickness = extrusion_corner_bracket_side_thickness(type);
|
||||
for(z = [-eSize / 2, eSize / 2 - sideThickness]) {
|
||||
translate_z(z) {
|
||||
right_triangle(cbSize, cbSize, sideThickness, center = false);
|
||||
cube([5, cbSize, sideThickness]);
|
||||
cube([cbSize, 5, sideThickness]);
|
||||
nut = is_undef(nut_type) ? extrusion_corner_bracket_tnut(type) : nut_type;
|
||||
screw = is_undef(screw_type) ? find_screw(hs_cap, nut_size(nut)) : screw_type;
|
||||
thickness = is_undef(part_thickness) ? extrusion_tab_thickness(extrusion) : part_thickness;
|
||||
depth = is_undef(max_screw_depth) ? (extrusion_width(extrusion) - extrusion_center_square(extrusion)) / 2 - eps : max_screw_depth;
|
||||
|
||||
screw_washer_thickness = washer_thickness(screw_washer(screw));
|
||||
nut_washer_type = nut_washer(nut);
|
||||
nut_washer_thickness = nut_washer_type ? washer_thickness(nut_washer_type) : 0;
|
||||
|
||||
nut_offset = extrusion_corner_bracket_base_thickness(type) + thickness;
|
||||
screw_length =
|
||||
depth ? screw_shorter_than(extrusion_corner_bracket_base_thickness(type) + screw_washer_thickness + depth)
|
||||
: screw_longer_than(nut_offset + screw_washer_thickness + nut_washer_thickness + nut_thickness(nut));
|
||||
|
||||
extrusion_corner_bracket_hole_positions(type) {
|
||||
screw_and_washer(screw, screw_length);
|
||||
translate_z(-nut_offset)
|
||||
vflip() if (nut_washer_type)
|
||||
nut_and_washer(nut);
|
||||
else
|
||||
rotate(90)
|
||||
sliding_t_nut(nut);
|
||||
}
|
||||
}
|
||||
|
||||
function extrusion_corner_bracket_3D_outer_side_length(type) = type[1]; //! The length of the base cuboid sides
|
||||
function extrusion_corner_bracket_3D_outer_height(type) = type[2]; //! The height of the cuboid
|
||||
function extrusion_corner_bracket_3D_inner_side_length(type) = type[3]; //! The length of the dip in the cuboid sides
|
||||
function extrusion_corner_bracket_3D_inner_height(type) = type[4]; //! The depth offset of the dip in the cuboid
|
||||
|
||||
function extrusion_corner_bracket_3D_nut_screw(type) = type[5]; //! The screw (most likely Mx_grub_screw from <NopSCADlib/vitamins/screws.scad>)
|
||||
function extrusion_corner_bracket_3D_nut_dia(type) = type[6]; //! The width of bottom part of the nut
|
||||
function extrusion_corner_bracket_3D_nut_thickness(type) = type[7]; //! The thickness of the top part of the nut
|
||||
function extrusion_corner_bracket_3D_nut_nyloc_thickness(type) = type[8]; //! The total thickness of the nut
|
||||
function extrusion_corner_bracket_3D_nut_sx(type) = type[9]; //! The length of the nuts
|
||||
function extrusion_corner_bracket_3D_nut_ty1(type) = type[10]; //! The total width of the nut
|
||||
function extrusion_corner_bracket_3D_nut_ty2(type) = type[11]; //! The width of the top edge of the nut
|
||||
function extrusion_corner_bracket_3D_nut_screws_hor(type) = type[12]; //! The positions of the screw holes on the horizontal arms, expressed in %/100 of the nut arm
|
||||
function extrusion_corner_bracket_3D_nut_screws_ver(type) = type[13]; //! The positions of the screw holes on the vertical arms, expressed in %/100 of the nut arm
|
||||
|
||||
function extrusion_corner_bracket_3D_get_y_offset(type) = [0, -extrusion_corner_bracket_3D_outer_side_length(type) / 2, extrusion_corner_bracket_3D_nut_nyloc_thickness(type)]; //! helper function to position the y beam
|
||||
function extrusion_corner_bracket_3D_get_y_rot(type) = [90, 0, 0]; //! helper function to rotate the y beam
|
||||
function extrusion_corner_bracket_3D_get_x_offset(type) = [extrusion_corner_bracket_3D_outer_side_length(type) / 2, 0, extrusion_corner_bracket_3D_nut_nyloc_thickness(type)]; //! helper function to position the x beam
|
||||
function extrusion_corner_bracket_3D_get_x_rot(type) = [0, 90, 0]; //! helper function to rotate the y beam
|
||||
|
||||
module extrusion_corner_bracket_3D(type, grub_screws = true) { //! draw the specified extrusion_corner_bracket_3D
|
||||
vitamin(str("extrusion_corner_bracket_3D(", type[0], "): Extrusion corner bracket 3D mm for E", slice(type[0], -4)));
|
||||
|
||||
|
||||
nut_screw_dia = screw_radius(extrusion_corner_bracket_3D_nut_screw(type) * 2);
|
||||
nut_dia = extrusion_corner_bracket_3D_nut_dia(type);
|
||||
nut_thickness = extrusion_corner_bracket_3D_nut_thickness(type);
|
||||
nut_nyloc_thickness = extrusion_corner_bracket_3D_nut_nyloc_thickness(type);
|
||||
nut_sx = extrusion_corner_bracket_3D_nut_sx(type);
|
||||
nut_ty1 = extrusion_corner_bracket_3D_nut_ty1(type);
|
||||
nut_ty2 = extrusion_corner_bracket_3D_nut_ty2(type);
|
||||
|
||||
nut_profile = [
|
||||
[0, nut_dia / 2],
|
||||
[nut_nyloc_thickness - nut_thickness, nut_dia / 2],
|
||||
[nut_nyloc_thickness - nut_thickness, nut_ty1 / 2],
|
||||
[nut_nyloc_thickness - nut_thickness + (nut_ty1 - nut_ty2) / 2, nut_ty1 / 2],
|
||||
[nut_nyloc_thickness, nut_ty2 / 2],
|
||||
[nut_nyloc_thickness, -nut_ty2 / 2],
|
||||
[nut_nyloc_thickness - nut_thickness + (nut_ty1 - nut_ty2) / 2, -nut_ty1 / 2],
|
||||
[nut_nyloc_thickness - nut_thickness, -nut_ty1 / 2],
|
||||
[nut_nyloc_thickness - nut_thickness, -nut_dia / 2],
|
||||
[0, -nut_dia / 2],
|
||||
];
|
||||
|
||||
grub_screw = extrusion_corner_bracket_3D_nut_screw(type);
|
||||
|
||||
outer_side_length = extrusion_corner_bracket_3D_outer_side_length(type);
|
||||
outer_height = extrusion_corner_bracket_3D_outer_height(type);
|
||||
inner_side_length = extrusion_corner_bracket_3D_inner_side_length(type);
|
||||
inner_height = extrusion_corner_bracket_3D_inner_height(type);
|
||||
inner_offset_z = outer_height - inner_height + 0.01;
|
||||
|
||||
//position the nuts on the base
|
||||
positions_horizontal = [
|
||||
[outer_side_length / 2, 0.001, 0, 0, 270, 90],
|
||||
[outer_side_length - 0.001, outer_side_length / 2, 0, 0, 270, 180],
|
||||
];
|
||||
positions_vertical = [
|
||||
[0, outer_side_length / 2, inner_offset_z, 0, 0, 0],
|
||||
[outer_side_length / 2, outer_side_length, inner_offset_z, 0, 0, 270],
|
||||
];
|
||||
|
||||
//the radius of the base corners
|
||||
r = 1;
|
||||
|
||||
//offset so everything is centered for easy attachment to extrusion
|
||||
translate([-outer_side_length / 2, -outer_side_length / 2, -outer_height]) {
|
||||
|
||||
color("silver")
|
||||
union() {
|
||||
//create the base
|
||||
difference() {
|
||||
rounded_cube_xy([outer_side_length, outer_side_length, outer_height], r=r);
|
||||
translate([(outer_side_length - inner_side_length) / 2, (outer_side_length - inner_side_length) / 2, inner_offset_z])
|
||||
rounded_cube_xy([inner_side_length, inner_side_length, inner_height], r=r);
|
||||
}
|
||||
|
||||
for (pos = positions_horizontal) {
|
||||
translate([pos[0], pos[1], pos[2]])
|
||||
rotate([pos[3], pos[4], pos[5]])
|
||||
difference() {
|
||||
linear_extrude(nut_sx, convexity=3)
|
||||
polygon(nut_profile);
|
||||
//create the screw holes
|
||||
for (dist = extrusion_corner_bracket_3D_nut_screws_hor(type)) {
|
||||
translate([-0.01, 0, nut_sx * dist])
|
||||
rotate([0, 90, 0])
|
||||
difference() {
|
||||
cylinder(h=nut_nyloc_thickness + 0.02, d=nut_screw_dia, center=false);
|
||||
if (show_threads) {
|
||||
female_metric_thread(nut_screw_dia, metric_coarse_pitch(nut_screw_dia), nut_nyloc_thickness, center=false);
|
||||
}
|
||||
}
|
||||
if (grub_screws) {
|
||||
screw(grub_screw, nut_nyloc_thickness);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (pos = positions_vertical) {
|
||||
translate([pos[0], pos[1], pos[2]])
|
||||
rotate([pos[3], pos[4], pos[5]]) {
|
||||
difference() {
|
||||
linear_extrude(nut_sx, convexity=3)
|
||||
polygon(nut_profile);
|
||||
//create the screw holes
|
||||
for (dist = extrusion_corner_bracket_3D_nut_screws_ver(type)) {
|
||||
translate([-0.01, 0, nut_sx * dist])
|
||||
rotate([0, 90, 0])
|
||||
difference() {
|
||||
cylinder(h=nut_nyloc_thickness + 0.02, d=nut_screw_dia, center=false);
|
||||
if (show_threads) {
|
||||
female_metric_thread(nut_screw_dia, metric_coarse_pitch(nut_screw_dia), nut_nyloc_thickness, center=false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (grub_screws) {
|
||||
for (pos = positions_horizontal) {
|
||||
translate([pos[0], pos[1], pos[2]])
|
||||
rotate([pos[3], pos[4], pos[5]]) {
|
||||
for (dist = extrusion_corner_bracket_3D_nut_screws_hor(type)) {
|
||||
translate([-0.01, 0, nut_sx * dist])
|
||||
rotate([180, 90, 0])
|
||||
|
||||
screw(grub_screw, nut_nyloc_thickness);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (pos = positions_vertical) {
|
||||
translate([pos[0], pos[1], pos[2]])
|
||||
rotate([pos[3], pos[4], pos[5]]) {
|
||||
for (dist = extrusion_corner_bracket_3D_nut_screws_ver(type)) {
|
||||
translate([-0.01, 0, nut_sx * dist])
|
||||
rotate([180, 90, 0])
|
||||
screw(grub_screw, nut_nyloc_thickness);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module extrusion_corner_bracket_hole_positions(type) { //! Place children at hole positions
|
||||
for(angle = [ [0, 90, 0], [-90, -90, 0] ])
|
||||
rotate(angle)
|
||||
translate([0, extrusion_corner_bracket_hole_offset(type), extrusion_corner_bracket_base_thickness(type)])
|
||||
children();
|
||||
}
|
||||
|
||||
module extrusion_corner_bracket_assembly(type, part_thickness = undef, screw_type = undef, nut_type = undef, max_screw_depth = undef, extrusion = undef) { //! Assembly with fasteners in place
|
||||
extrusion_corner_bracket(type);
|
||||
extrusion = is_undef(extrusion) ? extrusion_corner_bracket_extrusion(type) : extrusion;
|
||||
|
||||
nut = is_undef(nut_type) ? extrusion_corner_bracket_tnut(type) : nut_type;
|
||||
screw = is_undef(screw_type) ? find_screw(hs_cap, nut_size(nut)) : screw_type;
|
||||
thickness = is_undef(part_thickness) ? extrusion_tab_thickness(extrusion) : part_thickness;
|
||||
depth = is_undef(max_screw_depth) ? (extrusion_width(extrusion) - extrusion_center_square(extrusion)) / 2 - eps : max_screw_depth;
|
||||
|
||||
screw_washer_thickness = washer_thickness(screw_washer(screw));
|
||||
nut_washer_type = nut_washer(nut);
|
||||
nut_washer_thickness = nut_washer_type ? washer_thickness(nut_washer_type) : 0;
|
||||
|
||||
nut_offset = extrusion_corner_bracket_base_thickness(type) + thickness;
|
||||
screw_length = depth ? screw_shorter_than(extrusion_corner_bracket_base_thickness(type) + screw_washer_thickness + depth)
|
||||
: screw_longer_than(nut_offset + screw_washer_thickness + nut_washer_thickness + nut_thickness(nut));
|
||||
|
||||
extrusion_corner_bracket_hole_positions(type) {
|
||||
screw_and_washer(screw, screw_length);
|
||||
translate_z(-nut_offset)
|
||||
vflip()
|
||||
if(nut_washer_type)
|
||||
nut_and_washer(nut);
|
||||
else
|
||||
rotate(90)
|
||||
sliding_t_nut(nut);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -19,12 +19,22 @@
|
||||
//
|
||||
// Extrusion brackets
|
||||
//
|
||||
include <../core.scad>
|
||||
include <screws.scad>
|
||||
|
||||
E20_inner_corner_bracket = [ "E20_inner_corner_bracket", [26, 25, 4.7], M4_sliding_t_nut, E2020t, [7, 6]];
|
||||
E40_inner_corner_bracket = [ "E40_inner_corner_bracket", [38, 31, 8.5], M6_sliding_t_nut, E4040t, [13, 10]];
|
||||
E20_inner_corner_bracket = ["E20_inner_corner_bracket", [26, 25, 4.7], M4_sliding_t_nut, E2020t, [7, 6]];
|
||||
E40_inner_corner_bracket = ["E40_inner_corner_bracket", [38, 31, 8.5], M6_sliding_t_nut, E4040t, [13, 10]];
|
||||
|
||||
E20_corner_bracket = [ "E20_corner_bracket", [28, 28, 20], 2, 3, 19.5, M4_sliding_t_nut, E2020t];
|
||||
E40_corner_bracket = [ "E40_corner_bracket", [40, 40, 35], 2, 3, 19.5, M8_sliding_ball_t_nut, E4040t];
|
||||
E20_corner_bracket = ["E20_corner_bracket", [28, 28, 20], 2, 3, 19.5, M4_sliding_t_nut, E2020t];
|
||||
E40_corner_bracket = ["E40_corner_bracket", [40, 40, 35], 2, 3, 19.5, M8_sliding_ball_t_nut, E4040t];
|
||||
|
||||
//sh is horizontal positions of the screw holes, expressed in %/100 of the nut arm
|
||||
//sv is vertical positions of the screw holes, expressed in %/100 of the nut arm
|
||||
// screw nd nt nnt nsx nty1 nty2 sh sv
|
||||
extrusion_corner_bracket_3D_2020 = ["extrusion_corner_bracket_3D_2020", 20, 5, 13, 2.5, M4_grub_screw, 6, 3.5, 5, 15.5, 10, 6, [0.5], [0.5]];
|
||||
extrusion_corner_bracket_3D_3030 = ["extrusion_corner_bracket_3D_3030", 29.6, 6.2, 22, 2.5, M6_grub_screw, 8, 4.2, 6.2, 24.9, 16, 11, [0.25, 0.75], [0.65]];
|
||||
extrusion_corner_bracket_3D_4040 = ["extrusion_corner_bracket_3D_4040", 40, 9.5, 25, 2.5, M6_grub_screw, 8, 5, 9.5, 34.0, 19.5, 14, [0.25, 0.75], [0.65]];
|
||||
|
||||
extrusion_corner_bracket_3Ds = [extrusion_corner_bracket_3D_2020, extrusion_corner_bracket_3D_3030, extrusion_corner_bracket_3D_4040];
|
||||
|
||||
use <extrusion_bracket.scad>
|
||||
|
@@ -19,19 +19,21 @@
|
||||
//
|
||||
// Extrusion
|
||||
//
|
||||
// W H d1 d2 sq cw cwi t st f recess
|
||||
E1515 = [ "E1515", 15, 15, -3.3, 0, 5.5, 6.2, 9.5, 1.0, 0.9, 0.5, false ];
|
||||
E2020 = [ "E2020", 20, 20, -4.2, -3, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E2020t = [ "E2020t",20, 20, -5.0, -3, 7.8, 6.2, 11.0, 1.8, 1.5, 1.5, [7.2, 0.5] ];
|
||||
E2040 = [ "E2040", 20, 40, -4.2, -3, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E2060 = [ "E2060", 20, 60, -4.2, -3, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E2080 = [ "E2080", 20, 80, -4.2, -3, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E3030 = [ "E3030", 30, 30, -6.8, -4.2, 12, 8, 16.5, 2, 2, 1, false ];
|
||||
E3060 = [ "E3060", 30, 60, -6.8, -4.2, 12, 8, 16.5, 2, 2, 1, false ];
|
||||
E4040 = [ "E4040", 40, 40, -10.5, -6.0, 15, 10, 20.0, 5.5, 3, 1, false ];
|
||||
E4040t = [ "E4040t",40, 40, -10, 6.8, -16, 10, 20.0, 4.0, 2.4, 1.5, [12, 1] ];
|
||||
E4080 = [ "E4080", 40, 80, -10.5, -6.0, 15, 10, 20.0, 5.5, 3, 1, false ];
|
||||
// W H d1 d2 sq cw cwi t st f recess
|
||||
Makerbeam = [ "Makerbeam", 10, 10, -2.5, 0, 4, 3, 6.5, 1, 1, 0.25, false ];
|
||||
MakerbeamXL = [ "MakerbeamXL", 15, 15, -2.55, -2.55, 5, 3, 5.7, 1.1, 2, 0.25, false ];
|
||||
E1515 = [ "E1515", 15, 15, -3.3, 0, 5.5, 6.2, 9.5, 1.0, 0.9, 0.5, false ];
|
||||
E2020 = [ "E2020", 20, 20, -4.2, 0, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E2020t = [ "E2020t", 20, 20, -5.0, 0, 7.8, 6.2, 11.0, 1.8, 1.5, 1.5, [7.2, 0.5] ];
|
||||
E2040 = [ "E2040", 20, 40, -4.2, 0, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E2060 = [ "E2060", 20, 60, -4.2, 0, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E2080 = [ "E2080", 20, 80, -4.2, 0, 8, 6, 12.0, 2, 2, 1, false ];
|
||||
E3030 = [ "E3030", 30, 30, -6.8, -4.2, 12, 8, 16.5, 2, 2, 1, false ];
|
||||
E3060 = [ "E3060", 30, 60, -6.8, -4.2, 12, 8, 16.5, 2, 2, 1, false ];
|
||||
E4040 = [ "E4040", 40, 40, -10.5, -6.0, 15, 10, 20.0, 5.5, 3, 1, false ];
|
||||
E4040t = [ "E4040t", 40, 40, -10, 6.8, -16, 10, 20.0, 4.0, 2.4, 1.5, [12, 1] ];
|
||||
E4080 = [ "E4080", 40, 80, -10.5, -6.0, 15, 10, 20.0, 5.5, 3, 1, false ];
|
||||
|
||||
extrusions = [E1515, [E2020t, E2020], E2040, E2060, E2080, E3030, E3060, [E4040t, E4040], E4080];
|
||||
extrusions = [Makerbeam, [E1515, MakerbeamXL], [E2020t, E2020], E2040, E2060, E2080, E3030, E3060, [E4040t, E4040], E4080];
|
||||
|
||||
use <extrusion.scad>
|
||||
|
@@ -535,6 +535,95 @@ BTT_SKR_V1_4_TURBO = [
|
||||
[] // accessories
|
||||
];
|
||||
|
||||
MELLOW_FLY_D5 = [
|
||||
"MELLOW_FLY_D5", "Mellow FLY D5",
|
||||
89.37, 63.75, 1.6, // size
|
||||
1, // corner radius
|
||||
3, // mounting hole diameter
|
||||
5, // pad around mounting hole
|
||||
grey(30), // color
|
||||
false, // true if parts should be separate BOM items
|
||||
[ // hole positions
|
||||
[3.185,3.375],
|
||||
[-3.185,3.375],
|
||||
[3.185,-3.375],
|
||||
[-3.185,-3.375],
|
||||
],
|
||||
[ // components
|
||||
// motor connections, stepper sockets
|
||||
[ 0*15.8+7+12.5/2, 7/2, 180, "jst_xh", 4, false, grey(20) ],
|
||||
[ 0*15.8+18+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef, "RoyalBlue" ],
|
||||
[ 0*15.8+12.5+5.4/2, 5.8+2.6/2, 0, "2p54socket", 2, 1],
|
||||
[ 0*15.8+5.5+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef],
|
||||
[ 0*15.8+5.1+2.5/2+6.5, 5.8+21/2, 90, "pcb", 11, TMC2130],
|
||||
|
||||
[ 1*15.8+7+12.5/2, 7/2, 180, "jst_xh", 4, false, grey(20) ],
|
||||
[ 1*15.8+18+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef, "RoyalBlue" ],
|
||||
[ 1*15.8+12.5+5.4/2, 5.8+2.6/2, 0, "2p54socket", 2, 1],
|
||||
[ 1*15.8+5.5+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef],
|
||||
[ 1*15.8+5.1+2.5/2+6.5, 5.8+21/2, 90, "pcb", 11, TMC2130],
|
||||
|
||||
[ 2*15.8+7+12.5/2, 7/2, 180, "jst_xh", 4, false, grey(20) ],
|
||||
[ 2*15.8+18+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef, "RoyalBlue" ],
|
||||
[ 2*15.8+12.5+5.4/2, 5.8+2.6/2, 0, "2p54socket", 2, 1],
|
||||
[ 2*15.8+5.5+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef],
|
||||
[ 2*15.8+5.1+2.5/2+6.5, 5.8+21/2, 90, "pcb", 11, TMC2130],
|
||||
|
||||
[ 3*15.8+7+12.5/2, 7/2, 180, "jst_xh", 4, false, grey(20) ],
|
||||
[ 3*15.8+18+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef, "RoyalBlue" ],
|
||||
[ 3*15.8+12.5+5.4/2, 5.8+2.6/2, 0, "2p54socket", 2, 1],
|
||||
[ 3*15.8+5.5+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef],
|
||||
[ 3*15.8+5.1+2.5/2+6.5, 5.8+21/2, 90, "pcb", 11, TMC2130],
|
||||
|
||||
[ 4*15.8+7+12.5/2, 7/2, 180, "jst_xh", 4, false, grey(20) ],
|
||||
[ 4*15.8+18+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef, "RoyalBlue" ],
|
||||
[ 4*15.8+12.5+5.4/2, 5.8+2.6/2, 0, "2p54socket", 2, 1],
|
||||
[ 4*15.8+5.5+2.5/2, 5.8+21/2, 90, "2p54socket", 8, 1, undef, undef, undef],
|
||||
|
||||
// thermistors
|
||||
[ 0*8+7.8+7.4/2, -(0*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
[ 1*8+7.8+7.4/2, -(0*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
|
||||
// fans
|
||||
[ 2*8+7.8+7.4/2, -(0*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
[ 3*8+7.8+7.4/2, -(0*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
[ 4*8+7.8+7.4/2, -(0*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
[ 2*8+7.8+7.4/2, -(1*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
[ 3*8+7.8+7.4/2, -(1*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
[ 4*8+7.8+7.4/2, -(1*6+5.7/2), 180, "jst_xh", 2, false, grey(20) ],
|
||||
|
||||
// endstops
|
||||
[ 0*10.5+5*8+7.8+10/2, -(0*6+5.7/2), 180, "jst_xh", 3, false, grey(20) ],
|
||||
[ 1*10.5+5*8+7.8+10/2, -(0*6+5.7/2), 180, "jst_xh", 3, false, grey(20) ],
|
||||
[ 2*10.5+5*8+7.8+10/2, -(0*6+5.7/2), 180, "jst_xh", 3, false, grey(20) ],
|
||||
|
||||
// bltouch/probe
|
||||
[ 5*8+7.8+15/2, -(1*6+5.7/2), 180, "jst_xh", 5, false, grey(20) ],
|
||||
|
||||
// uart/screen
|
||||
[ 5*8+7.8+15.5+12.5/2, -(1*6+5.7/2), 180, "jst_xh", 4, false, grey(20) ],
|
||||
|
||||
// terminals
|
||||
[ 5.25, -(7+30/2), 180, "gterm", gt_5x17, 6, undef, grey(20) ],
|
||||
|
||||
// cpu
|
||||
[ -26-10/2, -20-10/2, 0, "chip", 10, 10, 1, grey(15) ],
|
||||
|
||||
// EXP1 & EXP2
|
||||
[ -20/2, -17-9/2, 180, "2p54boxhdr", 5, 2 ],
|
||||
[ -20/2, -26-9/2, 180, "2p54boxhdr", 5, 2 ],
|
||||
|
||||
// USB connection
|
||||
[-3, -7-9/2, 0, "usb_C"],
|
||||
|
||||
// boot button
|
||||
//[-36, -16, 0, "button_4p5mm"], // button is super tiny, not like button_4p5mm
|
||||
// reset button
|
||||
//[-38, -16, 0, "button_4p5mm"], // button is super tiny, not like button_4p5mm
|
||||
],
|
||||
[] // accessories
|
||||
];
|
||||
|
||||
Melzi = ["Melzi", "Melzi electronics", 203.2, 49.53, 1.6, 3.81, 3.1, 6, "green", false, [[3.81, 3.81], [-3.81, 3.81], [-3.81, -3.81], [3.81, -3.81]],
|
||||
[],
|
||||
[": USB A to Mini B lead", ": Micro SD card"]];
|
||||
@@ -1315,7 +1404,7 @@ I2C_LCD_Backpack = let(size=[42, 19, 1.2])
|
||||
|
||||
tiny_pcbs = [ESP_201, ESP_01M, XIAO, ESP_12F, MP1584EN, ESP_01,tiny_buck, LIPO_fuel_gauge, 9DOF_stick];
|
||||
|
||||
big_pcbs = [BTT_RELAY_V1_2, BTT_SKR_MINI_E3_V2_0, BTT_SKR_E3_TURBO, BTT_SKR_V1_4_TURBO, DuetE, Duex5];
|
||||
big_pcbs = [BTT_RELAY_V1_2, MELLOW_FLY_D5, BTT_SKR_MINI_E3_V2_0, BTT_SKR_E3_TURBO, BTT_SKR_V1_4_TURBO, DuetE, Duex5];
|
||||
|
||||
pcbs = [KY_040, TP4056, L9110S, ZC_A0591, RCWL0516, MT3608,RAMPSEndstop, ArduinoNano, I2C_LCD_Backpack, HW803_1WAY_RELAY, Feather405, RPI_Pico,
|
||||
ESP32_DOIT_V1, BlackPill, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, WD2002SJ, OPZ2, PanelDue_v3, RPI3A, RPI3, RPI4];
|
||||
|