Compare commits
39 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
f8a9c16360 | ||
|
38988bacfa | ||
|
f26ed7443d | ||
|
453b68aaf9 | ||
|
1ce7b64c73 | ||
|
9230fa78d7 | ||
|
a85c5cfa4b | ||
|
926dd8ca90 | ||
|
2ccfc1b506 | ||
|
fff0e9e3cb | ||
|
43b101ae1e | ||
|
f85fdca051 | ||
|
1fc2be04d5 | ||
|
e3ad32713d | ||
|
82980392c9 | ||
|
3961d7f1a4 | ||
|
1996189ab2 | ||
|
9f8c309643 | ||
|
3995f685dd | ||
|
e2ba69be46 | ||
|
41859ec224 | ||
|
cd95ef95ab | ||
|
7a9e73830e | ||
|
ad82ca21c5 | ||
|
ebe2dfd4fd | ||
|
49cc8333fd | ||
|
e3722f88da | ||
|
b5afd7bd41 | ||
|
0137a43a63 | ||
|
027c1b393d | ||
|
21324561c0 | ||
|
b9d101749e | ||
|
17979d3205 | ||
|
72e5d1abfb | ||
|
73567eda39 | ||
|
f5c74a8561 | ||
|
04090b816b | ||
|
06d4918630 | ||
|
9d502e4773 |
84
CHANGELOG.md
@@ -3,6 +3,74 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
### [v21.11.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.11.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.10.1...v21.11.0 "diff with v21.10.1")
|
||||
* 2024-01-14 [`41859ec`](https://github.com/nophead/NopSCADlib/commit/41859ec2245e3fee41cb9c79fb5a627193a4fec8 "show commit") [C.P.](# "Chris Palmer") Added `screw_thread_radius()` and `screw_angle()` functions.
|
||||
|
||||
* 2024-01-14 [`cd95ef9`](https://github.com/nophead/NopSCADlib/commit/cd95ef95abed30e4004905972c9abcacdad0dc5e "show commit") [C.P.](# "Chris Palmer") Added GT2x12, GT3x6, GT3x9 and GT3x12 belts.
|
||||
|
||||
* 2024-01-12 [`7a9e738`](https://github.com/nophead/NopSCADlib/commit/7a9e73830e16a843a14debb8d9b770243067cf63 "show commit") [C.P.](# "Chris Palmer") Belt part number is not always the same as the pitch.
|
||||
|
||||
#### [v21.10.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.10.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.10.0...v21.10.1 "diff with v21.10.0")
|
||||
* 2023-12-01 [`ebe2dfd`](https://github.com/nophead/NopSCADlib/commit/ebe2dfd4fd8ba042b634030f7d463d0ba0d8c4cd "show commit") [C.P.](# "Chris Palmer") Fixed explode line position on short inserts.
|
||||
|
||||
### [v21.10.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.10.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.9.1...v21.10.0 "diff with v21.9.1")
|
||||
* 2023-11-27 [`0137a43`](https://github.com/nophead/NopSCADlib/commit/0137a43a638777ecdf6b311579006c0922650a9c "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2023-11-12 [`72e5d1a`](https://github.com/nophead/NopSCADlib/commit/72e5d1abfb744ddcdf665b02ba7a1cf2b6bcff38 "show commit") [X.](# "XrXca") Update `pcbs.scad`
|
||||
|
||||
* Update `pcbs.scad`
|
||||
|
||||
* Update `pcbs.scad`
|
||||
|
||||
* Update `pcbs.scad`
|
||||
|
||||
* 2023-11-27 [`b5afd7b`](https://github.com/nophead/NopSCADlib/commit/b5afd7bd41a1a46b7a1745c30755b3fb6c25b9a1 "show commit") [C.P.](# "Chris Palmer") ESP-01M added.
|
||||
|
||||
#### [v21.9.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.9.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.9.0...v21.9.1 "diff with v21.9.0")
|
||||
* 2023-11-26 [`b9d1017`](https://github.com/nophead/NopSCADlib/commit/b9d101749eb2b19963299d85b75f0fa489fba552 "show commit") [C.P.](# "Chris Palmer") Updated images due to pixel differences on new PC
|
||||
|
||||
* 2023-11-26 [`17979d3`](https://github.com/nophead/NopSCADlib/commit/17979d320539ca861300ecd4e42c01a913861066 "show commit") [C.P.](# "Chris Palmer") Fixed typo in comment.
|
||||
|
||||
* 2023-10-30 [`73567ed`](https://github.com/nophead/NopSCADlib/commit/73567eda396214f1f882d62fb1d8a0ecbf2e7d94 "show commit") [C.P.](# "Chris Palmer") MULTIWATT11 package now generates a BOM entry.
|
||||
|
||||
* 2023-10-30 [`f5c74a8`](https://github.com/nophead/NopSCADlib/commit/f5c74a8561f1e76f331c2d0027ecfd34bb2e7f3b "show commit") [C.P.](# "Chris Palmer") Corrected gallery.
|
||||
|
||||
* 2023-10-30 [`04090b8`](https://github.com/nophead/NopSCADlib/commit/04090b816bfa3b6587cf6dcddbd54e5a94cb2420 "show commit") [C.P.](# "Chris Palmer") Updated the gallery.
|
||||
|
||||
* 2023-10-29 [`06d4918`](https://github.com/nophead/NopSCADlib/commit/06d49186300b03bf4699cefbbcef0c0b8f7e9caa "show commit") [C.P.](# "Chris Palmer") Updated examples.
|
||||
|
||||
### [v21.9.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.9.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.8.0...v21.9.0 "diff with v21.8.0")
|
||||
* 2023-10-29 [`2d091b9`](https://github.com/nophead/NopSCADlib/commit/2d091b9d16d33cf8b8751b2a436019c9032422a3 "show commit") [C.P.](# "Chris Palmer") Added a constructor function for PCBs.
|
||||
PCB text can now specify a colour.
|
||||
Added `SOT23_6,` `TSOT23_8` and CAP1210 SMD packages.
|
||||
Added ESP-201 Wifi Module PCB.
|
||||
Added ESP12F Wifi module.
|
||||
Added `tiny_buck` converter PCB.
|
||||
Made 2p54joiner a bit longer.
|
||||
Fixed SOIC gullwing shape.
|
||||
Added Wifi antennas.
|
||||
Added Yunpen filtered IEC mains inlet.
|
||||
Added power jack socket.
|
||||
Added right angle option for LEDs.
|
||||
Added `gear_motors`.
|
||||
Added 686ZZ and 696ZZ ball bearings.
|
||||
Added two larger box section tubes.
|
||||
Added right angle option to `square_buttons`. Doesn't draw the frame yet.
|
||||
Added multiwatt11 package for L6203.
|
||||
Added ONS9143A 13A mains socket.
|
||||
Added radial electrolytic capacitors.
|
||||
Added `LDE10_20B` PSU module.
|
||||
Added `screw_tearsink()` to make horizontal countersunk holes.
|
||||
Can now have solid tracks on veroboard.
|
||||
Added `veroboard_base()` module to make an STL for a base with spacers.
|
||||
Corrected M6 spring washer thickness.
|
||||
Can now specify the height of a solder meniscus.
|
||||
`slot()` now has a `center` option.
|
||||
Added `button_6mm_7` with a taller button.
|
||||
Added default fa, fs and fn constants used for drawing vitamins.
|
||||
These can be set via `$default_fa` and `$default_fs` that can also be set
|
||||
by environment variables: `NOPSCADLIB_DEFAULT_FA` and `NOPSCADLIB_DEFAULT_FS`.
|
||||
|
||||
### [v21.8.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.8.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.7.0...v21.8.0 "diff with v21.7.0")
|
||||
* 2023-07-28 [`74293b6`](https://github.com/nophead/NopSCADlib/commit/74293b6c22c51c326e2d541d1a68a1cd63659c2b "show commit") [C.](# "Chris") Added axial diodes, radial transistors, discs and modules.
|
||||
Verboard and perboard components get solder menisci added automatically.
|
||||
@@ -576,7 +644,7 @@ veroboard track cuts made slightly bigger.
|
||||
|
||||
* 2021-10-01 [`042d809`](https://github.com/nophead/NopSCADlib/commit/042d809ed056ba55c32f1d850b81dcf559fe9134 "show commit") [C.P.](# "Chris Palmer") Resistor and thermistor wires made more round.
|
||||
|
||||
* 2021-10-01 [`3864839`](https://github.com/nophead/NopSCADlib/commit/3864839e521eb64189cba8453ea8835d6ffadd75 "show commit") [C.P.](# "Chris Palmer") Fixed encoder breakout descripion typo.
|
||||
* 2021-10-01 [`3864839`](https://github.com/nophead/NopSCADlib/commit/3864839e521eb64189cba8453ea8835d6ffadd75 "show commit") [C.P.](# "Chris Palmer") Fixed encoder breakout description typo.
|
||||
|
||||
* 2021-10-01 [`2ba2c2c`](https://github.com/nophead/NopSCADlib/commit/2ba2c2c115d4ab6c2371c662a3e54d7c77aa7785 "show commit") [C.P.](# "Chris Palmer") Removed some unused dependencies.
|
||||
|
||||
@@ -597,7 +665,7 @@ Mainly text spacing changes.
|
||||
* 2021-09-27 [`9b5ec6a`](https://github.com/nophead/NopSCADlib/commit/9b5ec6af1aba313df6812a5313470ebb7e8fbdd7 "show commit") [C.P.](# "Chris Palmer") Fixed new `rounded_polygon` to work with last OpenSCAD release.
|
||||
Trailing commas in `let()`.
|
||||
|
||||
* 2021-09-27 [`50958b0`](https://github.com/nophead/NopSCADlib/commit/50958b064d5a6d5ca3fd6525a8c3d3a2c5b20199 "show commit") [C.P.](# "Chris Palmer") Added `$show_plugs` to show crude reprentations of housings on `pin_headers` and Molex KK headers.
|
||||
* 2021-09-27 [`50958b0`](https://github.com/nophead/NopSCADlib/commit/50958b064d5a6d5ca3fd6525a8c3d3a2c5b20199 "show commit") [C.P.](# "Chris Palmer") Added `$show_plugs` to show crude representations of housings on `pin_headers` and Molex KK headers.
|
||||
|
||||
* 2021-09-27 [`c37373c`](https://github.com/nophead/NopSCADlib/commit/c37373c920d3b438895ef535b0c06d0d00675609 "show commit") [C.P.](# "Chris Palmer") Added `TO247()` and `TO247_size()` to `component.scad`.
|
||||
|
||||
@@ -938,7 +1006,7 @@ Changelog updated.
|
||||
|
||||
* 2021-03-06 [`b83e567`](https://github.com/nophead/NopSCADlib/commit/b83e56713fbde2ac25e9750c369ae9cec4d67913 "show commit") [M.B.](# "Martin Budden") Reordered openscad command line parameters.
|
||||
|
||||
* 2021-03-04 [`da4f9fb`](https://github.com/nophead/NopSCADlib/commit/da4f9fbdc31d2ceaa853c2fa0270e6961fde28b9 "show commit") [C.P.](# "Chris Palmer") Typo in `changlog.py` doc string.
|
||||
* 2021-03-04 [`da4f9fb`](https://github.com/nophead/NopSCADlib/commit/da4f9fbdc31d2ceaa853c2fa0270e6961fde28b9 "show commit") [C.P.](# "Chris Palmer") Typo in `changelog.py` doc string.
|
||||
|
||||
* 2021-03-03 [`614e5f3`](https://github.com/nophead/NopSCADlib/commit/614e5f3a72db309a3dee996d7241317556883e8d "show commit") [C.P.](# "Chris Palmer") Issues in the changelog now link to to the issue.
|
||||
|
||||
@@ -1121,7 +1189,7 @@ Smaller PCBs closer together to make space.
|
||||
* 2021-01-15 [`7f9122a`](https://github.com/nophead/NopSCADlib/commit/7f9122ae662ab0bd660e5c2f5ab6c507797030da "show commit") [C.P.](# "Chris Palmer") Added `--hardwarnings` to `openscad.py`
|
||||
|
||||
### [v10.33.0](https://github.com/nophead/NopSCADlib/releases/tag/v10.33.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v10.32.0...v10.33.0 "diff with v10.32.0")
|
||||
* 2021-01-15 [`93b260b`](https://github.com/nophead/NopSCADlib/commit/93b260b7b9a016e2afe1ab7df22f5c0c8c906708 "show commit") [C.P.](# "Chris Palmer") Added `screw_length()` to calculuate screw lengths includin washers, inserts and nuts.
|
||||
* 2021-01-15 [`93b260b`](https://github.com/nophead/NopSCADlib/commit/93b260b7b9a016e2afe1ab7df22f5c0c8c906708 "show commit") [C.P.](# "Chris Palmer") Added `screw_length()` to calculate screw lengths includin washers, inserts and nuts.
|
||||
|
||||
### [v10.32.0](https://github.com/nophead/NopSCADlib/releases/tag/v10.32.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v10.31.1...v10.32.0 "diff with v10.31.1")
|
||||
* 2021-01-13 [`8fea8f4`](https://github.com/nophead/NopSCADlib/commit/8fea8f437b4c4efe1aecf24cf8ddb6c8f006cad2 "show commit") [C.P.](# "Chris Palmer") Updated images and readme for green terminals.
|
||||
@@ -1479,7 +1547,7 @@ Updated images and readme.
|
||||
|
||||
* 2020-11-13 [`0c9ae8d`](https://github.com/nophead/NopSCADlib/commit/0c9ae8d60c96d8c5b16adfce98081adc8e20b001 "show commit") [C.P.](# "Chris Palmer") PCBs now drawn before components so that transparent LEDs draw correctly.
|
||||
|
||||
* 2020-11-12 [`9a0bad4`](https://github.com/nophead/NopSCADlib/commit/9a0bad4e61acbd0ae27ef5c2d324d88deb7ee672 "show commit") [C.P.](# "Chris Palmer") Made stepper motor encap paramatric.
|
||||
* 2020-11-12 [`9a0bad4`](https://github.com/nophead/NopSCADlib/commit/9a0bad4e61acbd0ae27ef5c2d324d88deb7ee672 "show commit") [C.P.](# "Chris Palmer") Made stepper motor encap parametric.
|
||||
Made connector position based on encap height and added PCB.
|
||||
|
||||
* 2020-11-12 [`9004781`](https://github.com/nophead/NopSCADlib/commit/90047815b0189c628c96807785d0d93a4895d411 "show commit") [C.P.](# "Chris Palmer") Added JST PH connectors.
|
||||
@@ -1608,7 +1676,7 @@ Reduced J-Head inset.
|
||||
Removed J-Head MK4.
|
||||
|
||||
### [v9.2.0](https://github.com/nophead/NopSCADlib/releases/tag/v9.2.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v9.1.1...v9.2.0 "diff with v9.1.1")
|
||||
* 2020-08-13 [`2419d50`](https://github.com/nophead/NopSCADlib/commit/2419d5064182d63634183a5762c995d0bdfacf0a "show commit") [C.P.](# "Chris Palmer") Added more PTFE tube sizes and amde them whiter.
|
||||
* 2020-08-13 [`2419d50`](https://github.com/nophead/NopSCADlib/commit/2419d5064182d63634183a5762c995d0bdfacf0a "show commit") [C.P.](# "Chris Palmer") Added more PTFE tube sizes and made them whiter.
|
||||
|
||||
* 2020-08-13 [`02211c2`](https://github.com/nophead/NopSCADlib/commit/02211c20348ef4f134c0d3c734a5d922fe9a9a3c "show commit") [C.P.](# "Chris Palmer") Added `tubing_or()` and `center` option.
|
||||
|
||||
@@ -2143,7 +2211,7 @@ already included by other vitamins.
|
||||
|
||||
* 2020-02-24 [`065ec0a`](https://github.com/nophead/NopSCADlib/commit/065ec0a430da6c62cbd6d06b3de822e8a6751425 "show commit") [C.P.](# "Chris Palmer") Corrected nut placement
|
||||
|
||||
* 2020-02-24 [`e7eea05`](https://github.com/nophead/NopSCADlib/commit/e7eea0520c7e4bd20e505084d7c17a64a915ef75 "show commit") [C.P.](# "Chris Palmer") T nut thickness no longer includes the stem to simplyfy placement and screw
|
||||
* 2020-02-24 [`e7eea05`](https://github.com/nophead/NopSCADlib/commit/e7eea0520c7e4bd20e505084d7c17a64a915ef75 "show commit") [C.P.](# "Chris Palmer") T nut thickness no longer includes the stem to simplify placement and screw
|
||||
length calculations.
|
||||
|
||||
* 2020-02-24 [`5cb994b`](https://github.com/nophead/NopSCADlib/commit/5cb994b58b204a9f59d17001e4061aa5f60328bc "show commit") [C.P.](# "Chris Palmer") Retabulated nut table
|
||||
@@ -2363,7 +2431,7 @@ Both added to the insert test.
|
||||
|
||||
* 2019-08-18 [`e35fb69`](https://github.com/nophead/NopSCADlib/commit/e35fb695a21a42216b7f5b58c12b6bc5d3a43eff "show commit") [C.P.](# "Chris Palmer") Ziptie width added to BOM description.
|
||||
|
||||
* 2019-08-18 [`61bec65`](https://github.com/nophead/NopSCADlib/commit/61bec656d7d9328a6eb90ca003d5ae5888e5a18c "show commit") [C.P.](# "Chris Palmer") Fixed box header BOM descripion.
|
||||
* 2019-08-18 [`61bec65`](https://github.com/nophead/NopSCADlib/commit/61bec656d7d9328a6eb90ca003d5ae5888e5a18c "show commit") [C.P.](# "Chris Palmer") Fixed box header BOM description.
|
||||
|
||||
* 2019-08-18 [`854adab`](https://github.com/nophead/NopSCADlib/commit/854adab6650e7617588e2da821cd91fa97657eaa "show commit") [C.P.](# "Chris Palmer") Fix for Python 2
|
||||
|
||||
|
@@ -30,7 +30,7 @@ The `NopSCADlib/scripts` directory needs to be added to the executable search pa
|
||||
|
||||
Note that on Linux and OSX the full file name including the `.py` will be needed.
|
||||
|
||||
The installation can be tested by opening `NopSCADlib/libtest.scad` in the OpenSCAD GUI. It should render all the objects in the library in about 1 minute.
|
||||
The installation can be tested by opening `NopSCADlib/libtest.scad` in the OpenSCAD GUI. It should render all the objects in the library in about 2 minutes.
|
||||
|
||||
Running `tests` from the command line will run all the tests in the `tests` directory and build the `readme.md` catalog for GitHub and render it to `readme.html`
|
||||
for local preview.
|
||||
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 265 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 326 KiB After Width: | Height: | Size: 326 KiB |
Before Width: | Height: | Size: 337 KiB After Width: | Height: | Size: 336 KiB |
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 185 KiB |
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 234 KiB |
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 136 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB |
@@ -49,7 +49,7 @@
|
||||
},
|
||||
{
|
||||
"name": "fan_controller_assembly",
|
||||
"big": null,
|
||||
"big": true,
|
||||
"ngb": false,
|
||||
"zoomed": 0,
|
||||
"count": 1,
|
||||
|
@@ -127,7 +127,7 @@ Environmental monitor using Enviro+ sensor board and a Raspberry Pi Zero.
|
||||
|
||||
|
||||
### Assembly instructions
|
||||

|
||||

|
||||
|
||||
The fan controller is a single transistor wired as a Miller integrator that effectively multiplies the capacitor value by the gain of the transistor.
|
||||
It converts the PWM signal on GPI4 to a stead DC voltage so that the fan doesn't whine, or stutter.
|
||||
@@ -145,7 +145,7 @@ It converts the PWM signal on GPI4 to a stead DC voltage so that the fan doesn't
|
||||

|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
<span></span>
|
||||
[Top](#TOP)
|
||||
@@ -168,11 +168,11 @@ It converts the PWM signal on GPI4 to a stead DC voltage so that the fan doesn't
|
||||
|
||||
|
||||
### Assembly instructions
|
||||

|
||||

|
||||
|
||||
* Solder the fan_controller to the Enviro+ expansion connector at the 5V, GND and #4 pins.
|
||||
|
||||

|
||||

|
||||
|
||||
<span></span>
|
||||
[Top](#TOP)
|
||||
|
@@ -25,7 +25,7 @@ include <NopSCADlib/vitamins/fans.scad>
|
||||
use <NopSCADlib/vitamins/insert.scad>
|
||||
use <NopSCADlib/vitamins/veroboard.scad>
|
||||
use <NopSCADlib/utils/round.scad>
|
||||
use <NopSCADlib/utils/pcb.scad>
|
||||
use <NopSCADlib/utils/pcb_utils.scad>
|
||||
use <NopSCADlib/printed/foot.scad>
|
||||
use <NopSCADlib/printed/printed_box.scad>
|
||||
use <fan_controller.scad>
|
||||
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
BIN
gallery/Blinder.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
gallery/ClockSetter.png
Normal file
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 169 KiB |
Before Width: | Height: | Size: 259 KiB After Width: | Height: | Size: 259 KiB |
BIN
gallery/LED_box.png
Normal file
After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 287 KiB After Width: | Height: | Size: 287 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
BIN
gallery/MultiSwitch.png
Normal file
After Width: | Height: | Size: 188 KiB |
BIN
gallery/MultiSwitch2.png
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
gallery/PSU_tube.png
Normal file
After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 214 KiB |
BIN
gallery/PowerBank.png
Normal file
After Width: | Height: | Size: 282 KiB |
@@ -4,6 +4,18 @@ Arduino thermostat to control a beer fridge to use it as an environmental chambe
|
||||
|
||||

|
||||
|
||||
## Blinder
|
||||
|
||||
Tasmota roller blind open / close mechanism
|
||||
|
||||
|
||||

|
||||
|
||||
## ClockSetter
|
||||
An IOT device for programming UK wireless clocks that are out of reach of the UK MSF time signal but are on UK time, e.g. in Tenerife.
|
||||
|
||||

|
||||
|
||||
## EnviroPlus
|
||||
Environmental monitor using Enviro+ sensor board and a Raspberry Pi Zero.
|
||||
|
||||
@@ -19,7 +31,6 @@ Current state of HydraRaptor after being modified for laser engraving.
|
||||
|
||||

|
||||
|
||||
|
||||
## IOT 50V PSU
|
||||
WiFi controllable PSU
|
||||
|
||||
@@ -30,6 +41,11 @@ WiFi controllable programmable load
|
||||
|
||||

|
||||
|
||||
## LED Box
|
||||
Indicator LEDs used to debug a Bosch diswasher problem.
|
||||
|
||||

|
||||
|
||||
## Lab ATX PSU
|
||||
Bench power supply built around an ATX PSU.
|
||||
|
||||
@@ -70,16 +86,36 @@ Mains isolated and variable supply with metering.
|
||||
|
||||
|
||||
|
||||
## MultiSwitch
|
||||
Multi Tasmota switch to replace 5 Sonoffs
|
||||
|
||||

|
||||
|
||||
## MultiSwitch2
|
||||
Multi Tasmota switch to replace 5 Sonoffs
|
||||
|
||||

|
||||
|
||||
## PSU Cover
|
||||
A base and shroud to make PSU safe to sit on a desk
|
||||
|
||||

|
||||
|
||||
## PSU Tube
|
||||
12V power supply made in an aluminium tube for fire safety
|
||||
|
||||

|
||||
|
||||
## PotBox
|
||||
Potentiometer box with course and fine controls and three 4mm binding posts
|
||||
|
||||

|
||||
|
||||
## PowerBank
|
||||
LION powerbank with e-paper charge status display
|
||||
|
||||

|
||||
|
||||
## SunBot
|
||||
A solar tracker to keep a solar panel pointing at the sun.
|
||||
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 968 KiB After Width: | Height: | Size: 976 KiB |
@@ -482,7 +482,7 @@ cable_strip_y = sheets_y + 30;
|
||||
translate([0, transformers_y])
|
||||
servo_motors();
|
||||
|
||||
translate([x4 + 200, belts_y + 58]) {
|
||||
translate([x4 + 200 + 16, belts_y + 58]) {
|
||||
belt_test();
|
||||
|
||||
translate([0, 60])
|
||||
|
55
readme.md
@@ -437,10 +437,14 @@ Individual teeth are not drawn, instead they are represented by a lighter colour
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `belt(GT2x12, [ ... ])` | Belt GT2 x 12mm x 128mm |
|
||||
| 1 | `belt(GT2x6, [ ... ])` | Belt GT2 x 6mm x 128mm |
|
||||
| 1 | `belt(GT2x6, [ ... ])` | Belt GT2 x 6mm x 552mm |
|
||||
| 2 | `belt(GT2x6, [ ... ])` | Belt GT2 x 6mm x 556mm |
|
||||
| 1 | `belt(GT2x6, [ ... ])` | Belt GT2 x 6mm x 584mm |
|
||||
| 2 | `belt(GT2x6, [ ... ])` | Belt GT2 x 6mm x 588mm |
|
||||
| 1 | `belt(GT2x9, [ ... ])` | Belt GT2 x 9mm x 128mm |
|
||||
| 1 | `belt(GT3x12, [ ... ])` | Belt GT3 x 12mm x 128mm |
|
||||
| 1 | `belt(GT3x6, [ ... ])` | Belt GT3 x 6mm x 128mm |
|
||||
| 1 | `belt(GT3x9, [ ... ])` | Belt GT3 x 9mm x 128mm |
|
||||
| 1 | `belt(T2p5x6, [ ... ])` | Belt T2.5 x 6mm x 130mm |
|
||||
| 1 | `belt(T5x10, [ ... ])` | Belt T5 x 10mm x 130mm |
|
||||
| 1 | `belt(T5x6, [ ... ])` | Belt T5 x 6mm x 130mm |
|
||||
@@ -924,6 +928,7 @@ Various electronic components used in hot ends and heated beds.
|
||||
| 1 | `TO220("Generic TO220 package")` | Generic TO220 package |
|
||||
| 1 | `TO247("Generic TO247 package")` | Generic TO247 package |
|
||||
| 8 | `tubing(HSHRNK32)` | Heatshrink sleeving ID 3.2mm x 15mm |
|
||||
| 1 | `multiwatt11("L6203")` | MULTIWATT11 L6203 |
|
||||
| 1 | `resistor(RWM04106R80J)` | Resistor RWM04106R80J 6R8 3W vitreous enamel |
|
||||
| 1 | `resistor(RIE1212UB5C5R6)` | Resistor UB5C 5R6F 5R6 3W vitreous enamel |
|
||||
| 1 | `al_clad_resistor(THS10, 4.7)` | Resistor aluminium clad THS10 4.7 |
|
||||
@@ -1086,6 +1091,7 @@ LCD displays.
|
||||
| 1 | `display(HDMI5)` | HDMI display 5" |
|
||||
| 1 | `display(TFT128x160)` | LCD TFT ST7735 display 128x160 |
|
||||
| 1 | `display(LCD1602A)` | LCD display 1602A |
|
||||
| 1 | `display(LCD2004A)` | LCD display 2004A |
|
||||
| 1 | `display(LCDS7282B)` | LCD display S-7282B |
|
||||
| 1 | `display(SSD1963_4p3)` | LCD display SSD1963 4.3" |
|
||||
|
||||
@@ -1301,7 +1307,7 @@ Faston receptacles to mate with spade connectors
|
||||
| `faston_insul_crimp_l(type)` | Length of the insulation crimp |
|
||||
| `faston_insul_crimp_o(type)` | Offset of insulation crimp |
|
||||
| `faston_insul_crimp_p(type)` | Position of the tip of the insulation crimp |
|
||||
| `faston_size(type)` | Size of the receptical part |
|
||||
| `faston_size(type)` | Size of the receptacle part |
|
||||
| `faston_t(type)` | Thickness |
|
||||
| `faston_wall_h(type)` | Height of transition web wall |
|
||||
| `faston_width(type)` | Width of matching spade |
|
||||
@@ -2836,12 +2842,14 @@ 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 - not shown |
|
||||
| 1 | `pcb(Duex5)` | Duex5 expansion board |
|
||||
| 1 | `pcb(ESP-01)` | ESP-01 |
|
||||
| 1 | `pcb(ESP_01)` | ESP-01 |
|
||||
| 1 | `pcb(ESP_01M)` | ESP-01M WiFi module (ESP8285) |
|
||||
| 1 | `pcb(ESP_12F)` | ESP-12F ESP8266 WiFi module |
|
||||
| 1 | `pcb(ESP_201)` | ESP-201 ESP8266 WiFi module |
|
||||
| 1 | `pcb(ESP32_DOIT_V1)` | ESP32 DOIT DEV KIT V1 |
|
||||
| 1 | `pcb(EnviroPlus)` | Enviro+ |
|
||||
| 1 | `pcb(ExtruderPCB)` | Extruder connection PCB - not shown |
|
||||
| 1 | `pcb(HW803_1WAY_RELAY)` | HW-803 5V 1 way relay module |
|
||||
| 1 | `pcb(KY_040)` | KY-040 rotart encoder breakout |
|
||||
| 1 | `pcb(Keyes5p1)` | Keyes5.1 Arduino Uno expansion board - not shown |
|
||||
| 1 | `pcb(L9110S)` | L9110S 2-Channel motor driver module |
|
||||
@@ -2855,7 +2863,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 |
|
||||
| 43 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 47 | `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 |
|
||||
@@ -2878,14 +2886,17 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 8 | `screw(M2_cap_screw, 20)` | Screw M2 cap x 20mm |
|
||||
| 4 | `screw(M2_cap_screw, 25)` | Screw M2 cap x 25mm |
|
||||
| 2 | `screw(M2p5_cap_screw, 20)` | Screw M2.5 cap x 20mm |
|
||||
| 8 | `screw(M2p5_cap_screw, 25)` | Screw M2.5 cap x 25mm |
|
||||
| 4 | `screw(M2p5_cap_screw, 25)` | Screw M2.5 cap x 25mm |
|
||||
| 4 | `screw(M2p5_cap_screw, 30)` | Screw M2.5 cap x 30mm |
|
||||
| 12 | `screw(M2p5_cap_screw, 35)` | Screw M2.5 cap x 35mm |
|
||||
| 4 | `screw(M2p5_dome_screw, 25)` | Screw M2.5 dome x 25mm |
|
||||
| 4 | `screw(M2p5_pan_screw, 20)` | Screw M2.5 pan x 20mm |
|
||||
| 8 | `screw(M2p5_pan_screw, 30)` | Screw M2.5 pan x 30mm |
|
||||
| 19 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
|
||||
| 13 | `screw(M3_cap_screw, 20)` | Screw M3 cap x 20mm |
|
||||
| 11 | `screw(M3_cap_screw, 30)` | Screw M3 cap x 30mm |
|
||||
| 4 | `screw(M3_cap_screw, 25)` | Screw M3 cap x 25mm |
|
||||
| 8 | `screw(M3_cap_screw, 30)` | Screw M3 cap x 30mm |
|
||||
| 3 | `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 |
|
||||
| 1 | `pcb(XIAO)` | Seeeduino XIAO |
|
||||
@@ -2897,7 +2908,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 |
|
||||
| 43 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 47 | `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 |
|
||||
|
||||
@@ -2905,23 +2916,24 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| Qty | Filename |
|
||||
| ---:|:--- |
|
||||
| 4 | pcb_spacer20100.stl |
|
||||
| 4 | pcb_spacer20130.stl |
|
||||
| 4 | pcb_spacer20140.stl |
|
||||
| 4 | pcb_spacer2070.stl |
|
||||
| 4 | pcb_spacer2080.stl |
|
||||
| 4 | pcb_spacer2090.stl |
|
||||
| 4 | pcb_spacer25120.stl |
|
||||
| 4 | pcb_spacer25150.stl |
|
||||
| 2 | pcb_spacer25100.stl |
|
||||
| 4 | pcb_spacer25130.stl |
|
||||
| 4 | pcb_spacer25160.stl |
|
||||
| 4 | pcb_spacer25170_2.stl |
|
||||
| 4 | pcb_spacer25170.stl |
|
||||
| 4 | pcb_spacer25180_2.stl |
|
||||
| 4 | pcb_spacer25220.stl |
|
||||
| 4 | pcb_spacer25190_2.stl |
|
||||
| 4 | pcb_spacer25230.stl |
|
||||
| 4 | pcb_spacer25240.stl |
|
||||
| 4 | pcb_spacer25250.stl |
|
||||
| 4 | pcb_spacer2580.stl |
|
||||
| 2 | pcb_spacer2590.stl |
|
||||
| 4 | pcb_spacer30190.stl |
|
||||
| 4 | pcb_spacer30120.stl |
|
||||
| 4 | pcb_spacer30200.stl |
|
||||
| 3 | pcb_spacer30210.stl |
|
||||
| 4 | pcb_spacer30210.stl |
|
||||
| 3 | pcb_spacer30220.stl |
|
||||
| 10 | pcb_spacer3050.stl |
|
||||
| 9 | pcb_spacer3060.stl |
|
||||
| 9 | pcb_spacer3070.stl |
|
||||
@@ -3748,6 +3760,7 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `screw_angle(type, length, nut_distance)` | How much to rotate the screw to align it with a nut at the specified `distance` from the head |
|
||||
| `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_insert(screw, short = false, i = 0)` | Find insert to fit specified screw, defaults to longest but can specify the shortest |
|
||||
@@ -3756,6 +3769,7 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
| `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 the length of the longest screw shorter than or equal to x |
|
||||
| `screw_thread_radius(type)` | Thread radius |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
@@ -4004,6 +4018,8 @@ When woven sheets (e.g. carbon fibre) are rendered it is necessary to specify th
|
||||
| 1 | `sheet(MDF10, 30, 30, 2)` | Sheet MDF 30mm x 30mm x 10mm |
|
||||
| 1 | `sheet(MDF12, 30, 30, 2)` | Sheet MDF 30mm x 30mm x 12mm |
|
||||
| 1 | `sheet(MDF19, 30, 30, 2)` | Sheet MDF 30mm x 30mm x 19mm |
|
||||
| 1 | `sheet(MDF22, 30, 30, 2)` | Sheet MDF 30mm x 30mm x 22mm |
|
||||
| 1 | `sheet(MDF3, 30, 30, 2)` | Sheet MDF 30mm x 30mm x 3mm |
|
||||
| 1 | `sheet(MDF6, 30, 30, 2)` | Sheet MDF 30mm x 30mm x 6mm |
|
||||
| 1 | `sheet(PMMA1p25, 30, 30, 2)` | Sheet acrylic 30mm x 30mm x 1.25mm |
|
||||
| 1 | `sheet(PMMA10, 30, 30, 2)` | Sheet acrylic 30mm x 30mm x 10mm |
|
||||
@@ -7428,7 +7444,7 @@ This is to prevent the global BOM page becoming too wide in large projects by ha
|
||||
The example below shows how to define a vitamin and incorporate it into an assembly with sub-assemblies and make an exploded view.
|
||||
The resulting flat BOM is shown but hierarchical BOMs are also generated for real projects.
|
||||
|
||||
If the code to make an STL or DXF is made a child of the `stl()` or `dxf()` module then the STL or DXF will be used in the assembly views generated by `views.py` instead of generating
|
||||
If the code to make an STL, DXF or SVG is made a child of the `stl()`, `dxf()` or `svg()` module then the STL, DXF or SVG will be used in the assembly views generated by `views.py` instead of generating
|
||||
it with code.
|
||||
This can speed up the generation of the build instructions greatly but isn't compatible with STLs that include support structures.
|
||||
|
||||
@@ -7467,8 +7483,10 @@ The `pose()` module allows assembly views in the readme to be posed differently
|
||||
| `pose_vflip(exploded = undef)` | Pose an STL or assembly for rendering to png by flipping around the X axis, `exploded = true for` just the exploded view or `false` for unexploded only. |
|
||||
| `stl(name)` | Name an stl that will appear on the BOM, there needs to a module named `<name>_stl` to make it |
|
||||
| `stl_colour(colour = pp1_colour, alpha = 1)` | Colour an stl where it is placed in an assembly. `alpha` can be used to make it appear transparent. |
|
||||
| `svg(name)` | Name an svg that will appear on the BOM, there needs to a module named `<name>_svg` to make it |
|
||||
| `use_dxf(name)` | Import a DXF to make a build panel |
|
||||
| `use_stl(name)` | Import an STL to make a build platter |
|
||||
| `use_svg(name)` | Import an SVG to make a build panel |
|
||||
| `vitamin(description)` | Describe a vitamin for the BOM entry and precede it with a module call that creates it, eg. "widget(42): Widget size 42" |
|
||||
|
||||

|
||||
@@ -7479,6 +7497,8 @@ The `pose()` module allows assembly views in the readme to be posed differently
|
||||
| 1 | `insert(F1BM3)` | Heatfit insert M3 x 5.8mm |
|
||||
| 1 | `widget(3)` | Rivet like thing for 3mm sheets |
|
||||
| 1 | `screw(M3_cap_screw, 8)` | Screw M3 cap x 8mm |
|
||||
| 4 | `screw(M3_cap_screw, 10)` | Screw M3 cap x 10mm |
|
||||
| 1 | `sheet(MDF6, 40, 40)` | Sheet MDF 40mm x 40mm x 6mm |
|
||||
| 1 | `sheet(PMMA3, 20, 20, 1)` | Sheet acrylic 20mm x 20mm x 3mm |
|
||||
| 1 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 1 | `star_washer(M3_washer)` | Washer star M3 x 0.5mm |
|
||||
@@ -7491,6 +7511,7 @@ The `pose()` module allows assembly views in the readme to be posed differently
|
||||
### Routed
|
||||
| Qty | Filename |
|
||||
| ---:|:--- |
|
||||
| 1 | mdf.svg |
|
||||
| 1 | widget.dxf |
|
||||
|
||||
### Assemblies
|
||||
|
@@ -104,14 +104,14 @@ class BOM:
|
||||
|
||||
def add_part(self, s):
|
||||
args = []
|
||||
match = re.match(r'^(.*?\.stl|.*?\.dxf)\((.*)\)$', s) #look for name.stl(...) or name.dxf(...)
|
||||
match = re.match(r'^(.*?\.stl|.*?\.dxf|.*?\.svg)\((.*)\)$', s) #look for name.stl(...), name.dxf(...) or name.svg(...)
|
||||
if match:
|
||||
s = match.group(1)
|
||||
args = [match.group(2)]
|
||||
if s[-4:] == ".stl":
|
||||
parts = self.printed
|
||||
else:
|
||||
if s[-4:] == ".dxf":
|
||||
if s[-4:] == ".dxf" or s[-4:] == ".svg":
|
||||
parts = self.routed
|
||||
else:
|
||||
parts = self.vitamins
|
||||
|
@@ -35,7 +35,7 @@ def read_deps(dname):
|
||||
for line in lines:
|
||||
if line.startswith('\t'):
|
||||
dep = line[1 : -1].rstrip(' \\').replace('\\ ', ' ')
|
||||
if not os.path.basename(dep) in ['stl.scad', 'dxf.scad', 'svf.scad', 'png.scad', 'target.scad']:
|
||||
if not os.path.basename(dep) in ['stl.scad', 'dxf.scad', 'svg.scad', 'png.scad', 'target.scad']:
|
||||
deps.append(dep)
|
||||
return deps
|
||||
|
||||
|
@@ -39,7 +39,7 @@ def bom_to_parts(bom_dir, part_type, assembly = None):
|
||||
#
|
||||
part_files = []
|
||||
bom = assembly + '.txt' if assembly else "bom.txt"
|
||||
suffix = ".dxf" if part_type == 'svg' else '.' + part_type
|
||||
suffix = '.' + part_type
|
||||
with open(bom_dir + '/' + bom, "rt") as f:
|
||||
for line in f.readlines():
|
||||
words = line.split()
|
||||
@@ -106,7 +106,7 @@ def make_parts(target, part_type, parts = None):
|
||||
#
|
||||
# Find all the scad files
|
||||
#
|
||||
module_suffix = '_dxf' if part_type == 'svg' else '_' + part_type
|
||||
module_suffix = '_' + part_type
|
||||
for dir in source_dirs(bom_dir):
|
||||
if targets and os.path.isdir(dir):
|
||||
for filename in os.listdir(dir):
|
||||
@@ -141,7 +141,7 @@ def make_parts(target, part_type, parts = None):
|
||||
with open(part_maker_name, "w") as f:
|
||||
f.write("include <NopSCADlib/global_defs.scad>\n")
|
||||
f.write("use <%s/%s>\n" % (reltmp(dir, target), filename))
|
||||
f.write("%s();\n" % module);
|
||||
f.write("%s();\n" % module)
|
||||
t = time.time()
|
||||
openscad.run("-o", part_file, part_maker_name, "-D$bom=1", "-d", dname)
|
||||
times.add_time(part, t)
|
||||
|
@@ -39,7 +39,7 @@ if __name__ == '__main__':
|
||||
target = None if len(sys.argv) == 1 else sys.argv[1]
|
||||
set_config(target, usage)
|
||||
boms(target)
|
||||
for part in ['stl', 'dxf']:
|
||||
for part in ['stl', 'dxf', 'svg']:
|
||||
make_parts(target, part)
|
||||
render(target, part)
|
||||
plateup(target, part)
|
||||
|
@@ -31,8 +31,8 @@ import re
|
||||
import time
|
||||
import times
|
||||
|
||||
source_dirs = { "stl" : "platters", "dxf" : "panels" }
|
||||
target_dirs = { "stl" : "printed", "dxf" : "routed" }
|
||||
source_dirs = { "stl" : "platters", "dxf" : "panels", "svg" : "panels" }
|
||||
target_dirs = { "stl" : "printed", "dxf" : "routed", "svg" : "routed" }
|
||||
|
||||
def plateup(target, part_type, usage = None):
|
||||
#
|
||||
|
@@ -33,7 +33,7 @@ import json
|
||||
from tmpdir import *
|
||||
|
||||
def usage():
|
||||
print("\nusage:\n\trender [target_config] - Render images of the stl and dxf files.");
|
||||
print("\nusage:\n\trender [target_config] - Render images of the stl, dxf and svg files.");
|
||||
sys.exit(1)
|
||||
|
||||
def render(target, type):
|
||||
@@ -57,7 +57,7 @@ def render(target, type):
|
||||
with open(bom_file) as json_file:
|
||||
flat_bom = json.load(json_file)
|
||||
|
||||
things = { 'stl' : 'printed', 'dxf' : 'routed' }[type]
|
||||
things = { 'stl' : 'printed', 'dxf' : 'routed', 'svg' : 'routed' }[type]
|
||||
colours = {}
|
||||
for ass in flat_bom:
|
||||
for part in ass[things]:
|
||||
@@ -112,3 +112,4 @@ if __name__ == '__main__':
|
||||
target = sys.argv[1] if len(sys.argv) > 1 else None
|
||||
render(target, 'stl')
|
||||
render(target, 'dxf')
|
||||
render(target, 'svg')
|
||||
|
@@ -374,7 +374,12 @@ def views(target, do_assemblies = None):
|
||||
print('\n|%s' % ('---|' * n), file = doc_file)
|
||||
for j in range(n):
|
||||
part = keys[i - n + j + 1]
|
||||
print('|  %s' % (part, part.replace('.dxf','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
||||
if (part[-4:] == ".dxf"):
|
||||
print('|  %s' % (part, part.replace('.dxf','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
||||
elif (part[-4:] == ".svg"):
|
||||
print('|  %s' % (part, part.replace('.svg','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
||||
else:
|
||||
print("Unkown file type ", part[-4:], " for file ", part)
|
||||
print('\n', file = doc_file)
|
||||
print('\n', file = doc_file)
|
||||
|
||||
|
@@ -25,11 +25,11 @@ include <../core.scad>
|
||||
include <../vitamins/sheets.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
screw = M3_cap_screw;
|
||||
screwM3 = M3_cap_screw;
|
||||
sheet = PMMA3;
|
||||
height = 10;
|
||||
|
||||
insert = screw_insert(screw);
|
||||
insert = screw_insert(screwM3);
|
||||
|
||||
module widget(thickness) {
|
||||
vitamin(str("widget(", thickness, "): Rivet like thing for ", thickness, "mm sheets"));
|
||||
@@ -46,7 +46,13 @@ module widget(thickness) {
|
||||
module widget_stl() {
|
||||
stl("widget")
|
||||
union() {
|
||||
rounded_rectangle([30, 30, 3], 2, true);
|
||||
difference() {
|
||||
rounded_rectangle([30, 30, 3], 2, true);
|
||||
for(x = [-10,10])
|
||||
for (y=[-10,10])
|
||||
translate([x,y,-1.5])
|
||||
cylinder(r=2, h=3.5);
|
||||
}
|
||||
|
||||
render() insert_boss(insert, height, 2.2);
|
||||
}
|
||||
@@ -57,7 +63,18 @@ module widget_dxf() {
|
||||
difference() {
|
||||
sheet_2D(sheet, 20, 20, 1);
|
||||
|
||||
drill(screw_clearance_radius(screw), 0);
|
||||
drill(screw_clearance_radius(screwM3), 0);
|
||||
}
|
||||
}
|
||||
|
||||
module mdf_svg() {
|
||||
svg("mdf")
|
||||
difference() {
|
||||
sheet_2D(MDF6, 40,40);
|
||||
for(x = [-10,10])
|
||||
for (y=[-10,10])
|
||||
translate([x,y,0])
|
||||
drill(screw_clearance_radius(screwM3), 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,11 +102,23 @@ assembly("widget_top") {
|
||||
module widget_assembly()
|
||||
assembly("widget") {
|
||||
|
||||
widget_base_assembly(); // Note this is not exploded because it is sub-assembly
|
||||
translate_z(-6) {
|
||||
render_2D_sheet(MDF6)
|
||||
mdf_svg();
|
||||
|
||||
explode(0)
|
||||
for(x = [-10,10])
|
||||
for (y=[-10,10])
|
||||
translate([x,y,-10])
|
||||
screw(screwM3, 10);
|
||||
}
|
||||
|
||||
explode(3)
|
||||
widget_base_assembly(); // Note this is not exploded because it is sub-assembly
|
||||
|
||||
translate_z(height) {
|
||||
translate_z(sheet_thickness(sheet))
|
||||
screw_and_washer(screw, screw_length(screw, sheet_thickness(sheet) + 3, 2, longer = true), true);
|
||||
screw_and_washer(screwM3, screw_length(screwM3, sheet_thickness(sheet) + 3, 2, longer = true), true);
|
||||
|
||||
explode(5)
|
||||
translate_z(sheet_thickness(sheet) / 2 + eps)
|
||||
|
@@ -21,14 +21,20 @@ include <../core.scad>
|
||||
include <../vitamins/pulleys.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <../utils/layout.scad>
|
||||
use <../utils/maths.scad>
|
||||
|
||||
module belt_test() {
|
||||
p2 = [-75, -50];
|
||||
p3 = [-75, 100];
|
||||
p4 = [ 75, 100];
|
||||
widths = [for(b = belts) belt_width(b)];
|
||||
gap = 5;
|
||||
belts_width = sumv(widths) + (len(belts) - 1) * gap;
|
||||
width = belts_width + 50;
|
||||
|
||||
p5 = [ 75 + pulley_pr(GT2x20ob_pulley) - pulley_pr(GT2x16_plain_idler), +pulley_pr(GT2x16_plain_idler)];
|
||||
p6 = [-75 + pulley_pr(GT2x20ob_pulley) + pulley_pr(GT2x16_plain_idler), -pulley_pr(GT2x16_plain_idler)];
|
||||
p2 = [-width / 2, -50];
|
||||
p3 = [-width / 2, 100];
|
||||
p4 = [ width / 2, 100];
|
||||
|
||||
p5 = [ width / 2 + pulley_pr(GT2x20ob_pulley) - pulley_pr(GT2x16_plain_idler), +pulley_pr(GT2x16_plain_idler)];
|
||||
p6 = [-width / 2 + pulley_pr(GT2x20ob_pulley) + pulley_pr(GT2x16_plain_idler), -pulley_pr(GT2x16_plain_idler)];
|
||||
|
||||
module pulleys(flip = false) {
|
||||
translate(p2) rotate([0, flip ? 180 : 0, 0]) pulley_assembly(GT2x20ob_pulley);
|
||||
@@ -70,15 +76,15 @@ module belt_test() {
|
||||
pulleys(flip=true);
|
||||
}
|
||||
|
||||
translate([-25, 0, 10])
|
||||
layout([for(b = belts) belt_width(b)], 10)
|
||||
translate([-belts_width / 2, 0, 10])
|
||||
layout(widths, gap)
|
||||
rotate([0, 90, 0])
|
||||
belt(belts[$i], [[0, 0, 20], [0, 1, 20]], belt_colour = $i%2==0 ? grey(90) : grey(20), tooth_colour = $i%2==0 ? grey(70) : grey(50));
|
||||
|
||||
// new example with open loop - this is a simplified example of the style used for example for the BLV 3D printer
|
||||
pulley = GT2x20ob_pulley;
|
||||
idler = GT2x16_plain_idler;
|
||||
corners = [[-75,-50],[75,100]];
|
||||
corners = [[-width / 2,-50],[width / 2,100]];
|
||||
carriagepos = [0,0];
|
||||
carriagew = 80;
|
||||
|
||||
@@ -94,7 +100,7 @@ module belt_test() {
|
||||
translate_z(-30) {
|
||||
belt(belt, points, open=true, auto_twist=true);
|
||||
for (p = points)
|
||||
if (is_list(p.z))
|
||||
if(is_list(p.z))
|
||||
translate([p.x, p.y, 0])
|
||||
pulley_assembly(p.z);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 274 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 177 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 197 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 250 KiB After Width: | Height: | Size: 244 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 169 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 136 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |