Compare commits
167 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 | ||
|
3830836519 | ||
|
9c5014b73d | ||
|
5c289bb7f5 | ||
|
3211fe1f19 | ||
|
c8f1b808cf | ||
|
917f404c59 | ||
|
99ff256847 | ||
|
3d370ccf72 | ||
|
bd94182ff1 | ||
|
86df9a34d6 | ||
|
9758112e05 | ||
|
b46f49a5ce | ||
|
330c09f4d4 | ||
|
c2a56367eb | ||
|
f16dc84792 | ||
|
c065855b90 | ||
|
edc7e17437 | ||
|
7546203b03 | ||
|
a9b501a2d2 | ||
|
126343d5af | ||
|
1692fcc811 | ||
|
5c4fe8bfb9 | ||
|
33ac3820b0 | ||
|
6a58d37f77 | ||
|
029abc0cf8 | ||
|
4b018eb9ad | ||
|
3715585002 | ||
|
5d0eda87e4 | ||
|
ad963afb8d | ||
|
dbf8e6c7ae | ||
|
7d281cbcdd | ||
|
f1a651a2d2 | ||
|
9f9aa6723e | ||
|
83d2d511e3 | ||
|
6b6704b823 | ||
|
946a3bea1c | ||
|
117fb626e7 | ||
|
0382bad566 | ||
|
b572325a8f | ||
|
6dc82045ff | ||
|
fdbe0c7a9e | ||
|
9c7e8a99c7 | ||
|
c50f95a203 | ||
|
49bd6e0a04 | ||
|
921843cc09 | ||
|
c17cc1321b | ||
|
9862b3c3a3 | ||
|
e87e19aa18 | ||
|
4f68935b5b | ||
|
8992cce7a6 | ||
|
106666ec49 | ||
|
f731f0fe98 | ||
|
3a62198183 | ||
|
0123885711 | ||
|
b166ec47dd | ||
|
6467de5fac | ||
|
dc683ed701 | ||
|
99d6c2f891 | ||
|
fc49e8068e | ||
|
862357279a | ||
|
0b8ad93dc5 | ||
|
38890400ac | ||
|
9974c03fc9 | ||
|
0208965684 | ||
|
11e0cfcb43 | ||
|
6c4d5de350 | ||
|
8458e432fc | ||
|
7503e8c2cf | ||
|
0154b2a32c | ||
|
0b802187bb | ||
|
923c3b5c57 | ||
|
e11bb72814 | ||
|
70fd7fbe14 | ||
|
45e7962721 | ||
|
4d8911718c | ||
|
cb57b25b0b | ||
|
6deaa5da9c | ||
|
9820d3eb10 | ||
|
066242af58 | ||
|
4b3468f78d | ||
|
001ea2a174 | ||
|
8e9d2dd367 | ||
|
f4a7065e1f | ||
|
5ec0c6132d | ||
|
cef7560947 | ||
|
7ffff8b7b7 | ||
|
e001cc46a3 | ||
|
7b421570b4 | ||
|
49ba60f159 | ||
|
0989a02d95 | ||
|
9e45dbad04 | ||
|
8cdc04b87b | ||
|
f65fe59831 | ||
|
5761368e56 | ||
|
e949ef4ecb | ||
|
932c68a2c0 | ||
|
78e3360900 | ||
|
178f67f815 | ||
|
af1b057f59 | ||
|
195917a879 | ||
|
9ed6aab6c8 | ||
|
c61386caf9 | ||
|
a90eb42933 | ||
|
549dbc9380 | ||
|
a483494da9 | ||
|
afc50ffe5d | ||
|
8951b8b60e | ||
|
c33d954db6 | ||
|
8fb7ec0213 | ||
|
402fb83690 | ||
|
eb0ba21622 | ||
|
e4b1b686ff | ||
|
f6a371769d | ||
|
6eba75a41d | ||
|
c484ac2e8d | ||
|
f12ac7b569 | ||
|
cfc3b483e0 | ||
|
6da845215b | ||
|
7fe5aaac22 | ||
|
983511b906 | ||
|
4df5d608a2 | ||
|
4f073f97e8 | ||
|
f03e32cd1e | ||
|
fe3ce88086 | ||
|
37fe83e2e0 | ||
|
c7803ad935 | ||
|
472df8e369 | ||
|
bc7f294f99 | ||
|
e9292d9165 | ||
|
f86dfef919 | ||
|
e97f9fdacc | ||
|
ba45f85580 | ||
|
90fb9eb01f | ||
|
905fc01677 | ||
|
a695974ac5 | ||
|
a974e4fa9d | ||
|
dc1c3f1d5e | ||
|
07866f7284 | ||
|
ad74378e7e | ||
|
53d1ea93cd | ||
|
7eaca85e96 |
1
.gitignore
vendored
@@ -12,3 +12,4 @@ times.txt
|
||||
*_diff.png
|
||||
*.echo
|
||||
cmd_times.txt
|
||||
*.gco
|
||||
|
246
CHANGELOG.md
@@ -3,6 +3,252 @@
|
||||
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.
|
||||
|
||||
* 2025-04-15 [`86df9a3`](https://github.com/nophead/NopSCADlib/commit/86df9a34d641511a84026eaf0b3191437e4692be "show commit") [C.P.](# "Chris Palmer") Added chamfer test file.
|
||||
|
||||
* 2025-04-15 [`9758112`](https://github.com/nophead/NopSCADlib/commit/9758112e05d02c9cf156828ecd47b7770b602628 "show commit") [C.P.](# "Chris Palmer") Added `chamfer_hole()` utility module.
|
||||
|
||||
#### [v21.37.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.37.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.37.0...v21.37.1 "diff with v21.37.0")
|
||||
* 2025-04-14 [`7546203`](https://github.com/nophead/NopSCADlib/commit/7546203b0377930a75a45e2943af296dc1758dca "show commit") [R.S.](# "Robert Schiele") positional parameters should not follow named parameters
|
||||
|
||||
* Some versions of OpenSCAD (like the latest official release `2021.01` get
|
||||
confused if positional parameters follow named parameters. So let's use
|
||||
named parameters after the first named one was used.
|
||||
|
||||
### [v21.37.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.37.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.36.0...v21.37.0 "diff with v21.36.0")
|
||||
* 2025-04-15 [`edc7e17`](https://github.com/nophead/NopSCADlib/commit/edc7e174370ac8dcd6d4a78b31640347ab266f60 "show commit") [C.P.](# "Chris Palmer") Included `pcbs.scad` in `displays.scad`.
|
||||
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
|
||||
|
||||
* 2025-04-11 [`1692fcc`](https://github.com/nophead/NopSCADlib/commit/1692fcc8116c9a0926231a95d0207a0085c814c5 "show commit") [P.](# "pcremades") Added `1/4"` square trimpot to `pcb.scad`
|
||||
|
||||
### [v21.36.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.36.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.35.6...v21.36.0 "diff with v21.35.6")
|
||||
* 2025-04-09 [`33ac382`](https://github.com/nophead/NopSCADlib/commit/33ac3820b0df87df05d7c2dbb3d553e2aafa6828 "show commit") [C.P.](# "Chris Palmer") Added `pose_stl()` module because `pose()` only works for assembly views.
|
||||
|
||||
#### [v21.35.6](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.6 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.35.5...v21.35.6 "diff with v21.35.5")
|
||||
* 2025-03-30 [`5d0eda8`](https://github.com/nophead/NopSCADlib/commit/5d0eda87e44a70fdbed51407a43555a637e064f9 "show commit") [D.T.](# "Daniel Trnka") `barrel_jack:` added cutout
|
||||
|
||||
#### [v21.35.5](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.5 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.35.4...v21.35.5 "diff with v21.35.4")
|
||||
* 2025-04-01 [`3715585`](https://github.com/nophead/NopSCADlib/commit/3715585002ba56681103103faddd043b1553d095 "show commit") [C.P.](# "Chris Palmer") Made `pose()` work on STL renders to match the documentation.
|
||||
|
||||
#### [v21.35.4](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.4 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.35.3...v21.35.4 "diff with v21.35.3")
|
||||
* 2025-03-23 [`fdbe0c7`](https://github.com/nophead/NopSCADlib/commit/fdbe0c7a9eba96823683b8e1161bc160bd63231e "show commit") [J.R.](# "Jeroen Roos") Change variable names that start with a digit
|
||||
|
||||
* Change names of variables from `2a` and `2c` to `ax2` (a times 2) and
|
||||
`cx2`, because variable names starting with a digit are deprecated in
|
||||
OpenSCAD.
|
||||
|
||||
#### [v21.35.3](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.3 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.35.2...v21.35.3 "diff with v21.35.2")
|
||||
* 2025-03-27 [`9f9aa67`](https://github.com/nophead/NopSCADlib/commit/9f9aa6723eff9b7439e17758406e9f8e409828ee "show commit") [C.P.](# "Chris Palmer") Third attempt to fix dimension image.
|
||||
|
||||
#### [v21.35.2](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.35.1...v21.35.2 "diff with v21.35.1")
|
||||
* 2025-03-27 [`6b6704b`](https://github.com/nophead/NopSCADlib/commit/6b6704b823291119697bf4993eddb3f2e6873875 "show commit") [C.P.](# "Chris Palmer") Second attempt to fix dimension image.
|
||||
|
||||
#### [v21.35.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.35.0...v21.35.1 "diff with v21.35.0")
|
||||
* 2025-03-27 [`117fb62`](https://github.com/nophead/NopSCADlib/commit/117fb626e7023ca92339947a0f84a8aee5c6429e "show commit") [C.P.](# "Chris Palmer") Fixed dimension example image address.
|
||||
|
||||
### [v21.35.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.35.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.34.0...v21.35.0 "diff with v21.34.0")
|
||||
* 2025-03-27 [`6dc8204`](https://github.com/nophead/NopSCADlib/commit/6dc82045fffeca383381724abb6d70d7025b2ae5 "show commit") [C.P.](# "Chris Palmer") Shortened the module comments by factoring out the parameter descriptions.
|
||||
Added the nut example picture.
|
||||
Fixed nut picture placement.
|
||||
Updated images and readme.
|
||||
|
||||
* 2025-03-22 [`c50f95a`](https://github.com/nophead/NopSCADlib/commit/c50f95a203ead9070407fbae7d1247a00938b255 "show commit") [A.V.](# "Alex Verschoot") added some documentation to the nut
|
||||
|
||||
* 2025-03-22 [`49bd6e0`](https://github.com/nophead/NopSCADlib/commit/49bd6e0a04885cf5cad7655aee038e16dc0a7e15 "show commit") [A.V.](# "Alex Verschoot") added negative offsets to test
|
||||
|
||||
* 2025-03-22 [`921843c`](https://github.com/nophead/NopSCADlib/commit/921843cc09e7ae2953090c30e7d5b9c644e3b966 "show commit") [A.V.](# "Alex Verschoot") made negative offset work as expected (go to the opposite side, and use min instead of max on coordinates)
|
||||
|
||||
* 2025-03-19 [`c17cc13`](https://github.com/nophead/NopSCADlib/commit/c17cc1321bcd06af439519435734f6e0eb8f5d43 "show commit") [A.V.](# "Alex Verschoot") Changed the module comments style
|
||||
|
||||
* 2025-03-16 [`9862b3c`](https://github.com/nophead/NopSCADlib/commit/9862b3c3a347fac5bb355b1d62a02bdc0970221b "show commit") [A.V.](# "Alex Verschoot") typos
|
||||
|
||||
* 2025-03-16 [`e87e19a`](https://github.com/nophead/NopSCADlib/commit/e87e19aa182acee64e3d47c282c81b7ef495bf81 "show commit") [A.V.](# "Alex Verschoot") removed `center` from experiment
|
||||
|
||||
* 2025-03-16 [`4f68935`](https://github.com/nophead/NopSCADlib/commit/4f68935b5b56b7405eb6c1e0fae5845e8f800489 "show commit") [A.V.](# "Alex Verschoot") some cleanup
|
||||
|
||||
* 2025-03-15 [`8992cce`](https://github.com/nophead/NopSCADlib/commit/8992cce7a62d2fec956aae64236ba19dc340603f "show commit") [A.V.](# "Alex Verschoot") added argument for text size, and improve auto size
|
||||
|
||||
* 2025-03-15 [`106666e`](https://github.com/nophead/NopSCADlib/commit/106666ec493f6b088ee398b276e8734d0790a451 "show commit") [A.V.](# "Alex Verschoot") simplified the math to use rotates instead, added examples, and allowed the user to choose witch plane the x,y and z dimensions are in
|
||||
|
||||
* 2025-03-13 [`f731f0f`](https://github.com/nophead/NopSCADlib/commit/f731f0fe98a3a3d975c34cd85ac4f618c2f1bf6b "show commit") [A.V.](# "Alex Verschoot") added a function to rotate around the dim axis
|
||||
|
||||
* 2025-03-13 [`3a62198`](https://github.com/nophead/NopSCADlib/commit/3a62198183b6a1dce74479ae44e00b4d5e690431 "show commit") [A.V.](# "Alex Verschoot") replaced the new math functions with rotate and transform
|
||||
|
||||
* 2025-03-07 [`0123885`](https://github.com/nophead/NopSCADlib/commit/012388571185c674293ba17de39e0db59a775ff4 "show commit") [A.V.](# "Alex Verschoot") Improved text alligment
|
||||
|
||||
* 2025-03-02 [`b166ec4`](https://github.com/nophead/NopSCADlib/commit/b166ec47dd7e34e6798c1287d0ce8612a84e9be1 "show commit") [A.V.](# "Alex Verschoot") Remove old commented code from `dimension.scad`
|
||||
|
||||
* 2025-03-02 [`6467de5`](https://github.com/nophead/NopSCADlib/commit/6467de5facdc2a5b6ccdbdbe32f703ba3faa70f4 "show commit") [A.V.](# "Alex Verschoot") Update `maths.scad`
|
||||
|
||||
* 2025-03-02 [`dc683ed`](https://github.com/nophead/NopSCADlib/commit/dc683ed701b016a1c79800db2ed41aed9cf8cac6 "show commit") [A.V.](# "Alex Verschoot") added dimensions
|
||||
|
||||
### [v21.34.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.34.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.33.0...v21.34.0 "diff with v21.33.0")
|
||||
* 2025-02-22 [`8623572`](https://github.com/nophead/NopSCADlib/commit/862357279a98c9511e2db166585065c660eb331d "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2025-02-16 [`0b8ad93`](https://github.com/nophead/NopSCADlib/commit/0b8ad93dc5c1ed89c6525e846c02f756bfbe9b2b "show commit") [A.V.](# "Alex Verschoot") made the test cases work with the motor in the back
|
||||
|
||||
* 2025-02-16 [`3889040`](https://github.com/nophead/NopSCADlib/commit/38890400ac03c64635674412e621236ab28f0314 "show commit") [A.V.](# "Alex Verschoot") added new test cases for motor in the back
|
||||
|
||||
* 2025-02-15 [`9974c03`](https://github.com/nophead/NopSCADlib/commit/9974c03fc9c1ca0f67ce27fa5ea5f69c94d416ba "show commit") [A.V.](# "Alex Verschoot") improved the comments
|
||||
|
||||
* 2025-02-15 [`0208965`](https://github.com/nophead/NopSCADlib/commit/0208965684441bb2022fe2b513aa8ee28ce22f41 "show commit") [A.V.](# "Alex Verschoot") added an option to emplace the motor in the back
|
||||
|
||||
### [v21.33.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.33.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.32.1...v21.33.0 "diff with v21.32.1")
|
||||
* 2025-01-22 [`8458e43`](https://github.com/nophead/NopSCADlib/commit/8458e432fcb472c0b2f7c880f9c06ea7d4f7511f "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2025-01-01 [`e11bb72`](https://github.com/nophead/NopSCADlib/commit/e11bb72814010692e22f0cbe891c77fac0bcebfe "show commit") [L.](# "loekwous") Added Black pill pcb
|
||||
|
||||
* 2025-01-21 [`0154b2a`](https://github.com/nophead/NopSCADlib/commit/0154b2a32ce6cd9fd0a5e8cd69e1b26f0358f816 "show commit") [C.P.](# "Chris Palmer") Added Sparkfun `9DOF_stick` PCB.
|
||||
|
||||
#### [v21.32.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.32.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.32.0...v21.32.1 "diff with v21.32.0")
|
||||
* 2025-01-21 [`0b80218`](https://github.com/nophead/NopSCADlib/commit/0b802187bb56726e84128df9ccb46c9a830e7dbc "show commit") [C.P.](# "Chris Palmer") Corrected the chip number on `ZC_A0591` pcb.
|
||||
|
||||
* 2025-01-21 [`923c3b5`](https://github.com/nophead/NopSCADlib/commit/923c3b5c573cde6f9bc4611e6bf0e5cc2922443e "show commit") [C.P.](# "Chris Palmer") Avoid making empty folders for dxfs, stls or png if there are no parts of that type.
|
||||
|
||||
### [v21.32.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.32.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.31.0...v21.32.0 "diff with v21.31.0")
|
||||
* 2024-10-20 [`4d89117`](https://github.com/nophead/NopSCADlib/commit/4d8911718c54fdee5054d934c4aeeee34386d7f9 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2024-10-17 [`cb57b25`](https://github.com/nophead/NopSCADlib/commit/cb57b25b0bbe23b5f5a7f5c910dbdd3cf53530dd "show commit") [F.R.](# "Fran<61>ois Revol") Add 10x15 micro rocker switches
|
||||
|
||||
* Spades are not exact but close enough.
|
||||
|
||||
### [v21.31.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.31.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.30.0...v21.31.0 "diff with v21.30.0")
|
||||
* 2024-10-17 [`066242a`](https://github.com/nophead/NopSCADlib/commit/066242af588446037fc69606388ccc65d9884ad6 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2024-10-17 [`4b3468f`](https://github.com/nophead/NopSCADlib/commit/4b3468f78d998fbd2e849d10bdc63dd3aeadc72a "show commit") [C.P.](# "Chris Palmer") Fixed LED bezels to cope with square LEDs.
|
||||
|
||||
* 2024-10-17 [`001ea2a`](https://github.com/nophead/NopSCADlib/commit/001ea2a174dbc4395636fb325628a53874e59943 "show commit") [C.P.](# "Chris Palmer") Fixed LED bezel test.
|
||||
|
||||
* 2024-10-17 [`8e9d2dd`](https://github.com/nophead/NopSCADlib/commit/8e9d2dd367015403aa542b16fa384d08856e8401 "show commit") [C.P.](# "Chris Palmer") Fixed LED test.
|
||||
|
||||
* 2024-10-17 [`f4a7065`](https://github.com/nophead/NopSCADlib/commit/f4a7065e1f1198add4e50754343fd0d97954e239 "show commit") [F.R.](# "Fran<61>ois Revol") Add rectangular LEDs
|
||||
|
||||
* As per `https://www.futurlec.com/LED/Red_2x5mm_LED.shtml`
|
||||
|
||||
### [v21.30.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.30.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.29.2...v21.30.0 "diff with v21.29.2")
|
||||
* 2024-10-10 [`7ffff8b`](https://github.com/nophead/NopSCADlib/commit/7ffff8b7b7e111400dd7e3cb8e96bc95471a8ffa "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2024-10-10 [`e001cc4`](https://github.com/nophead/NopSCADlib/commit/e001cc46a34206801c7e1a474634b9b1f83dfc9a "show commit") [C.P.](# "Chris Palmer") Restored Lumintop colour to white and made text black on white batteries.
|
||||
|
||||
* 2024-10-08 [`7b42157`](https://github.com/nophead/NopSCADlib/commit/7b421570b46136de925963321ef44cb570e868b6 "show commit") [J.G.](# "Jan Giebels") corrected c&p error
|
||||
|
||||
* 2024-10-08 [`49ba60f`](https://github.com/nophead/NopSCADlib/commit/49ba60f159b2c3685696fff3f1dca5a9184d2553 "show commit") [J.G.](# "Jan Giebels") added L4680, L32700, L16340 `Li-Ion/LiFePo4` batteries
|
||||
|
||||
#### [v21.29.2](https://github.com/nophead/NopSCADlib/releases/tag/v21.29.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.29.1...v21.29.2 "diff with v21.29.1")
|
||||
* 2024-10-07 [`9e45dba`](https://github.com/nophead/NopSCADlib/commit/9e45dbad04bb4752b9b3aceaa88ee71bb975d749 "show commit") [C.P.](# "Chris Palmer") Fixed incorrect parameters passed to `tube()` in `ht_pipe()`.
|
||||
Fixed `lib.scad` to include `ht_pipes.scad` instead of using it.
|
||||
|
||||
#### [v21.29.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.29.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.29.0...v21.29.1 "diff with v21.29.0")
|
||||
* 2024-10-07 [`f65fe59`](https://github.com/nophead/NopSCADlib/commit/f65fe598318d349a5a8764e2dbbe80acfdc0be2e "show commit") [C.P.](# "Chris Palmer") Restored 30mm tube section on the bottom of the pipe fitting.
|
||||
|
||||
### [v21.29.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.29.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.28.2...v21.29.0 "diff with v21.28.2")
|
||||
* 2024-10-06 [`932c68a`](https://github.com/nophead/NopSCADlib/commit/932c68a2c01307fd22946b17f9419894f2de2e9f "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
Pipes are now made with tube instead of differencing cylinders.
|
||||
`HTpipeFitting()` now uses `rotate_extrude` and corrected internal shape.
|
||||
The seal ring is now tube diameter + 13.
|
||||
|
||||
* 2024-10-06 [`78e3360`](https://github.com/nophead/NopSCADlib/commit/78e3360900f61f30d5df7d53084a7e752ecd836a "show commit") [J.G.](# "Jan Giebels") changed naming of `ht_pipes` test script
|
||||
|
||||
* 2024-10-06 [`178f67f`](https://github.com/nophead/NopSCADlib/commit/178f67f815dca6edc65651c0b9cfb9d670c349ae "show commit") [J.G.](# "Jan Giebels") added more pipes and some cleanup
|
||||
|
||||
* 2024-10-06 [`af1b057`](https://github.com/nophead/NopSCADlib/commit/af1b057f597f75532b17f042e7711337731aa0c3 "show commit") [J.G.](# "Jan Giebels") added info and description
|
||||
|
||||
* 2024-10-06 [`195917a`](https://github.com/nophead/NopSCADlib/commit/195917a8790926515a6fffb2a02d7154855de568 "show commit") [J.G.](# "Jan Giebels") added HT pipes to lib
|
||||
|
||||
* 2024-10-06 [`9ed6aab`](https://github.com/nophead/NopSCADlib/commit/9ed6aab6c8cfd1a647f5eae2eac8d74832328065 "show commit") [J.G.](# "Jan Giebels") added test script and some more HT pipes
|
||||
|
||||
* 2024-10-05 [`c61386c`](https://github.com/nophead/NopSCADlib/commit/c61386caf937840e9a07e348b3ad96af71820dd2 "show commit") [J.G.](# "Jan Giebels") added HT waterpipes
|
||||
|
||||
* 2024-10-02 [`549dbc9`](https://github.com/nophead/NopSCADlib/commit/549dbc9380f39f8521554963f2051c3f05f5495f "show commit") [G.L.](# "Greg Land") Relative paths for vitamin `rod_end` includes
|
||||
|
||||
#### [v21.28.2](https://github.com/nophead/NopSCADlib/releases/tag/v21.28.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.28.1...v21.28.2 "diff with v21.28.1")
|
||||
* 2024-10-02 [`afc50ff`](https://github.com/nophead/NopSCADlib/commit/afc50ffe5d01ee586b55630e0d34e44720f6b68a "show commit") [C.P.](# "Chris Palmer") Removed trailing comma in `let()` for compatibility with last release.
|
||||
|
||||
#### [v21.28.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.28.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.28.0...v21.28.1 "diff with v21.28.0")
|
||||
* 2024-09-30 [`8fb7ec0`](https://github.com/nophead/NopSCADlib/commit/8fb7ec02138f30c5f4b2a72c723ea01d753aeb61 "show commit") [C.P.](# "Chris Palmer") Updated images.
|
||||
|
||||
* 2024-09-25 [`f6a3717`](https://github.com/nophead/NopSCADlib/commit/f6a371769d2850037dc15c94366d14c126efe4ba "show commit") [J.](# "jijamik") Corrected HGH20CA `carriage_pitch_x` value.
|
||||
|
||||
### [v21.28.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.28.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.27.1...v21.28.0 "diff with v21.27.1")
|
||||
* 2024-09-30 [`e4b1b68`](https://github.com/nophead/NopSCADlib/commit/e4b1b686ff12a415c6109f311c6c36104d8a7b0c "show commit") [C.P.](# "Chris Palmer") Added `rd_cm_choke(),` `rd_coil()` and `spiral_wrap()`.
|
||||
Added 10mm ceramic disc capacitors.
|
||||
|
||||
#### [v21.27.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.27.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.27.0...v21.27.1 "diff with v21.27.0")
|
||||
* 2024-09-13 [`c484ac2`](https://github.com/nophead/NopSCADlib/commit/c484ac2e8dbc8e9f9cb5051ce963250839a2705d "show commit") [C.P.](# "Chris Palmer") Updated libtest image with new D-connector.
|
||||
|
||||
### [v21.27.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.27.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.26.0...v21.27.0 "diff with v21.26.0")
|
||||
* 2024-09-13 [`6da8452`](https://github.com/nophead/NopSCADlib/commit/6da845215bd2a4c3b7dc8a022579947cef27b8b8 "show commit") [C.P.](# "Chris Palmer") Updated readme.
|
||||
|
||||
* 2024-09-10 [`7fe5aaa`](https://github.com/nophead/NopSCADlib/commit/7fe5aaac22283c453b2c2e5a2239b65ddd4320c1 "show commit") [D.T.](# "Daniel Trnka") Added DCONN37 connector
|
||||
|
||||
### [v21.26.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.26.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.25.0...v21.26.0 "diff with v21.25.0")
|
||||
* 2024-09-02 [`4f073f9`](https://github.com/nophead/NopSCADlib/commit/4f073f97e815e5c0b469a07d20526f7e2b88d79d "show commit") [C.P.](# "Chris Palmer") Added `rod_ends.scad` to `lib.scad` and `lib_test.scad`.
|
||||
Fixed `rod_end` colours.
|
||||
Added new pulleys to the test list and reodered.
|
||||
Printed pulleys nopw shown in two rows.
|
||||
Updated images and readme.
|
||||
|
||||
* 2024-08-23 [`fe3ce88`](https://github.com/nophead/NopSCADlib/commit/fe3ce88086de8480a88b69b7f7d2e6376b03caa6 "show commit") [T.](# "texas") adding test code for weld nuts and rod ends, adding ball bearings to test code list, and updating code for dome screw heads to use an angle to determine inset distance of the lower taper
|
||||
|
||||
* 2024-08-16 [`37fe83e`](https://github.com/nophead/NopSCADlib/commit/37fe83e2e08b6a0bd23042e37fbe89122d78516c "show commit") [T.](# "texas") added chamfer distance variable to taper in the bottom of the dome heads
|
||||
|
||||
* 2024-08-14 [`f86dfef`](https://github.com/nophead/NopSCADlib/commit/f86dfef919731f9731ca39f70ebd07b2c7204dfa "show commit") [T.](# "texas") fixed the calculations for dome screws to now use equations for a scaled sphere cap instead. This allows for larger and smaller sizes than were previously possible, and also eliminates the need for that lift value. Adding M6 and M8 dome screws as a result of this new ability
|
||||
|
||||
* 2024-08-14 [`e97f9fd`](https://github.com/nophead/NopSCADlib/commit/e97f9fdacc87bbc31cb9f0f3474132bc09f5ed91 "show commit") [=.](# "=") adding weld nuts
|
||||
|
||||
* 2024-08-13 [`ba45f85`](https://github.com/nophead/NopSCADlib/commit/ba45f8558007c7efe6bfd17bebacf285293ba4ad "show commit") [A.](# "alex") adding weld nuts, m4 and m6 for now
|
||||
|
||||
* 2024-03-18 [`90fb9eb`](https://github.com/nophead/NopSCADlib/commit/90fb9eb01f8721cb48589e59a14b3770da250cd5 "show commit") [A.](# "alex") adding F625 ball bearing
|
||||
|
||||
* 2024-03-13 [`905fc01`](https://github.com/nophead/NopSCADlib/commit/905fc016778d6a78774c05236425463fa2aa3323 "show commit") [A.](# "alex") adding rod end bearing and a yellow bed spring
|
||||
|
||||
* 2024-03-04 [`a695974`](https://github.com/nophead/NopSCADlib/commit/a695974ac562b88ed08cc3ea54a2a4e07f638c5f "show commit") [T.](# "Tex") updating after maybe breaking debian
|
||||
|
||||
### [v21.25.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.25.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.24.1...v21.25.0 "diff with v21.24.1")
|
||||
* 2024-08-15 [`bc7f294`](https://github.com/nophead/NopSCADlib/commit/bc7f294f995d8aa8ba500a1ef666c8fb50f94fd3 "show commit") [C.P.](# "Chris Palmer") Added `smd_250V_fuse()` and `rd_box_cap()`.
|
||||
Fixed missing value parameters from a lot of the SMD component instantiation examples.
|
||||
|
||||
#### [v21.24.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.24.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.24.0...v21.24.1 "diff with v21.24.0")
|
||||
* 2024-06-30 [`07866f7`](https://github.com/nophead/NopSCADlib/commit/07866f72845c9e08c90e371c92315bab54f003c6 "show commit") [H.](# "Hermann-SW") Add `PT_camera` to examples and gallery
|
||||
|
||||
### [v21.24.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.24.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.23.2...v21.24.0 "diff with v21.23.2")
|
||||
* 2024-06-30 [`53d1ea9`](https://github.com/nophead/NopSCADlib/commit/53d1ea93cd339d3fb6e085be9314d7ec0b547796 "show commit") [C.P.](# "Chris Palmer") Can now specify a rotation angle for a `geared_stepper's` shaft.
|
||||
|
||||
#### [v21.23.2](https://github.com/nophead/NopSCADlib/releases/tag/v21.23.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.23.1...v21.23.2 "diff with v21.23.1")
|
||||
* 2024-06-12 [`b00709d`](https://github.com/nophead/NopSCADlib/commit/b00709da820e1241422b6e156b0c61157c18d63d "show commit") [C.P.](# "Chris Palmer") Image edge pixel changes due to new PC.
|
||||
|
||||
* 2024-06-12 [`c76be23`](https://github.com/nophead/NopSCADlib/commit/c76be2386715b80bbbc9a71c99214df7f3c71bc7 "show commit") [C.P.](# "Chris Palmer") Fixed thread bug on threaded inserts revealed by latest OpenSCAD snapshot.
|
||||
|
||||
* 2024-06-12 [`f6f348b`](https://github.com/nophead/NopSCADlib/commit/f6f348b76e7986927a571e1c07c3f866bcbeeafe "show commit") [C.P.](# "Chris Palmer") Fixed rocker slot height.
|
||||
|
||||
#### [v21.23.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.23.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.23.0...v21.23.1 "diff with v21.23.0")
|
||||
* 2024-05-08 [`870b396`](https://github.com/nophead/NopSCADlib/commit/870b396574935603305462f1fea88564c909aad8 "show commit") [C.](# "Chris") Revoved strailing comma in `let()` in `splines.scad`.
|
||||
|
||||
|
BIN
docs/sliding_t_nut.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/sliding_t_nut_small.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 326 KiB After Width: | Height: | Size: 324 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 336 KiB After Width: | Height: | Size: 334 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 129 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 201 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: 248 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 185 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 234 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 235 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 217 KiB |
@@ -17,11 +17,13 @@
|
||||
"printed": {
|
||||
"fan_duct.stl": {
|
||||
"count": 1,
|
||||
"colour": "darkorange"
|
||||
"colour": "darkorange",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"enviro_plus_case_base.stl": {
|
||||
"count": 1,
|
||||
"colour": "grey"
|
||||
"colour": "grey",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
}
|
||||
},
|
||||
"routed": {}
|
||||
@@ -67,10 +69,10 @@
|
||||
"smd_resistor(RES0805, 3K3): SMD resistor 0805 3K3 0.125W": {
|
||||
"count": 1
|
||||
},
|
||||
"smd_capacitor(CAP1206): SMD capacitor 1206 10uF": {
|
||||
"smd_capacitor(CAP1206, value = \"10uF\"): SMD capacitor 1206 10uF": {
|
||||
"count": 1
|
||||
},
|
||||
"smd_sot(SOT223): SOT223 package FZT851": {
|
||||
"smd_sot(SOT223, \"FZT851\"): SOT223 package FZT851": {
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
@@ -115,15 +117,18 @@
|
||||
"printed": {
|
||||
"enviro_plus_case.stl": {
|
||||
"count": 1,
|
||||
"colour": "grey"
|
||||
"colour": "grey",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"bulkhead.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0.862745, 0.0784314, 0.235294]"
|
||||
"colour": "[0.862745, 0.0784314, 0.235294]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"foot.stl": {
|
||||
"count": 3,
|
||||
"colour": "darkorange"
|
||||
"colour": "darkorange",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
}
|
||||
},
|
||||
"routed": {}
|
||||
|
@@ -72,7 +72,7 @@ Environmental monitor using Enviro+ sensor board and a Raspberry Pi Zero.
|
||||
|
||||
### 3D Printed parts
|
||||
|
||||
| 1 x enviro_plus_case_base.stl | 1 x fan_duct.stl |
|
||||
| 1 x [enviro_plus_case_base.stl](stls/enviro_plus_case_base.stl) | 1 x [fan_duct.stl](stls/fan_duct.stl) |
|
||||
|---|---|
|
||||
|  | 
|
||||
|
||||
@@ -190,7 +190,7 @@ It converts the PWM signal on GPI4 to a stead DC voltage so that the fan doesn't
|
||||
|
||||
### 3D Printed parts
|
||||
|
||||
| 1 x bulkhead.stl | 1 x enviro_plus_case.stl | 3 x foot.stl |
|
||||
| 1 x [bulkhead.stl](stls/bulkhead.stl) | 1 x [enviro_plus_case.stl](stls/enviro_plus_case.stl) | 3 x [foot.stl](stls/foot.stl) |
|
||||
|---|---|---|
|
||||
|  |  | 
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
BIN
examples/Gridfinity/assemblies/main_assembled.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
examples/Gridfinity/assemblies/main_assembled_tn.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
examples/Gridfinity/assemblies/main_assembly.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
examples/Gridfinity/assemblies/main_assembly_tn.png
Normal file
After Width: | Height: | Size: 25 KiB |
0
examples/Gridfinity/bom/bom.csv
Normal file
|
49
examples/Gridfinity/bom/bom.json
Normal file
@@ -0,0 +1,49 @@
|
||||
[
|
||||
{
|
||||
"name": "main_assembly",
|
||||
"big": null,
|
||||
"ngb": false,
|
||||
"zoomed": 0,
|
||||
"count": 1,
|
||||
"assemblies": {},
|
||||
"vitamins": {},
|
||||
"printed": {
|
||||
"lathe_tool_stand.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"MT2_stand.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"chuck_stand.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"chuck_jaw_bin.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"1x1_bin.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"123_block_stand.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
},
|
||||
"faceplate_stand.stl": {
|
||||
"count": 1,
|
||||
"colour": "[0, 0.572549, 0]",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
}
|
||||
},
|
||||
"routed": {}
|
||||
}
|
||||
]
|
15
examples/Gridfinity/bom/bom.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
M
|
||||
a
|
||||
i
|
||||
n
|
||||
Printed:
|
||||
1| 1 123_block_stand.stl
|
||||
1| 1 1x1_bin.stl
|
||||
1| 1 MT2_stand.stl
|
||||
1| 1 chuck_jaw_bin.stl
|
||||
1| 1 chuck_stand.stl
|
||||
1| 1 faceplate_stand.stl
|
||||
1| 1 lathe_tool_stand.stl
|
||||
|
||||
Assemblies:
|
||||
1 main_assembly
|
9
examples/Gridfinity/bom/main_assembly.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
main_assembly:
|
||||
Printed:
|
||||
1 123_block_stand.stl
|
||||
1 1x1_bin.stl
|
||||
1 MT2_stand.stl
|
||||
1 chuck_jaw_bin.stl
|
||||
1 chuck_stand.stl
|
||||
1 faceplate_stand.stl
|
||||
1 lathe_tool_stand.stl
|
64
examples/Gridfinity/readme.md
Normal file
@@ -0,0 +1,64 @@
|
||||
<a name="TOP"></a>
|
||||
# Gridfinity
|
||||
Gridfinity examples
|
||||
|
||||

|
||||
|
||||
<span></span>
|
||||
|
||||
---
|
||||
## Table of Contents
|
||||
1. [Parts list](#Parts_list)
|
||||
1. [Main Assembly](#main_assembly)
|
||||
|
||||
<span></span>
|
||||
[Top](#TOP)
|
||||
|
||||
---
|
||||
<a name="Parts_list"></a>
|
||||
## Parts list
|
||||
| <span style="writing-mode: vertical-rl; text-orientation: mixed;">Main</span> | <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |
|
||||
|---:|---:|:---|
|
||||
| | | **3D printed parts** |
|
||||
| 1 | 1 | 123_block_stand.stl |
|
||||
| 1 | 1 | 1x1_bin.stl |
|
||||
| 1 | 1 | MT2_stand.stl |
|
||||
| 1 | 1 | chuck_jaw_bin.stl |
|
||||
| 1 | 1 | chuck_stand.stl |
|
||||
| 1 | 1 | faceplate_stand.stl |
|
||||
| 1 | 1 | lathe_tool_stand.stl |
|
||||
| 7 | 7 | Total 3D printed parts count |
|
||||
|
||||
<span></span>
|
||||
[Top](#TOP)
|
||||
|
||||
---
|
||||
<a name="main_assembly"></a>
|
||||
## Main Assembly
|
||||
### 3D Printed parts
|
||||
|
||||
| 1 x [123_block_stand.stl](stls/123_block_stand.stl) | 1 x [1x1_bin.stl](stls/1x1_bin.stl) | 1 x [MT2_stand.stl](stls/MT2_stand.stl) |
|
||||
|---|---|---|
|
||||
|  |  | 
|
||||
|
||||
|
||||
| 1 x [chuck_jaw_bin.stl](stls/chuck_jaw_bin.stl) | 1 x [chuck_stand.stl](stls/chuck_stand.stl) | 1 x [faceplate_stand.stl](stls/faceplate_stand.stl) |
|
||||
|---|---|---|
|
||||
|  |  | 
|
||||
|
||||
|
||||
| 1 x [lathe_tool_stand.stl](stls/lathe_tool_stand.stl) |
|
||||
|---|
|
||||
| 
|
||||
|
||||
|
||||
|
||||
### Assembly instructions
|
||||

|
||||
|
||||
Show all the Gridfinity parts
|
||||
|
||||

|
||||
|
||||
<span></span>
|
||||
[Top](#TOP)
|
58
examples/Gridfinity/scad/123_block_stand.scad
Normal file
@@ -0,0 +1,58 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
use <NopSCADlib/utils/maths.scad>
|
||||
use <NopSCADlib/utils/chamfer.scad>
|
||||
|
||||
tool_size = 8;
|
||||
|
||||
box = gridfinity_bin("123_block_stand", 2, 2, 5);
|
||||
|
||||
123_block = inch([3, 1, 2]);
|
||||
|
||||
102040_block = [20, 10, 40];
|
||||
|
||||
blocks = [123_block, 123_block, 102040_block];
|
||||
|
||||
box_mm = gridfinity_bin_size_mm(box);
|
||||
wall = 1.75;
|
||||
bwall = 1;
|
||||
clearance = 0.5;
|
||||
|
||||
gap = (box_mm.y - sumv([for(b = blocks) b.y])) / (len(blocks) + 1);
|
||||
|
||||
module holes() {
|
||||
let($b = blocks[0])
|
||||
translate([0, box_mm.y / 2 - gap - $b.y / 2])
|
||||
children();
|
||||
|
||||
let($b = blocks[1])
|
||||
translate([0, box_mm.y / 2 - gap - blocks[0].y - gap - $b.y / 2])
|
||||
children();
|
||||
|
||||
for(side = [-1, 1])
|
||||
let($b = blocks[2])
|
||||
translate([side * (blocks[2].x + 2 * gap) / 2,
|
||||
box_mm.y / 2 - gap - blocks[0].y - gap - blocks[1].y - gap - blocks[2].y / 2 ])
|
||||
children();
|
||||
}
|
||||
|
||||
module 123_block_stand_stl()
|
||||
gridfinity_bin(box) union() {
|
||||
holes() {
|
||||
translate_z(gridfinity_base_z() + bwall + $b.z / 2 + eps)
|
||||
cube([$b.x + clearance, $b.y + clearance, $b.z + 2 * eps], true);
|
||||
|
||||
chamfer = 1;
|
||||
translate_z(box_mm.z)
|
||||
chamfer_hole(chamfer)
|
||||
square([$b.x + clearance, $b.y + clearance], true);
|
||||
}
|
||||
translate_z(gridfinity_base_z() + bwall)
|
||||
difference() {
|
||||
rounded_rectangle([box_mm.x - 2 * wall, box_mm.y - 2 * wall, box_mm.z - gridfinity_base_z() - bwall - wall], gridfinity_corner_r() - wall);
|
||||
|
||||
holes()
|
||||
rounded_rectangle([$b.x + clearance + 2 * wall, $b.y + clearance + 2 * wall, 100], wall, center = true);
|
||||
}
|
||||
}
|
9
examples/Gridfinity/scad/1x1_bin.scad
Normal file
@@ -0,0 +1,9 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
|
||||
box = gridfinity_bin("1x1_bin", 1, 1, 5);
|
||||
|
||||
module 1x1_bin_stl()
|
||||
gridfinity_bin(box)
|
||||
gridfinity_partition(box, 1, 1);
|
80
examples/Gridfinity/scad/MT2_stand.scad
Normal file
@@ -0,0 +1,80 @@
|
||||
//
|
||||
// Stand for MT2 taper lathe tools
|
||||
//
|
||||
include <NopSCADlib/core.scad>
|
||||
use <NopSCADlib/utils/maths.scad>
|
||||
use <NopSCADlib/utils/chamfer.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
|
||||
box = gridfinity_bin("MT2_stand", 4, 2, 8);
|
||||
|
||||
box_mm = gridfinity_bin_size_mm(box);
|
||||
wall = 1.75;
|
||||
bwall = 1;
|
||||
|
||||
|
||||
diameters1 = [43, 47, 64];
|
||||
d2 = 20;
|
||||
|
||||
clearance = 1;
|
||||
clearance2 = 4;
|
||||
|
||||
MT2_base = 5; // smaller diameters
|
||||
MT2_D1 = 15; // diameter at the bottom of the taper at base height
|
||||
MT2_half_angle = 1.4302777777777778;
|
||||
|
||||
hole_depth = box_mm.z - gridfinity_base_z() - bwall;
|
||||
MT2_r1 = MT2_D1 / 2;
|
||||
MT2_r2 = MT2_r1 + (hole_depth - MT2_base) * tan(MT2_half_angle);
|
||||
|
||||
gap = (box_mm.x - sumv(diameters1) - 2 * clearance) / (len(diameters1) - 1);
|
||||
gap2 = 18;
|
||||
|
||||
module MT2_socket() {
|
||||
clearance = 0.3;
|
||||
|
||||
translate_z(-hole_depth) {
|
||||
poly_cylinder(MT2_r1 + clearance / 2, MT2_base + eps);
|
||||
|
||||
translate_z(MT2_base)
|
||||
hull() {
|
||||
poly_cylinder(MT2_r1 + clearance / 2, eps);
|
||||
|
||||
translate_z(hole_depth - MT2_base)
|
||||
poly_cylinder(MT2_r2 + clearance / 2, eps);
|
||||
}
|
||||
}
|
||||
chamfer_hole(1)
|
||||
poly_circle(MT2_r2 + clearance / 2);
|
||||
}
|
||||
|
||||
function pos(i) = [clearance + sumv(slice(diameters1, 0, i)) + i * gap + diameters1[i] / 2 - box_mm.x / 2, box_mm.y / 2 - clearance - diameters1[i] / 2, box_mm.z];
|
||||
function pos2(i) = [clearance2 + i * gap2 + (i + 0.5) * d2 - box_mm.x / 2, -box_mm.y / 2 + clearance2 + d2 / 2, box_mm.z];
|
||||
|
||||
module holes()
|
||||
for(i = [0 : len(diameters1) - 1]) {
|
||||
translate(pos(i))
|
||||
children();
|
||||
|
||||
translate(pos2(i))
|
||||
children();
|
||||
}
|
||||
|
||||
module MT2_stand_stl()
|
||||
gridfinity_bin(box) union() {
|
||||
holes()
|
||||
MT2_socket();
|
||||
|
||||
translate_z(gridfinity_base_z() + bwall)
|
||||
difference() {
|
||||
rounded_rectangle([box_mm.x - 2 * wall, box_mm.y - 2 * wall, box_mm.z - gridfinity_base_z() - bwall - wall], gridfinity_corner_r() - wall);
|
||||
|
||||
holes()
|
||||
cylinder(r = MT2_r2 + wall, h = 200, center = true);
|
||||
|
||||
for(x = [-box_mm.x / 2 : 20 : box_mm.x /2])
|
||||
translate([x, 0])
|
||||
cube([squeezed_wall, 200, 200], center = true);
|
||||
}
|
||||
}
|
36
examples/Gridfinity/scad/chuck_jaw_bin.scad
Normal file
@@ -0,0 +1,36 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
use <NopSCADlib/utils/chamfer.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
|
||||
box = gridfinity_bin("chuck_jaw_bin", 1, 1, 5);
|
||||
|
||||
box_mm = gridfinity_bin_size_mm(box);
|
||||
|
||||
bwall = 1;
|
||||
|
||||
length = 37;
|
||||
width = 34;
|
||||
|
||||
|
||||
z_bot = gridfinity_base_z() + bwall;
|
||||
|
||||
depth = box_mm.z - z_bot;
|
||||
|
||||
module chuck_jaw_bin_stl()
|
||||
gridfinity_bin(box)
|
||||
translate_z(box_mm.z) {
|
||||
cube([length, width, depth * 2], true);
|
||||
|
||||
chamfer = 1;
|
||||
|
||||
chamfer_hole(chamfer)
|
||||
square([length, width], true);
|
||||
|
||||
*hull() {
|
||||
rounded_rectangle([length + 2 * chamfer, width + 2 * chamfer, eps], chamfer);
|
||||
|
||||
translate_z(-chamfer + eps / 2)
|
||||
cube([length, width, eps], true);
|
||||
}
|
||||
}
|
52
examples/Gridfinity/scad/chuck_stand.scad
Normal file
@@ -0,0 +1,52 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
use <NopSCADlib/utils/chamfer.scad>
|
||||
|
||||
box = gridfinity_bin("chuck_stand", 2, 2, 5);
|
||||
|
||||
box_mm = gridfinity_bin_size_mm(box);
|
||||
|
||||
bwall = 1;
|
||||
|
||||
chuck_d = 80;
|
||||
ring_od = 50;
|
||||
ring_id = 40;
|
||||
ring_h = 4;
|
||||
|
||||
hole_pitch = (60 + 72.5) / 2;
|
||||
hole_d = (72.5 - 60) / 2;
|
||||
hole_depth = 15;
|
||||
clearance = 0.5;
|
||||
chamfer = 1;
|
||||
|
||||
z_bot = gridfinity_base_z() + bwall;
|
||||
|
||||
module chuck_stand_stl()
|
||||
gridfinity_bin(box) union() {
|
||||
translate_z(z_bot) {
|
||||
for(a = [0 : 30 : 330])
|
||||
rotate(a)
|
||||
translate([0, hole_pitch / 2]) {
|
||||
poly_cylinder(hole_d / 2 + clearance / 2, h = 100);
|
||||
|
||||
translate_z(hole_depth)
|
||||
chamfer_hole(chamfer)
|
||||
poly_circle(hole_d / 2 + clearance / 2);
|
||||
}
|
||||
|
||||
translate_z(hole_depth) {
|
||||
poly_cylinder(r = chuck_d / 2 + clearance / 2, h = 100);
|
||||
|
||||
poly_tube(or = ring_od / 2 + clearance, ir = ring_id / 2 - clearance, h = 2 * ring_h, center = true);
|
||||
|
||||
chamfer_hole(chamfer)
|
||||
poly_circle(ring_od / 2 + clearance);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
translate_z(box_mm.z)
|
||||
chamfer_hole(chamfer)
|
||||
poly_circle(r = chuck_d / 2 + clearance / 2);
|
||||
}
|
56
examples/Gridfinity/scad/faceplate_stand.scad
Normal file
@@ -0,0 +1,56 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
use <NopSCADlib/utils/maths.scad>
|
||||
use <NopSCADlib/utils/chamfer.scad>
|
||||
|
||||
tool_size = 8;
|
||||
|
||||
box = gridfinity_bin("faceplate_stand", 3, 1, 5);
|
||||
|
||||
faceplate = [112, 16, 17];
|
||||
sanding_disc = [69, 6.7, 14.5];
|
||||
|
||||
discs = [faceplate, sanding_disc];
|
||||
|
||||
box_mm = gridfinity_bin_size_mm(box);
|
||||
wall = 1.8;
|
||||
bwall = 1;
|
||||
clearance = 0.5;
|
||||
|
||||
gap = (box_mm.y - sumv([for(b = discs) b.z])) / (len(discs) + 1);
|
||||
|
||||
module holes() {
|
||||
for(i = [0 : len(discs) - 1]) let($d = discs[i])
|
||||
translate([0, box_mm.y / 2 - gap - (i ? discs[0].z + gap : 0) - $d.z / 2])
|
||||
children();
|
||||
}
|
||||
|
||||
module faceplate_stand_stl()
|
||||
gridfinity_bin(box) union() {
|
||||
holes() {
|
||||
$fa = 1;
|
||||
r = $d.x / 2 + clearance / 2;
|
||||
z = gridfinity_base_z() + bwall + r;
|
||||
translate_z(z)
|
||||
rotate([90, 0, 0])
|
||||
teardrop_plus(r = r, h = $d.y + clearance, center = true);
|
||||
|
||||
chamfer = 1;
|
||||
h = z - box_mm.z + wall;
|
||||
translate_z(box_mm.z)
|
||||
chamfer_hole(chamfer)
|
||||
square([2 * sqrt(sqr(r) - sqr(h)), $d.y + clearance], true);
|
||||
}
|
||||
difference() {
|
||||
translate_z(gridfinity_base_z() + bwall)
|
||||
rounded_rectangle([box_mm.x - 2 * wall, box_mm.y - 2 * wall, box_mm.z - gridfinity_base_z() - bwall - wall], gridfinity_corner_r() - wall);
|
||||
|
||||
holes() {
|
||||
r = $d.x / 2 + clearance / 2;
|
||||
translate_z(gridfinity_base_z() + bwall + r)
|
||||
rotate([90, 0, 0])
|
||||
teardrop_plus(r = r + wall, h = $d.y + clearance + 2 * wall);
|
||||
}
|
||||
}
|
||||
}
|
45
examples/Gridfinity/scad/lathe_tool_stand.scad
Normal file
@@ -0,0 +1,45 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
use <NopSCADlib/printed/gridfinity.scad>
|
||||
use <NopSCADlib/utils/chamfer.scad>
|
||||
|
||||
tool_size = 8;
|
||||
|
||||
rows = 2;
|
||||
cols = 5;
|
||||
spacing = 8;
|
||||
|
||||
hole = tool_size + 0.2;
|
||||
|
||||
tool_pitch = hole + spacing;
|
||||
|
||||
box = gridfinity_bin("lathe_tool_stand", 2, 1, 5);
|
||||
|
||||
module holes()
|
||||
for(x = [0 : cols - 1], y = [0 : rows - 1])
|
||||
translate([x - (cols -1) / 2, y - (rows - 1) / 2] * tool_pitch)
|
||||
children();
|
||||
|
||||
box_mm = gridfinity_bin_size_mm(box);
|
||||
wall = 1.75;
|
||||
bwall = 1;
|
||||
|
||||
module lathe_tool_stand_stl()
|
||||
gridfinity_bin(box) union() {
|
||||
translate_z(box_mm.z)
|
||||
holes() {
|
||||
cube([hole, hole, 2 * (box_mm.z - gridfinity_base_z() - bwall)], true);
|
||||
|
||||
chamfer = 1;
|
||||
chamfer_hole(chamfer)
|
||||
square([hole, hole], true);
|
||||
}
|
||||
|
||||
translate_z(gridfinity_base_z() + bwall)
|
||||
difference() {
|
||||
rounded_rectangle([box_mm.x - 2 * wall, box_mm.y - 2 * wall, box_mm.z - gridfinity_base_z() - bwall - wall], gridfinity_corner_r() - wall);
|
||||
|
||||
holes()
|
||||
rounded_rectangle([hole + 2 * wall, hole + 2 * wall, 100], wall, center = true);
|
||||
}
|
||||
}
|
42
examples/Gridfinity/scad/main.scad
Normal file
@@ -0,0 +1,42 @@
|
||||
//
|
||||
//! Gridfinity examples
|
||||
//
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
use <lathe_tool_stand.scad>
|
||||
use <MT2_stand.scad>
|
||||
use <chuck_stand.scad>
|
||||
use <chuck_jaw_bin.scad>
|
||||
use <1x1_bin.scad>
|
||||
use <123_block_stand.scad>
|
||||
use <faceplate_stand.scad>
|
||||
|
||||
|
||||
//! Show all the Gridfinity parts
|
||||
module main_assembly()
|
||||
assembly("main") {
|
||||
$manifold = true;
|
||||
|
||||
lathe_tool_stand_stl();
|
||||
|
||||
translate([42, 63])
|
||||
MT2_stand_stl();
|
||||
|
||||
translate([42 * 2, -42 / 2])
|
||||
chuck_stand_stl();
|
||||
|
||||
translate([-21, -42])
|
||||
chuck_jaw_bin_stl();
|
||||
|
||||
translate([21, -42])
|
||||
1x1_bin_stl();
|
||||
|
||||
translate([42 * 4, -42 / 2])
|
||||
123_block_stand_stl();
|
||||
|
||||
translate([42 * 6.5, 0])
|
||||
faceplate_stand_stl();
|
||||
}
|
||||
|
||||
|
||||
main_assembly();
|
BIN
examples/Gridfinity/stls/123_block_stand.png
Normal file
After Width: | Height: | Size: 15 KiB |
19882
examples/Gridfinity/stls/123_block_stand.stl
Normal file
BIN
examples/Gridfinity/stls/1x1_bin.png
Normal file
After Width: | Height: | Size: 14 KiB |
18734
examples/Gridfinity/stls/1x1_bin.stl
Normal file
BIN
examples/Gridfinity/stls/MT2_stand.png
Normal file
After Width: | Height: | Size: 14 KiB |
53622
examples/Gridfinity/stls/MT2_stand.stl
Normal file
BIN
examples/Gridfinity/stls/chuck_jaw_bin.png
Normal file
After Width: | Height: | Size: 14 KiB |
4006
examples/Gridfinity/stls/chuck_jaw_bin.stl
Normal file
BIN
examples/Gridfinity/stls/chuck_stand.png
Normal file
After Width: | Height: | Size: 16 KiB |
40434
examples/Gridfinity/stls/chuck_stand.stl
Normal file
BIN
examples/Gridfinity/stls/faceplate_stand.png
Normal file
After Width: | Height: | Size: 15 KiB |
20470
examples/Gridfinity/stls/faceplate_stand.stl
Normal file
BIN
examples/Gridfinity/stls/lathe_tool_stand.png
Normal file
After Width: | Height: | Size: 16 KiB |
26434
examples/Gridfinity/stls/lathe_tool_stand.stl
Normal file
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 104 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: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
@@ -14,7 +14,8 @@
|
||||
"printed": {
|
||||
"socket_box.stl": {
|
||||
"count": 1,
|
||||
"colour": "dimgrey"
|
||||
"colour": "dimgrey",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
}
|
||||
},
|
||||
"routed": {}
|
||||
@@ -42,7 +43,8 @@
|
||||
"printed": {
|
||||
"foot.stl": {
|
||||
"count": 4,
|
||||
"colour": "darkorange"
|
||||
"colour": "darkorange",
|
||||
"camera": "0,0,0,70,0,315,500"
|
||||
}
|
||||
},
|
||||
"routed": {}
|
||||
|
@@ -70,7 +70,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||
|
||||
### 3D Printed parts
|
||||
|
||||
| 1 x socket_box.stl |
|
||||
| 1 x [socket_box.stl](stls/socket_box.stl) |
|
||||
|---|
|
||||
| 
|
||||
|
||||
@@ -100,7 +100,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||
|
||||
### 3D Printed parts
|
||||
|
||||
| 4 x foot.stl |
|
||||
| 4 x [foot.stl](stls/foot.stl) |
|
||||
|---|
|
||||
| 
|
||||
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.7 KiB |
54
examples/PT_camera/PT_camera.scad
Normal file
@@ -0,0 +1,54 @@
|
||||
include <../../vitamins/geared_steppers.scad>
|
||||
include <../../core.scad>
|
||||
include <../../vitamins/cameras.scad>
|
||||
use <../../vitamins/pcb.scad>
|
||||
|
||||
module ptc(ang2) {
|
||||
rotate([180,0,0])
|
||||
union(){
|
||||
geared_stepper(28BYJ_48,ang2);
|
||||
rotate([90,0,180-ang2])
|
||||
translate([9.8,-16.5,1.7])
|
||||
rotate([0,0,90])
|
||||
camera(cameras[0]);
|
||||
}
|
||||
}
|
||||
|
||||
module pt(ang,ang2) {
|
||||
rotate([180,0,0]) geared_stepper(28BYJ_48,ang);
|
||||
rotate([0,0,ang]) rotate([270,0,0]) translate([0,-29.0,-1.5]) ptc(ang2);
|
||||
}
|
||||
|
||||
deg=90;
|
||||
c=90;
|
||||
|
||||
if($t<0.125){
|
||||
a=180+$t/0.125*deg;
|
||||
pt(a,c);
|
||||
}else if ($t<0.25){
|
||||
a=180+deg-($t-0.125)/0.125*deg;
|
||||
pt(a,c);
|
||||
}else if ($t<0.375){
|
||||
b=c+($t-0.25)/0.125*deg;
|
||||
pt(180,b);
|
||||
}else if ($t<0.5){
|
||||
b=c+deg-($t-0.375)/0.125*deg;
|
||||
pt(180,b);
|
||||
}
|
||||
else if($t<0.625){
|
||||
a=180+($t-0.5)/0.125*deg;
|
||||
b=c+deg-90+($t-0.5)/0.125*deg;
|
||||
pt(a,b);
|
||||
}else if ($t<0.75){
|
||||
a=180+deg-($t-0.625)/0.125*deg;
|
||||
b=c+deg-($t-0.625)/0.125*deg;
|
||||
pt(a,b);
|
||||
}else if ($t<0.875){
|
||||
a=180-($t-0.75)/0.125*deg;
|
||||
b=c-($t-0.75)/0.125*deg;
|
||||
pt(a,b);
|
||||
}else{
|
||||
a=90+($t-0.875)/0.125*deg;
|
||||
b=c+deg-180+($t-0.875)/0.125*deg;
|
||||
pt(a,b);
|
||||
}
|
BIN
gallery/PT_camera.anim.gif
Normal file
After Width: | Height: | Size: 1.5 MiB |
@@ -106,6 +106,10 @@ A base and shroud to make PSU safe to sit on a desk
|
||||
|
||||

|
||||
|
||||
## PT_camera
|
||||
Two 28BYJ_48 geared stepper motors and a Raspberry v1 camera, combined with [4 drops of superglue](https://forums.raspberrypi.com/viewtopic.php?p=1810000#p1810000). Script [PT_camera.scad](../examples/PT_camera/PT_camera.scad) nicely demonstrates new 2nd optional arg (motor shaft angle) of ```geared_stepper()```.
|
||||

|
||||
|
||||
## PotBox
|
||||
Potentiometer box with course and fine controls and three 4mm binding posts
|
||||
|
||||
|
5
lib.scad
@@ -23,7 +23,7 @@
|
||||
include <core.scad>
|
||||
|
||||
include <vitamins/psus.scad>
|
||||
include <vitamins/pcbs.scad>
|
||||
include <vitamins/displays.scad> // Includes pcbs.scad
|
||||
|
||||
include <vitamins/antennas.scad>
|
||||
include <vitamins/batteries.scad>
|
||||
@@ -34,13 +34,13 @@ include <vitamins/box_sections.scad>
|
||||
include <vitamins/bulldogs.scad>
|
||||
include <vitamins/cameras.scad>
|
||||
include <vitamins/components.scad>
|
||||
include <vitamins/displays.scad>
|
||||
include <vitamins/extrusions.scad>
|
||||
include <vitamins/extrusion_brackets.scad>
|
||||
include <vitamins/fastons.scad>
|
||||
include <vitamins/gear_motors.scad>
|
||||
include <vitamins/geared_steppers.scad>
|
||||
include <vitamins/hot_ends.scad>
|
||||
include <vitamins/ht_pipes.scad>
|
||||
include <vitamins/inserts.scad>
|
||||
include <vitamins/ldrs.scad>
|
||||
include <vitamins/leadnuts.scad>
|
||||
@@ -58,6 +58,7 @@ include <vitamins/pulleys.scad>
|
||||
include <vitamins/ring_terminals.scad>
|
||||
include <vitamins/rails.scad>
|
||||
include <vitamins/rod.scad>
|
||||
include <vitamins/rod_ends.scad>
|
||||
include <vitamins/servo_motors.scad>
|
||||
include <vitamins/shaft_couplings.scad>
|
||||
include <vitamins/sheets.scad>
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 1002 KiB After Width: | Height: | Size: 1.0 MiB |
57
libtest.scad
@@ -25,7 +25,7 @@
|
||||
//! STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly
|
||||
//! instructions and exploded views by scraping markdown embedded in OpenSCAD comments, [see scripts](scripts/readme.md).
|
||||
//!
|
||||
//! A simple example project can be found [here](examples/MainsBreakOutBox/readme.md).
|
||||
//! A simple example project can be found [here](examples/MainsBreakOutBox/readme.md) and more complex examples [here](examples).
|
||||
//!
|
||||
//! For more examples of what it can make see the [gallery](gallery/readme.md).
|
||||
//!
|
||||
@@ -68,6 +68,7 @@ use <tests/fastons.scad>
|
||||
use <tests/fuseholder.scad>
|
||||
use <tests/gear_motors.scad>
|
||||
use <tests/geared_steppers.scad>
|
||||
use <tests/gridfinity.scad>
|
||||
use <tests/hot_ends.scad>
|
||||
use <tests/IECs.scad>
|
||||
use <tests/inserts.scad>
|
||||
@@ -98,6 +99,7 @@ use <tests/rails.scad>
|
||||
use <tests/ring_terminals.scad>
|
||||
use <tests/rockers.scad>
|
||||
use <tests/rod.scad>
|
||||
use <tests/rod_ends.scad>
|
||||
use <tests/SBR_rails.scad>
|
||||
use <tests/screws.scad>
|
||||
use <tests/sealing_strip.scad>
|
||||
@@ -156,7 +158,7 @@ cable_grommets_y = 0;
|
||||
translate([x5, cable_grommets_y])
|
||||
cable_grommets();
|
||||
|
||||
translate([x5, cable_grommets_y + 30])
|
||||
translate([x5, cable_grommets_y + 45])
|
||||
led_bezels();
|
||||
|
||||
translate([x5 + 50, cable_grommets_y])
|
||||
@@ -178,7 +180,7 @@ translate([x5, screw_knobs_y])
|
||||
screw_knobs();
|
||||
|
||||
knobs_y = screw_knobs_y + 40;
|
||||
translate([640, knobs_y])
|
||||
translate([660, knobs_y])
|
||||
printed_pulley_test();
|
||||
|
||||
translate([x5, knobs_y])
|
||||
@@ -203,7 +205,11 @@ pocket_y = handle_y + 70;
|
||||
translate([x5 + 65, pocket_y])
|
||||
pocket_handles();
|
||||
|
||||
hinge_y = pocket_y + 100;
|
||||
gridfinity_y = pocket_y + 100;
|
||||
translate([950, gridfinity_y])
|
||||
gridfinity_test();
|
||||
|
||||
hinge_y = gridfinity_y + 100;
|
||||
translate([x5, hinge_y]) {
|
||||
door_hinges()
|
||||
door_latches();
|
||||
@@ -220,10 +226,9 @@ box_y = pbox_y + 150;
|
||||
translate([950, box_y])
|
||||
box_test();
|
||||
|
||||
|
||||
inserts_y = 0;
|
||||
nuts_y = inserts_y + 20;
|
||||
washers_y = nuts_y + 140;
|
||||
washers_y = nuts_y + 160;
|
||||
screws_y = washers_y + 120;
|
||||
threaded_inserts_y = screws_y + 180;
|
||||
circlips_y = threaded_inserts_y + 30;
|
||||
@@ -293,6 +298,9 @@ translate([x0, pulleys_y])
|
||||
translate([x0, leadnuts_y])
|
||||
leadnuts();
|
||||
|
||||
translate([x0 + 170, leadnuts_y])
|
||||
rod_ends();
|
||||
|
||||
translate([x0 + 120, leadnuts_y])
|
||||
leadnuthousings();
|
||||
|
||||
@@ -306,7 +314,7 @@ translate([x0, linear_bearings_y]) {
|
||||
translate([x0, steppers_y])
|
||||
stepper_motors();
|
||||
|
||||
translate([x0 + 400, steppers_y])
|
||||
translate([x0 + 450, steppers_y])
|
||||
gear_motors();
|
||||
|
||||
translate([x0, sheets_y])
|
||||
@@ -362,9 +370,12 @@ components_y = toggles_y + 40;
|
||||
translate([x2, leds_y])
|
||||
leds();
|
||||
|
||||
translate([x2 + 35, leds_y])
|
||||
translate([x2 + 55, leds_y])
|
||||
ldrs();
|
||||
|
||||
translate([x2 + 87, leds_y])
|
||||
fuseholders();
|
||||
|
||||
translate([x2 + 8, carriers_y])
|
||||
carriers();
|
||||
|
||||
@@ -374,9 +385,6 @@ translate([x2, magnets_y])
|
||||
translate([x2 + 20, carriers_y])
|
||||
led_meters();
|
||||
|
||||
translate([x2 + 70, leds_y])
|
||||
fuseholders();
|
||||
|
||||
translate([x2, spades_y])
|
||||
spades();
|
||||
|
||||
@@ -402,15 +410,17 @@ translate([x2, components_y])
|
||||
components();
|
||||
|
||||
veroboard_y = 0;
|
||||
d_connectors_y = veroboard_y + 110;
|
||||
iecs_y = d_connectors_y + 80;
|
||||
d_connectors_y = veroboard_y + 120;
|
||||
iecs_y = d_connectors_y + 70;
|
||||
modules_y = iecs_y + 60;
|
||||
ssrs_y = modules_y + 80;
|
||||
blowers_y = ssrs_y + 60;
|
||||
hot_ends_y = blowers_y + 100;
|
||||
batteries_y = hot_ends_y + 55;
|
||||
hot_ends_y = blowers_y + 90;
|
||||
batteries_y = hot_ends_y + 65;
|
||||
panel_meters_y = batteries_y + 70;
|
||||
extrusions_y = panel_meters_y + 100;
|
||||
extrusions_y = panel_meters_y + 130;
|
||||
box_sections_y = extrusions_y + 70;
|
||||
|
||||
|
||||
translate([x3, veroboard_y])
|
||||
veroboard_test();
|
||||
@@ -421,10 +431,10 @@ translate([x3 + 50, veroboard_y + 20])
|
||||
translate([x3 + 160, ssrs_y])
|
||||
pcb_mounts();
|
||||
|
||||
translate([x3 + 145, veroboard_y + 16])
|
||||
translate([x3 + 145, veroboard_y])
|
||||
cameras();
|
||||
|
||||
translate([x3 + 145, d_connectors_y - 10])
|
||||
translate([x3 + 145, veroboard_y + 45])
|
||||
camera_housings();
|
||||
|
||||
translate([x3, d_connectors_y])
|
||||
@@ -454,7 +464,7 @@ translate([x3, ssrs_y]) {
|
||||
translate([x3, blowers_y])
|
||||
blowers();
|
||||
|
||||
translate([x3, batteries_y])
|
||||
translate([x2, batteries_y])
|
||||
batteries();
|
||||
|
||||
translate([x3 + 10, hot_ends_y])
|
||||
@@ -463,9 +473,12 @@ 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])
|
||||
box_sections();
|
||||
|
||||
translate([370, transformers_y])
|
||||
transformers();
|
||||
|
||||
@@ -482,7 +495,6 @@ extrusion_brackets_y = rails_y + 250;
|
||||
sk_brackets_y = extrusion_brackets_y + 80;
|
||||
kp_pillow_blocks_y = sk_brackets_y + 60;
|
||||
bearing_blocks_y = kp_pillow_blocks_y + 60;
|
||||
box_sections_y = batteries_y;
|
||||
BLDC_y = bearing_blocks_y + 180;
|
||||
pot_y = bearing_blocks_y;
|
||||
cable_strip_y = sheets_y + 30;
|
||||
@@ -534,8 +546,5 @@ translate([x4, BLDC_y])
|
||||
translate([x4, pot_y])
|
||||
potentiometers();
|
||||
|
||||
translate([x2, box_sections_y])
|
||||
box_sections();
|
||||
|
||||
translate([x6, 125])
|
||||
light_strips();
|
||||
|
104
printed/gridfinity.scad
Normal file
@@ -0,0 +1,104 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2024
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
//
|
||||
//! Generate storage bins compatible with Zack Freedman's Gridfinity design, see <https://www.youtube.com/watch?v=ra_9zU-mnl8&t=37s>
|
||||
//!
|
||||
//! Based on <https://gridfinity.xyz/specification>
|
||||
//!
|
||||
//! More examples [here](examples/Gridfinity).
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/rounded_cylinder.scad>
|
||||
|
||||
pitch = 42;
|
||||
z_step = 7;
|
||||
width = 41.5;
|
||||
|
||||
foot_w = 37.2;
|
||||
foot_h = 1.8;
|
||||
|
||||
lower_chamfer = 0.8;
|
||||
upper_chamfer = 2.15;
|
||||
|
||||
corner_r = 7.5 / 2;
|
||||
foot_r = 3.2 / 2;
|
||||
chamfer_r = 1.6 / 2;
|
||||
|
||||
function gridfinity_bin(name, grid_x, grid_y, grid_z) = [name, [grid_x, grid_y, grid_z], lower_chamfer]; //! Constructor
|
||||
|
||||
function gridfinity_bin_name(type) = type[0]; //! Name for the STL file
|
||||
function gridfinity_bin_size(type) = type[1]; //! Size in grid units
|
||||
|
||||
function gridfinity_base_z() = foot_h + lower_chamfer + upper_chamfer; //! height of base
|
||||
function gridfinity_corner_r() = corner_r; //! Outside corner radius
|
||||
|
||||
function gridfinity_bin_size_mm(type) = //! Overall size of the bin
|
||||
let(s = gridfinity_bin_size(type))
|
||||
[(s.x - 1) * pitch + width, (s.y - 1) * pitch + width, s.z * z_step];
|
||||
|
||||
module gridfinity_bin(type) { //! Create a gridfinity bin, bits to cut out are passed as a child
|
||||
size = gridfinity_bin_size(type);
|
||||
w1 = width - 2 * (lower_chamfer + upper_chamfer);
|
||||
w2 = width - 2 * upper_chamfer;
|
||||
|
||||
stl(gridfinity_bin_name(type)) {
|
||||
translate([-(size.x - 1) / 2 * pitch, -(size.y - 1) / 2 * pitch])
|
||||
for(x = [0 : size.x - 1], y = [0 : size.y - 1])
|
||||
translate([x * pitch, y * pitch]) {
|
||||
hull() {
|
||||
rounded_rectangle([w1, w1, eps], chamfer_r);
|
||||
|
||||
translate_z(lower_chamfer)
|
||||
rounded_rectangle([w2, w2, foot_h + eps], foot_r);
|
||||
}
|
||||
|
||||
hull() {
|
||||
translate_z(lower_chamfer + foot_h)
|
||||
rounded_rectangle([w2, w2, foot_h + eps], foot_r);
|
||||
|
||||
translate_z(lower_chamfer + foot_h + upper_chamfer)
|
||||
rounded_rectangle([width, width, eps], corner_r);
|
||||
}
|
||||
}
|
||||
|
||||
difference() {
|
||||
base_z = gridfinity_base_z();
|
||||
translate_z(base_z)
|
||||
rounded_rectangle([(size.x - 1) * pitch + width, (size.y - 1) * pitch + width, size.z * z_step - base_z], corner_r);
|
||||
|
||||
if($children)
|
||||
children(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module gridfinity_partition(type, cols = 1, rows = 1, wall = 1.6, iwall = squeezed_wall, bwall = 1, corner_r = 4) { //! Passed as child to hollow out specified partitions
|
||||
size = gridfinity_bin_size_mm(type);
|
||||
wx = (size.x - 2 * wall - (cols - 1) * iwall) / cols;
|
||||
wy = (size.y - 2 * wall - (rows - 1) * iwall) / rows;
|
||||
h = size.z - gridfinity_base_z() - bwall;
|
||||
|
||||
for(x = [0 : cols - 1], y = [0 : rows - 1])
|
||||
translate([-size.x / 2 + wall + x * (wx + iwall) + wx / 2,
|
||||
-size.y / 2 + wall + y * (wy + iwall) + wy / 2,
|
||||
size.z + eps])
|
||||
vflip()
|
||||
rounded_top_rectangle([wx, wy, h + eps], corner_r, corner_r);
|
||||
}
|
@@ -40,32 +40,72 @@ function led_bezel_hole_r(type) = //! Panel hole radius
|
||||
module led_bezel(type) { //! Makes the STL for the bezel
|
||||
led = led_bezel_led(type);
|
||||
stl(str(led[0],"_bezel")) {
|
||||
rl = led_diameter(led) / 2;
|
||||
rr = led_rim_dia(led) / 2;
|
||||
wall = led_bezel_wall(type);
|
||||
poly_tube(or = rr + wall + led_bezel_flange(type), ir = rl, h = led_bezel_flange_t(type)); // Flange
|
||||
poly_tube(or = rl + wall, ir = rl, h = led_height(led) - rl - led_rim_t(led)); // Tube up to LED flange
|
||||
poly_tube(or = corrected_radius(rr) + wall, ir = rr, h = led_bezel_height(type)); // Tube beyond the flange
|
||||
if(is_num(led_diameter(led))) {
|
||||
rl = led_diameter(led) / 2;
|
||||
rr = led_rim_dia(led) / 2;
|
||||
poly_tube(or = rr + wall + led_bezel_flange(type), ir = rl, h = led_bezel_flange_t(type)); // Flange
|
||||
poly_tube(or = rl + wall, ir = rl, h = led_height(led) - rl - led_rim_t(led)); // Tube up to LED flange
|
||||
poly_tube(or = corrected_radius(rr) + wall, ir = rr, h = led_bezel_height(type)); // Tube beyond the flange
|
||||
}
|
||||
else {
|
||||
linear_extrude(led_bezel_flange_t(type)) // Flange
|
||||
difference() {
|
||||
offset(wall + led_bezel_flange(type))
|
||||
square(led_rim_dia(led), true);
|
||||
|
||||
square(led_diameter(led), true);
|
||||
}
|
||||
|
||||
linear_extrude(led_height(led) - led_rim_t(led)) // Tube up to the LED flange
|
||||
difference() {
|
||||
offset(wall)
|
||||
square(led_diameter(led), true);
|
||||
|
||||
square(led_diameter(led), true);
|
||||
}
|
||||
|
||||
linear_extrude(led_bezel_height(type)) // Tube beyond the LED flange
|
||||
difference() {
|
||||
offset(wall)
|
||||
square(led_rim_dia(led), true);
|
||||
|
||||
square(led_rim_dia(led), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module led_bezel_retainer(type) { //! Makes the STL for the retaining ring
|
||||
led = led_bezel_led(type);
|
||||
stl(str(led[0],"_bezel_retainer")) {
|
||||
ir = led_bezel_r(type);
|
||||
poly_tube(or = ir + led_bezel_wall(type), ir = ir, h = 4);
|
||||
wall = led_bezel_wall(type);
|
||||
if(is_num(led_diameter(led))) {
|
||||
ir = led_bezel_r(type);
|
||||
poly_tube(or = ir + wall, ir = ir, h = 4);
|
||||
}
|
||||
else
|
||||
linear_extrude(4)
|
||||
difference() {
|
||||
offset(2 * wall)
|
||||
square(led_rim_dia(led), true);
|
||||
|
||||
offset(wall)
|
||||
square(led_rim_dia(led), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module led_bezel_assembly(type, colour = "red") {//! Led bezel with LED
|
||||
led = led_bezel_led(type);
|
||||
d = led_diameter(led);
|
||||
assembly(str(led[0], "_", colour, "_bezel")) {
|
||||
translate_z(led_bezel_flange_t(type)) {
|
||||
vflip()
|
||||
stl_colour(pp1_colour)
|
||||
led_bezel(type);
|
||||
|
||||
translate_z(-led_height(led) + led_diameter(led) / 2)
|
||||
translate_z(-led_height(led) + (is_num(d) ? d / 2 : 0))
|
||||
explode(-20)
|
||||
led(led, colour);
|
||||
}
|
||||
|
@@ -69,7 +69,10 @@ class Part:
|
||||
self.count = 1
|
||||
for arg in args:
|
||||
arg = arg.replace('true', 'True').replace('false', 'False').replace('undef', 'None')
|
||||
exec('self.' + arg)
|
||||
try:
|
||||
exec('self.' + arg)
|
||||
except:
|
||||
print(arg)
|
||||
|
||||
def data(self):
|
||||
return self.__dict__
|
||||
@@ -107,7 +110,7 @@ class BOM:
|
||||
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)]
|
||||
args = match.group(2).split('|')
|
||||
if s[-4:] == ".stl":
|
||||
parts = self.printed
|
||||
else:
|
||||
|
@@ -66,9 +66,16 @@ def make_parts(target, part_type, parts = None):
|
||||
top_dir = set_config(target, lambda: usage(part_type))
|
||||
target_dir = top_dir + part_type + 's'
|
||||
deps_dir = target_dir + "/deps"
|
||||
bom_dir = top_dir + "bom"
|
||||
tmp_dir = mktmpdir(top_dir)
|
||||
|
||||
#
|
||||
# Check we have some of this type
|
||||
#
|
||||
bom_dir = top_dir + "bom"
|
||||
all_parts = bom_to_parts(bom_dir, part_type)
|
||||
if not all_parts:
|
||||
return
|
||||
|
||||
tmp_dir = mktmpdir(top_dir)
|
||||
if not os.path.isdir(target_dir):
|
||||
os.makedirs(target_dir)
|
||||
|
||||
@@ -83,7 +90,6 @@ def make_parts(target, part_type, parts = None):
|
||||
#
|
||||
# Decide which files to make
|
||||
#
|
||||
all_parts = bom_to_parts(bom_dir, part_type)
|
||||
if parts:
|
||||
targets = list(parts) #copy the list so we dont modify the list passed in
|
||||
else:
|
||||
|
@@ -37,19 +37,21 @@ def usage():
|
||||
sys.exit(1)
|
||||
|
||||
def render(target, type):
|
||||
#
|
||||
# Make the target directory
|
||||
#
|
||||
top_dir = set_config(target, usage)
|
||||
tmp_dir = mktmpdir(top_dir)
|
||||
target_dir = top_dir + type + 's'
|
||||
bom_dir = top_dir + 'bom'
|
||||
if not os.path.isdir(target_dir):
|
||||
os.makedirs(target_dir)
|
||||
#
|
||||
# Find all the parts
|
||||
#
|
||||
parts = bom_to_parts(bom_dir, type)
|
||||
if not parts:
|
||||
return
|
||||
#
|
||||
# Make the target directory
|
||||
#
|
||||
tmp_dir = mktmpdir(top_dir)
|
||||
target_dir = top_dir + type + 's'
|
||||
if not os.path.isdir(target_dir):
|
||||
os.makedirs(target_dir)
|
||||
#
|
||||
# Read the json bom to get the colours
|
||||
#
|
||||
@@ -59,11 +61,14 @@ def render(target, type):
|
||||
|
||||
things = { 'stl' : 'printed', 'dxf' : 'routed', 'svg' : 'routed' }[type]
|
||||
colours = {}
|
||||
cameras = {}
|
||||
for ass in flat_bom:
|
||||
for part in ass[things]:
|
||||
obj = ass[things][part]
|
||||
if "colour" in obj:
|
||||
colours[part] = obj["colour"]
|
||||
if "camera" in obj:
|
||||
cameras[part] = obj["camera"]
|
||||
#
|
||||
# Remove unused png files
|
||||
#
|
||||
@@ -85,13 +90,16 @@ def render(target, type):
|
||||
png_maker_name = tmp_dir + "/png.scad"
|
||||
pp1 = [0, 146/255, 0]
|
||||
colour = pp1
|
||||
camera = "0,0,0,70,0,315,500"
|
||||
if part in cameras:
|
||||
camera = cameras[part]
|
||||
if part in colours:
|
||||
colour = colours[part]
|
||||
if not '[' in colour:
|
||||
colour = '"' + colour + '"'
|
||||
with open(png_maker_name, "w") as f:
|
||||
f.write('color(%s) import("%s");\n' % (colour, reltmp(part_file, target)))
|
||||
cam = "--camera=0,0,0,70,0,315,500" if type == 'stl' else "--camera=0,0,0,0,0,0,500"
|
||||
cam = "--camera=" + camera if type == 'stl' else "--camera=0,0,0,0,0,0,500"
|
||||
render = "--preview" if type == 'stl' or colour != pp1 else "--render"
|
||||
tmp_name = tmp_dir + '/' + part[:-4] + '.png'
|
||||
dummy_deps_name = tmp_dir + '/tmp.deps' # work around for OpenSCAD issue #3879
|
||||
|
@@ -353,7 +353,7 @@ def views(target, do_assemblies = None):
|
||||
print('### 3D Printed parts', file = doc_file)
|
||||
keys = sorted(list(printed.keys()))
|
||||
for i, p in enumerate(keys):
|
||||
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', printed[p]["count"], p), file = doc_file, end = '')
|
||||
print('%s %d x [%s](stls/%s) |' % ('\n|' if not (i % 3) else '', printed[p]["count"], p, p), file = doc_file, end = '')
|
||||
if (i % 3) == 2 or i == len(printed) - 1:
|
||||
n = (i % 3) + 1
|
||||
print('\n|%s' % ('---|' * n), file = doc_file)
|
||||
@@ -368,7 +368,10 @@ def views(target, do_assemblies = None):
|
||||
print("### CNC Routed parts", file = doc_file)
|
||||
keys = sorted(list(routed.keys()))
|
||||
for i, r in enumerate(keys):
|
||||
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', routed[r]["count"], r), file = doc_file, end = '')
|
||||
if(r.endswith('dxf')):
|
||||
print('%s %d x [%s](dxfs/%s) |' % ('\n|' if not (i % 3) else '', routed[r]["count"], r, r), file = doc_file, end = '')
|
||||
elif(r.endswith('svg')):
|
||||
print('%s %d x [%s](svgs/%s) |' % ('\n|' if not (i % 3) else '', routed[r]["count"], r, r), file = doc_file, end = '')
|
||||
if (i % 3) == 2 or i == len(routed) - 1:
|
||||
n = (i % 3) + 1
|
||||
print('\n|%s' % ('---|' * n), file = doc_file)
|
||||
@@ -379,7 +382,7 @@ def views(target, do_assemblies = None):
|
||||
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("Unknown file type ", part[-4:], " for file ", part)
|
||||
print('\n', file = doc_file)
|
||||
print('\n', file = doc_file)
|
||||
|
||||
|
37
tests/HT_pipes.scad
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// NopSCADlib Copyright Jan Giebels 2024
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/ht_pipes.scad>
|
||||
|
||||
module ht_pipes()
|
||||
color("grey")
|
||||
layout([for(p = ht_pipes) 40 + pipe_od(p)]) let(p = ht_pipes[$i], len = pipe_length(p)) {
|
||||
if(len <= 34)
|
||||
translate_z(len)
|
||||
ht_cap(p);
|
||||
|
||||
if(len >= 101)
|
||||
ht_pipe(p);
|
||||
|
||||
if(len == 100)
|
||||
ht_tpipe(p);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
ht_pipes();
|
@@ -23,7 +23,7 @@ include <../vitamins/leds.scad>
|
||||
use <../printed/led_bezel.scad>
|
||||
|
||||
module led_bezels()
|
||||
layout([for(l = LEDs) led_diameter(l)], 6) let(l = LEDs[$i], b = led_bezel(l))
|
||||
layout([for(l = LEDs) max(led_diameter(l))], 6) let(l = LEDs[$i], b = led_bezel(l))
|
||||
if($preview)
|
||||
led_bezel_fastened_assembly(b, 3, ["yellow", "blue", "red", "orange"][$i % 4]);
|
||||
else {
|
||||
|
@@ -22,7 +22,7 @@ use <../utils/layout.scad>
|
||||
include <../vitamins/leds.scad>
|
||||
|
||||
module leds()
|
||||
layout([for(l = LEDs) led_diameter(l)], 5)
|
||||
layout([for(l = LEDs) max(led_diameter(l))], 5)
|
||||
led(LEDs[$i], ["green", "blue", "red", "orange"][$i % 4]);
|
||||
|
||||
if($preview)
|
||||
|
@@ -61,7 +61,7 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
// components
|
||||
[
|
||||
[ 20, -5, 180, "trimpot10"],
|
||||
[ 20, -15, 90, "trimpot10", true],
|
||||
[ 20, -18, 90, "trimpot10", true],
|
||||
[ 19, 2, 90, "smd_led", LED1206, "blue"],
|
||||
[ 16, 2, 90, "smd_led", LED0805, "red"],
|
||||
[ 13, 2, 90, "smd_led", LED0603, "orange"],
|
||||
@@ -82,6 +82,7 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 32, 3, -90, "smd_diode",DO214AC, "SS34"],
|
||||
[ 26, 2, -90, "smd_pot", TC33X1, "10K"],
|
||||
[ 26, 6, -90, "smd_coax",U_FL_R_SMT_1],
|
||||
[ 8, 23, 0, "smd_250V_fuse", OMT250, "2A 250V"],
|
||||
|
||||
[ 26, 10, -90, "smd_sot", SOT23, "2N7000"],
|
||||
[ 28, 16, -90, "smd_sot", SOT223, "LM117"],
|
||||
@@ -116,8 +117,8 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 5, 220, 180, "hdmi"],
|
||||
[ 3, 235, 180, "mini_hdmi"],
|
||||
[ 38, 190, -90, "text", 25, 4, "Silkscreen", "Liberation Sans:style=Bold"],
|
||||
[ 25, 200, 0, "buzzer", 4.5, 8.5],
|
||||
[ 25, 218, 0, "buzzer"],
|
||||
[ 25, 205, 0, "buzzer", 4.5, 8.5],
|
||||
[ 25, 220, 0, "buzzer"],
|
||||
|
||||
[ 45, 1, 0, "link", inch(0.4), 0.75, undef, undef, [1.5, "red"]], // Sleeved link
|
||||
[ 45, 3, 0, "link", inch(0.4)], // Flat link
|
||||
@@ -130,6 +131,11 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 35, 17, 0, "vero_pin", true],
|
||||
[ 35, 8, 180, "rd_transistor", TO92, "78L05", undef, undef, "Regulator"],
|
||||
[ 35, 13, 180, "rd_transistor", E_LINE, "ZTX853"],
|
||||
[ 25, 190, 0, "rd_electrolytic", ECAP8x11, "220uF35V"],
|
||||
[ 25, 180, 90, "rd_disc", ERZV07D471, "471"],
|
||||
[ 25, 170, 90, "rd_disc", 6p4mm_disc, "100n"],
|
||||
[ 30, 170, 90, "rd_disc", 10mm_disc, "1nF Y2"],
|
||||
[ 90, 135, -90, "rd_module", HF33F, "012-HSL-3F"],
|
||||
[ 35, 3, 0, "link", 0, 5], // Vertical wire
|
||||
|
||||
[ 60, 3, 0, "link", inch(0.2), inch(0.4)], // Raised link
|
||||
@@ -147,6 +153,9 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 30, 130,-90, "rd_xtal", ACT1100, "40MHz", 0.5 ],
|
||||
[ 30, 150,-90, "rd_xtal", ACT1700, "80MHz", 0.5 ],
|
||||
|
||||
[ 93, 230,-90, "rd_box_cap", BOXC18x10x16, "X2 rated film capacitor", "0.47uF 250V" ],
|
||||
[ 93, 210,-90, "rd_box_cap", BOXC18x5x11, "X2 rated film capacitor", "0.1uF 250V" ],
|
||||
|
||||
[ 77, 15, -90, "flex"],
|
||||
[ 95, 15, -90, "flat_flex"],
|
||||
[ 87, 15, -90, "flat_flex", true],
|
||||
@@ -179,9 +188,9 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 55, 170, 0, "button_4p5mm"],
|
||||
[ 50, 185, 0, "microswitch", small_microswitch],
|
||||
[ 52, 200, 0, "pcb", 11, TMC2130 ],
|
||||
[ 80, 210, 0, "pdip", 24, "27C32", true, inch(0.6) ],
|
||||
[ 76, 210, 0, "pdip", 24, "27C32", true, inch(0.6) ],
|
||||
[ 80, 180, 0, "pdip", 8, "NE555" ],
|
||||
[ 71, 180, 0, "smd_inductor", IND2525, "4R7"],
|
||||
[ 71, 180, 0, "smd_inductor", IND2525, "4R7"],
|
||||
|
||||
[ 87, 166, -90, "smd_soic", SOIC18, "PIC18F88"],
|
||||
[ 78, 166, -90, "smd_soic", SOIC14, "74HC00"],
|
||||
@@ -189,14 +198,16 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 64, 166, -90, "smd_soic", SOIC8, "M34063"],
|
||||
[ 70, 150, 0, "chip", 10, 5, 1, grey(20)],
|
||||
|
||||
[90, 140, -90, "relay", HF33F, "012-HSL-3F"],
|
||||
[ 90, 140, -90, "relay", HF33F, "012-HSL-3F"],
|
||||
|
||||
|
||||
[ 52, 206, 0, "2p54socket", 8, 1 ],
|
||||
[ 52, 194, 0, "2p54socket", 8, 1, false, 0, false, "red" ],
|
||||
[ 50, 220, 0, "standoff", 5, 4.5, 12.5, 2.54],
|
||||
[ 50, 240, 0, "potentiometer"],
|
||||
[ 55, 220, 0, "standoff", 5, 4.5, 12.5, 2.54],
|
||||
[ 60, 240, 0, "potentiometer"],
|
||||
[ 75, 240, 0, "potentiometer", KY_040_encoder, 8],
|
||||
[ 40, 235, -90, "rd_cm_choke", ATX_CM_CHOKE, "3.5mH"],
|
||||
[ 40, 217, 0, "rd_coil", IND16x10, "4.7uH"],
|
||||
[ 30, 85, -90, "7seg", WT5011BSR, 2],
|
||||
[ 30, 55, -90, "D_plug", DCONN9],
|
||||
],
|
||||
|
@@ -64,7 +64,12 @@ module smds() {
|
||||
let(s = smd_soics[$i])
|
||||
smd_soic(s, s[0]);
|
||||
|
||||
translate([0, 39])
|
||||
translate([0, 36.5])
|
||||
layout([for(i = smd_250V_fuses) smd_250V_fuse_size(i).x], 1)
|
||||
let(i = smd_250V_fuses[$i])
|
||||
smd_250V_fuse(i, "2A 250V");
|
||||
|
||||
translate([0, 45])
|
||||
layout([for(i = smd_inductors) smd_inductor_leads(i).x], 1)
|
||||
let(i = smd_inductors[$i])
|
||||
smd_inductor(i, ["4R7", "10R"][$i % 2]);
|
||||
|
@@ -26,7 +26,7 @@ include <../vitamins/cameras.scad>
|
||||
use <../vitamins/pcb.scad>
|
||||
|
||||
module camera_housings()
|
||||
layout([for(c = cameras) pcb_length(camera_pcb(c))], 10, false) let(c = cameras[$i])
|
||||
layout([for(c = cameras) pcb_length(camera_pcb(c))], 15, false) let(c = cameras[$i])
|
||||
if(pcb_screw(camera_pcb(c)))
|
||||
camera_fastened_assembly(c, 3);
|
||||
|
||||
|
37
tests/chamfer.scad
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2025
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/chamfer.scad>
|
||||
|
||||
module chamfer() {
|
||||
difference() {
|
||||
h = 1;
|
||||
rounded_rectangle([20, 20, h], 2);
|
||||
|
||||
translate_z(h)
|
||||
chamfer_hole(h + eps) {
|
||||
circle(2);
|
||||
|
||||
translate([-1, 0])
|
||||
square([2, 5]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chamfer();
|
@@ -132,5 +132,57 @@ module coreXY_belts_test() {
|
||||
}
|
||||
}
|
||||
|
||||
if ($preview)
|
||||
module coreXY_motor_in_back_test1() {
|
||||
size = [200,200];
|
||||
pos = [100,100];
|
||||
separation = [20,5,10];
|
||||
|
||||
|
||||
coreXY(coreXY_GT2_20_16, size, pos, separation, x_gap = 0, plain_idler_offset = [0, 0], upper_drive_pulley_offset = [0, 0], lower_drive_pulley_offset = [0, 0], show_pulleys = true, left_lower = false, motor_back = true);
|
||||
|
||||
rotate([180,0,0])
|
||||
translate (
|
||||
[ separation.x/2
|
||||
, 0
|
||||
, -separation.z/2 -15 ])
|
||||
NEMA(NEMA17_40);
|
||||
translate (
|
||||
[ size.x - separation.x/2
|
||||
, 0
|
||||
, -separation.z/2 - 15 ])
|
||||
NEMA(NEMA17_40);
|
||||
}
|
||||
|
||||
module coreXY_motor_in_back_test2() {
|
||||
size = [200,200];
|
||||
pos = [100,100];
|
||||
separation = [0,5,10];
|
||||
upper_drive_pulley_offset = [20, 5];
|
||||
lower_drive_pulley_offset = [20, 5];
|
||||
|
||||
|
||||
coreXY(coreXY_GT2_20_16, size, pos, separation, x_gap = 0, plain_idler_offset = [20, 0], upper_drive_pulley_offset = upper_drive_pulley_offset, lower_drive_pulley_offset = lower_drive_pulley_offset, show_pulleys = true, left_lower = false, motor_back = true);
|
||||
|
||||
translate (
|
||||
[ size.x - separation.x/2 - lower_drive_pulley_offset.x
|
||||
, lower_drive_pulley_offset.y
|
||||
, -separation.z/2 - 15 ])
|
||||
NEMA(NEMA17_40);
|
||||
|
||||
translate (
|
||||
[ separation.x/2 + upper_drive_pulley_offset.x
|
||||
, upper_drive_pulley_offset.y
|
||||
, separation.z/2 - 25 ])
|
||||
NEMA(NEMA17_40);
|
||||
}
|
||||
|
||||
|
||||
if ($preview) {
|
||||
coreXY_belts_test();
|
||||
|
||||
translate ([-250, 0,0])
|
||||
coreXY_motor_in_back_test1();
|
||||
|
||||
translate ([-250, -250,0])
|
||||
coreXY_motor_in_back_test2();
|
||||
}
|
||||
|