Compare commits
105 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
b424bea622 | ||
|
c8d9bb7d09 | ||
|
c35c732324 | ||
|
f5528c5a9a | ||
|
09bce09a85 | ||
|
389e2f9c2e | ||
|
c35e263113 | ||
|
bad33da95e | ||
|
f727e1d27d | ||
|
5ddd9f6324 | ||
|
f5d0bfb6c8 | ||
|
b2117fa99a | ||
|
6687a4a7c6 | ||
|
8524ddd34d | ||
|
427ef610de | ||
|
c8869fc415 | ||
|
21c06667a3 | ||
|
d19fad3f9f | ||
|
172bfb16d8 | ||
|
491dbae13b | ||
|
99ebfffd2b | ||
|
f04486a040 | ||
|
42a7d222b5 | ||
|
598a01295f | ||
|
5f72a12125 | ||
|
82502eb470 | ||
|
b541298eae | ||
|
9884160ed5 | ||
|
046c475e18 | ||
|
7b111c016a | ||
|
38c973b316 | ||
|
042d809ed0 | ||
|
3864839e52 | ||
|
2ba2c2c115 | ||
|
e3716ce8f9 | ||
|
c4f24974ab | ||
|
61dae9c7a4 | ||
|
41a26c453c | ||
|
bab4c8e8af | ||
|
a5c4bf05ad | ||
|
a65add65ac | ||
|
c449dd0a24 | ||
|
f16f7ddb09 | ||
|
9b5ec6af1a | ||
|
50958b064d | ||
|
c37373c920 | ||
|
700f5a2205 | ||
|
4993c3e82d | ||
|
c6b280f0e8 | ||
|
6012787781 | ||
|
30db66034c | ||
|
d6f344be3d | ||
|
f6aa3b3426 | ||
|
91c8c7bf4d | ||
|
dc93b8dcdf | ||
|
c9c094248e | ||
|
119c2cb6f4 | ||
|
24b391578b | ||
|
ec49ce1a6c | ||
|
f0c25d37b0 | ||
|
588a1edf62 | ||
|
3299aad5c8 | ||
|
74c52aac04 | ||
|
726d9ed2dc | ||
|
8a838dd1ce | ||
|
181c6ac624 | ||
|
e952aa7840 | ||
|
466ee31e10 | ||
|
4c926c529b | ||
|
edb1eccbf1 | ||
|
061812cc8b | ||
|
ce0c97b45e | ||
|
696b14699c | ||
|
2166a9be6a | ||
|
511729008d | ||
|
5111ec04bc | ||
|
cef3a620a6 | ||
|
da5191e52c | ||
|
d9af5b7f70 | ||
|
c30d7f1ad9 | ||
|
a5382cbe04 | ||
|
00c5c90a5e | ||
|
01c26d8a34 | ||
|
ef2102420b | ||
|
540f841163 | ||
|
1045502efb | ||
|
485184f092 | ||
|
b893c9069a | ||
|
69f4ced29d | ||
|
5c1aa849fe | ||
|
9d65f69bf3 | ||
|
515b99fdc0 | ||
|
631d052c68 | ||
|
1247303cb9 | ||
|
290be4beb6 | ||
|
24e941799d | ||
|
6a556c5879 | ||
|
14ab1bb8b6 | ||
|
be53547728 | ||
|
ba7d7d32ad | ||
|
d3049bc81b | ||
|
df35e14fc7 | ||
|
21c2aa5d62 | ||
|
c982876ebc | ||
|
5ccda42e5b |
194
CHANGELOG.md
@@ -3,6 +3,200 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
### [v17.6.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.6.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.5.0...v17.6.0 "diff with v17.5.0")
|
||||
* 2021-10-26 [`f5528c5`](https://github.com/nophead/NopSCADlib/commit/f5528c5a9a51abdd12443a677236ac8610206c20 "show commit") [C.P.](# "Chris Palmer") Single `7_segment` objects can now have multiple digits.
|
||||
This is deduced from the digit size compared to the overall size.
|
||||
The decimal point is now suppressed if there are not enough pins.
|
||||
Added 02531A and 02352A 3 digit displays.
|
||||
|
||||
* 2021-10-26 [`09bce09`](https://github.com/nophead/NopSCADlib/commit/09bce09a85fee3f3ac684743467329c18f4ebb73 "show commit") [C.P.](# "Chris Palmer") Typo
|
||||
|
||||
### [v17.5.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.5.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.4.0...v17.5.0 "diff with v17.4.0")
|
||||
* 2021-10-24 [`bad33da`](https://github.com/nophead/NopSCADlib/commit/bad33da95eb3b20ccbb6e4906dccfe51e8f4372c "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2021-10-21 [`427ef61`](https://github.com/nophead/NopSCADlib/commit/427ef610def6ef2744d565329069719e485a500e "show commit") [M.B.](# "Martin Budden") Allowed naming of magnets. Added radial encoder magnet.
|
||||
|
||||
### [v17.4.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.4.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.3.0...v17.4.0 "diff with v17.3.0")
|
||||
* 2021-10-24 [`f5d0bfb`](https://github.com/nophead/NopSCADlib/commit/f5d0bfb6c80111399f5fa2aeb8bab5bab9101285 "show commit") [C.P.](# "Chris Palmer") Fixed drill `center` parameter in `poly_drill()`.
|
||||
|
||||
* 2021-10-24 [`b2117fa`](https://github.com/nophead/NopSCADlib/commit/b2117fa99a57341f9c93eed97c392c18173aa73c "show commit") [C.P.](# "Chris Palmer") `atx_psu_cutout(type)` now parametric and can be shown in the test.
|
||||
ATX300 PSU now has a correct cutout and more accurate grill holes.
|
||||
The four margins around grill holes can now be specified.
|
||||
|
||||
* 2021-10-24 [`6687a4a`](https://github.com/nophead/NopSCADlib/commit/6687a4a7c62d526a5f376db903dcd74c4fb8a25c "show commit") [C.P.](# "Chris Palmer") Added `jack_4mm_flange_radius()`.
|
||||
|
||||
* 2021-10-24 [`8524ddd`](https://github.com/nophead/NopSCADlib/commit/8524ddd34dd93d0bf5ddf538984809b8f0f8c986 "show commit") [C.P.](# "Chris Palmer") Foot now lowered by squeeze distance so the washer is visible.
|
||||
|
||||
### [v17.3.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.3.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.2.2...v17.3.0 "diff with v17.2.2")
|
||||
* 2021-10-20 [`21c0666`](https://github.com/nophead/NopSCADlib/commit/21c06667a3c5a0bc65440b990e28b8a2f93c7c32 "show commit") [C.P.](# "Chris Palmer") Added ATX300 PSU model.
|
||||
|
||||
* 2021-10-20 [`d19fad3`](https://github.com/nophead/NopSCADlib/commit/d19fad3f9f7e6eba94b2005b4798b5914fff4b69 "show commit") [C.P.](# "Chris Palmer") PSU grills can now have different holes sizes, spacing, round or heaxagonal and avoid a list of rectangular regions.
|
||||
|
||||
* 2021-10-20 [`172bfb1`](https://github.com/nophead/NopSCADlib/commit/172bfb16d8ec8ffee8b5185ef42867b37ab6bce1 "show commit") [C.P.](# "Chris Palmer") Added lugless pressfit IEC inlet.
|
||||
|
||||
* 2021-10-09 [`491dbae`](https://github.com/nophead/NopSCADlib/commit/491dbae13b9ff2736324ff084c6a6f313b4a09fc "show commit") [C.P.](# "Chris Palmer") `screw_shorter_than()` will return 4 or 3 for short grub screws.
|
||||
|
||||
#### [v17.2.2](https://github.com/nophead/NopSCADlib/releases/tag/v17.2.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v17.2.1...v17.2.2 "diff with v17.2.1")
|
||||
* 2021-10-02 [`046c475`](https://github.com/nophead/NopSCADlib/commit/046c475e1833c09a925a5310d1ccc6e4b07e7f89 "show commit") [M.B.](# "Martin Budden") Set convexity to 8 for `linear_extrude` of extrusion.
|
||||
|
||||
#### [v17.2.1](https://github.com/nophead/NopSCADlib/releases/tag/v17.2.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v17.2.0...v17.2.1 "diff with v17.2.0")
|
||||
* 2021-10-06 [`5f72a12`](https://github.com/nophead/NopSCADlib/commit/5f72a1212514ee7f8a795b53b1d1d180329660df "show commit") [C.P.](# "Chris Palmer") Nuts shown on jacks and fuseholders only shown threaded when exploded.
|
||||
|
||||
### [v17.2.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.2.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.1.0...v17.2.0 "diff with v17.1.0")
|
||||
* 2021-10-06 [`82502eb`](https://github.com/nophead/NopSCADlib/commit/82502eb470127b28e4036821077cbdbd06c17e9e "show commit") [C.P.](# "Chris Palmer") Added `pot_nut()` module to draw potentiometer nuts and washers.
|
||||
|
||||
### [v17.1.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.1.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.0.1...v17.1.0 "diff with v17.0.1")
|
||||
* 2021-10-05 [`b541298`](https://github.com/nophead/NopSCADlib/commit/b541298eae361b80df3c6c5797f3940a37fc2a38 "show commit") [C.P.](# "Chris Palmer") Printed foot assembly can now omit the top washer when space is at a premium.
|
||||
Now correctly shows the screw in the squeezed position.
|
||||
|
||||
* 2021-10-02 [`9884160`](https://github.com/nophead/NopSCADlib/commit/9884160ed5e8cd7d1f44c6fee950e3682714da9c "show commit") [C.P.](# "Chris Palmer") Updated the gallery
|
||||
|
||||
#### [v17.0.1](https://github.com/nophead/NopSCADlib/releases/tag/v17.0.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v17.0.0...v17.0.1 "diff with v17.0.0")
|
||||
* 2021-10-01 [`38c973b`](https://github.com/nophead/NopSCADlib/commit/38c973b316a853fcbef3ccb857d99404a772d9dd "show commit") [C.P.](# "Chris Palmer") FR4 veroboard made the correct colour.
|
||||
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 [`2ba2c2c`](https://github.com/nophead/NopSCADlib/commit/2ba2c2c115d4ab6c2371c662a3e54d7c77aa7785 "show commit") [C.P.](# "Chris Palmer") Removed some unused dependencies.
|
||||
|
||||
## [v17.0.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.0.0 "show release") Breaking Changes [...](https://github.com/nophead/NopSCADlib/compare/v16.2.0...v17.0.0 "diff with v16.2.0")
|
||||
* 2021-09-28 [`a5c4bf0`](https://github.com/nophead/NopSCADlib/commit/a5c4bf05adbf53cb7eb113db1139b65eb616a2e0 "show commit") [M.B.](# "Martin Budden") Added hot end style string literals following discussion.
|
||||
|
||||
* 2021-09-28 [`a65add6`](https://github.com/nophead/NopSCADlib/commit/a65add65acdfeb97a657e03b9398d5376f497e85 "show commit") [M.B.](# "Martin Budden") Removed hotend global enums.
|
||||
|
||||
### [v16.2.0](https://github.com/nophead/NopSCADlib/releases/tag/v16.2.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v16.1.0...v16.2.0 "diff with v16.1.0")
|
||||
* 2021-09-29 [`bab4c8e`](https://github.com/nophead/NopSCADlib/commit/bab4c8e8afcc9e96ada5ae8d7636f3f203c36a2c "show commit") [C.P.](# "Chris Palmer") `TO247_size()` now also returns lead height and the length of the wide bit.
|
||||
TO247 leads fixed at 3.
|
||||
Lead length removed from TO220 and TO247 vitamin string.
|
||||
|
||||
### [v16.1.0](https://github.com/nophead/NopSCADlib/releases/tag/v16.1.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v16.0.3...v16.1.0 "diff with v16.0.3")
|
||||
* 2021-09-27 [`f16f7dd`](https://github.com/nophead/NopSCADlib/commit/f16f7ddb0943469a4e9aeb2aec9e6fc9e418c2dc "show commit") [C.P.](# "Chris Palmer") Images reverted to last OpenSCAD release versions.
|
||||
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.
|
||||
Trainling 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 [`c37373c`](https://github.com/nophead/NopSCADlib/commit/c37373c920d3b438895ef535b0c06d0d00675609 "show commit") [C.P.](# "Chris Palmer") Added `TO247()` and `TO247_size()` to `component.scad`.
|
||||
|
||||
* 2021-09-27 [`700f5a2`](https://github.com/nophead/NopSCADlib/commit/700f5a2205173e12fad42df2f57d2c105608204e "show commit") [C.P.](# "Chris Palmer") `fanguard()` can now be made without screw holes to get just the grill.
|
||||
|
||||
* 2021-09-27 [`4993c3e`](https://github.com/nophead/NopSCADlib/commit/4993c3e82deffd933a81e39b670bb14886790b5f "show commit") [C.P.](# "Chris Palmer") Module blurb parenthesis parsing is now greedy to handle args that default to function calls.
|
||||
This means that library modules cannot be one liners.
|
||||
|
||||
* 2021-09-26 [`c6b280f`](https://github.com/nophead/NopSCADlib/commit/c6b280f0e8d6780394bf63fc7efa9c1075589abe "show commit") [C.P.](# "Chris Palmer") `_box_assembly()` fix for corners `=` 0.
|
||||
|
||||
* 2021-09-26 [`6012787`](https://github.com/nophead/NopSCADlib/commit/601278778147c66288049b768be291c714fde6e0 "show commit") [C.P.](# "Chris Palmer") Added `jack_4mm_plastic()`.
|
||||
|
||||
* 2021-09-26 [`30db660`](https://github.com/nophead/NopSCADlib/commit/30db66034c7fedf0f07b542908a07f73efd9dc08 "show commit") [C.P.](# "Chris Palmer") `Rounded_polygons` are now generated by a function returning a point list.
|
||||
The module version simply passes this to polygon.
|
||||
The arcs now sections of a `circle4n()` rather than a `circle()`.
|
||||
|
||||
#### [v16.0.3](https://github.com/nophead/NopSCADlib/releases/tag/v16.0.3 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v16.0.2...v16.0.3 "diff with v16.0.2")
|
||||
* 2021-09-16 [`f6aa3b3`](https://github.com/nophead/NopSCADlib/commit/f6aa3b342650062cd8947aa36e2ae93242752d4b "show commit") [C.P.](# "Chris Palmer") `fuseholder_hole()` now makes a `poly_hole` when `cnc_bit_r` is 0.
|
||||
|
||||
* 2021-09-16 [`91c8c7b`](https://github.com/nophead/NopSCADlib/commit/91c8c7bf4d67cf93c47f41cd5984cb23271205cb "show commit") [C.P.](# "Chris Palmer") `cnc_bit_r` is now set to zero in stl(), so holes are suitable for 3D printing rather than routing.
|
||||
|
||||
* 2021-09-16 [`dc93b8d`](https://github.com/nophead/NopSCADlib/commit/dc93b8dcdf484dbb50cdee5908a91a3f322e6610 "show commit") [C.P.](# "Chris Palmer") Added platters and extrusion overrides to the example project.
|
||||
|
||||
#### [v16.0.2](https://github.com/nophead/NopSCADlib/releases/tag/v16.0.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v16.0.1...v16.0.2 "diff with v16.0.1")
|
||||
* 2021-09-14 [`119c2cb`](https://github.com/nophead/NopSCADlib/commit/119c2cb6f46ea00c9238da6d98305e6479f0452c "show commit") [C.P.](# "Chris Palmer") Can now make perfboards with screws holes only at one end.
|
||||
`I.e`. for making models of chopped down boards.
|
||||
|
||||
* 2021-09-14 [`24b3915`](https://github.com/nophead/NopSCADlib/commit/24b391578b1b68f1c65eb9c48458151a80ceaf5f "show commit") [C.P.](# "Chris Palmer") Fixed recently created bug trying to delete non-existent thumbnail diffs.
|
||||
|
||||
#### [v16.0.1](https://github.com/nophead/NopSCADlib/releases/tag/v16.0.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v16.0.0...v16.0.1 "diff with v16.0.0")
|
||||
* 2021-09-12 [`f0c25d3`](https://github.com/nophead/NopSCADlib/commit/f0c25d37b0c19f76c3f3e0b4d9cabc7587f9efb5 "show commit") [C.P.](# "Chris Palmer") Workarounds for bugs in the OpenSCAD snapshots.
|
||||
|
||||
## [v16.0.0](https://github.com/nophead/NopSCADlib/releases/tag/v16.0.0 "show release") Breaking Changes [...](https://github.com/nophead/NopSCADlib/compare/v15.25.0...v16.0.0 "diff with v15.25.0")
|
||||
* 2021-09-11 [`3299aad`](https://github.com/nophead/NopSCADlib/commit/3299aad5c83d1fe21d3bdddd1450f8de19078d13 "show commit") [C.P.](# "Chris Palmer") Parametric potentiometers added, changes PCB "potentiometer" parameters.
|
||||
The first one is now the type that defaults to the previous BigTreeTech version.
|
||||
The second parameter is the shaft length override.
|
||||
|
||||
* Added `ESP32_DOIT_V1,` ArduinoNano and `KY_040` breakout PCBs.
|
||||
|
||||
* 2021-09-11 [`74c52aa`](https://github.com/nophead/NopSCADlib/commit/74c52aac0428995930b4af562a480025003b992d "show commit") [C.P.](# "Chris Palmer") Can now make perfboard without screw holes.
|
||||
Fixed missing items from last commit.
|
||||
|
||||
* 2021-09-11 [`726d9ed`](https://github.com/nophead/NopSCADlib/commit/726d9ed2dc921b5a7ef8c5b0fa6b17628f706bf8 "show commit") [C.P.](# "Chris Palmer") Can now draw right angle Molex KK connectors and can skip pins to allow high voltage.
|
||||
|
||||
* 2021-09-11 [`8a838dd`](https://github.com/nophead/NopSCADlib/commit/8a838dd1ceaac7d595aea47494cb28b9a424ee8a "show commit") [C.P.](# "Chris Palmer") Added `pcb_grid_components()` module for placing parts on a perfboard.
|
||||
|
||||
* 2021-09-11 [`181c6ac`](https://github.com/nophead/NopSCADlib/commit/181c6ac6248e7db6204b6d461f122e719492b0cc "show commit") [C.P.](# "Chris Palmer") Added `vero_pin` PCB component.
|
||||
|
||||
* 2021-09-11 [`e952aa7`](https://github.com/nophead/NopSCADlib/commit/e952aa7840cf4f3765c518a481d32f582bef27b4 "show commit") [C.P.](# "Chris Palmer") PCB chip component can now be round if width is zero to fake round buttons.
|
||||
|
||||
* 2021-09-11 [`466ee31`](https://github.com/nophead/NopSCADlib/commit/466ee31e10e670ff35e22429084a34612f821f7d "show commit") [C.P.](# "Chris Palmer") Added `Jack_4mm_shielded_nut_radius()`.
|
||||
|
||||
* 2021-09-11 [`4c926c5`](https://github.com/nophead/NopSCADlib/commit/4c926c529b199dbe589fb0c43f323db94ffe5597 "show commit") [C.P.](# "Chris Palmer") Fixed axial lead min pitch bug.
|
||||
|
||||
* 2021-09-11 [`edb1ecc`](https://github.com/nophead/NopSCADlib/commit/edb1eccbf156ff4b06723b18f832637328b1c3e0 "show commit") [C.P.](# "Chris Palmer") TFT128x160 LCD display added.
|
||||
|
||||
* 2021-09-11 [`061812c`](https://github.com/nophead/NopSCADlib/commit/061812cc8bc51e5a957d7d3acaffd9bcda14cc15 "show commit") [C.P.](# "Chris Palmer") PMMA1p25 sheet added.
|
||||
|
||||
* 2021-09-11 [`ce0c97b`](https://github.com/nophead/NopSCADlib/commit/ce0c97b45e6e501554e66bcd4140d4dd3f532a1c "show commit") [C.P.](# "Chris Palmer") `7_segment` displays added as PCB component.
|
||||
|
||||
### [v15.25.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.25.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.24.0...v15.25.0 "diff with v15.24.0")
|
||||
* 2021-09-05 [`2166a9b`](https://github.com/nophead/NopSCADlib/commit/2166a9be6a6fc75b06f0051971606cd181079e15 "show commit") [C.P.](# "Chris Palmer") `extrusion_corner_bracket_assembly()` and `extrusion_inner_corner_bracket()` can now be passed the extrusion type.
|
||||
E2020t and E4040t thinner extrusions added to work with the brackets.
|
||||
Extrusions can now have recessed channels, round or square centre sections and holes.
|
||||
Fixed the shape of extrusion centre section spars.
|
||||
T-nuts now have 45 degree chamfers instead of a fixed 1mm minimum thickness.
|
||||
|
||||
* 2021-09-03 [`5117290`](https://github.com/nophead/NopSCADlib/commit/511729008dcc878a148c3bbd00edf69de9736fb5 "show commit") [C.P.](# "Chris Palmer") Added missing documentation for `sliding_t_nut()`.
|
||||
|
||||
* 2021-09-03 [`5111ec0`](https://github.com/nophead/NopSCADlib/commit/5111ec04bc1d19cc46b811bf79d026fcd2ca70f8 "show commit") [C.P.](# "Chris Palmer") `E40_corner_bracket,` `E40_corner_bracket` and `M8_sliding_ball_t_nut` added.
|
||||
Inner corner brackets now show the long arm with chamfered ridges rather
|
||||
than a normal T-nut and the grub screws are inserted to meet the extrusion.
|
||||
|
||||
### [v15.24.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.24.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.23.0...v15.24.0 "diff with v15.23.0")
|
||||
* 2021-08-31 [`d9af5b7`](https://github.com/nophead/NopSCADlib/commit/d9af5b7f705791ca8ef230ecd1b831c042587002 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2021-08-31 [`9d65f69`](https://github.com/nophead/NopSCADlib/commit/9d65f69bf3e7cd325d24bc5410a4763bb7164b8f "show commit") [M.B.](# "Martin Budden") Added `M2p5_dome_screw`.
|
||||
|
||||
### [v15.23.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.23.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.22.0...v15.23.0 "diff with v15.22.0")
|
||||
* 2021-08-31 [`00c5c90`](https://github.com/nophead/NopSCADlib/commit/00c5c90a5e74f47f0e6f5e3a7996f70fa34f0833 "show commit") [C.P.](# "Chris Palmer") Updated big picture
|
||||
|
||||
* 2021-08-31 [`01c26d8`](https://github.com/nophead/NopSCADlib/commit/01c26d8a349e802738a8b0d06575a3e6915bf070 "show commit") [C.P.](# "Chris Palmer") Added Lichuan servo motors contributed by Niclas Hedhman.
|
||||
|
||||
* 2021-08-31 [`ef21024`](https://github.com/nophead/NopSCADlib/commit/ef2102420b15e5be4008a6a3cecf5416857265f9 "show commit") [C.P.](# "Chris Palmer") Added NEMA8 and NEMA8BH stepper motors.
|
||||
Steppers can now have dual shafts, hollow shafts and black end caps.
|
||||
|
||||
* 2021-08-31 [`540f841`](https://github.com/nophead/NopSCADlib/commit/540f84116355e7f44a9b5796816d1e3422128ff3 "show commit") [C.P.](# "Chris Palmer") Added crude representation of JST ZH connectors.
|
||||
|
||||
* 2021-08-31 [`1045502`](https://github.com/nophead/NopSCADlib/commit/1045502efb1cb94fb7bcc11fd4483b425a880926 "show commit") [C.P.](# "Chris Palmer") Added more aluminium sheet thickness
|
||||
|
||||
* 2021-08-31 [`485184f`](https://github.com/nophead/NopSCADlib/commit/485184f09213ff0b191d5c8339471cd24ba3cc90 "show commit") [C.P.](# "Chris Palmer") Added HGH15CA and HGH20CA rails.
|
||||
|
||||
* 2021-08-31 [`b893c90`](https://github.com/nophead/NopSCADlib/commit/b893c9069a6bae762733cf1e139d49bab28ad792 "show commit") [C.P.](# "Chris Palmer") Added SFU1610 ballscrew nut
|
||||
|
||||
* 2021-08-31 [`69f4ced`](https://github.com/nophead/NopSCADlib/commit/69f4ced29da7e37c88ca24b924c6430144eec849 "show commit") [C.P.](# "Chris Palmer") Added `M8_cs_cap_screw,` `M5_grub_screw` and `M6_grub_screw`.
|
||||
Fixed `M6_cs_cap_screw` and `M4_grub_screw` socket sizes.
|
||||
|
||||
* 2021-08-31 [`5c1aa84`](https://github.com/nophead/NopSCADlib/commit/5c1aa849fe5992617c3128c47dfc969504cbfd2f "show commit") [C.P.](# "Chris Palmer") New layout for big picture.
|
||||
|
||||
### [v15.22.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.22.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.21.1...v15.22.0 "diff with v15.21.1")
|
||||
* 2021-08-27 [`1247303`](https://github.com/nophead/NopSCADlib/commit/1247303cb9dc2694994993b5dc046683becb7fde "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2021-08-13 [`14ab1bb`](https://github.com/nophead/NopSCADlib/commit/14ab1bb8b614055e0bf4ad33799276b0017ca13e "show commit") [M.B.](# "Martin Budden") Added Raspberry Pi Pico.
|
||||
|
||||
#### [v15.21.1](https://github.com/nophead/NopSCADlib/releases/tag/v15.21.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.21.0...v15.21.1 "diff with v15.21.0")
|
||||
* 2021-08-09 [`be53547`](https://github.com/nophead/NopSCADlib/commit/be53547728834d8e786ad4cb5637c768320a3105 "show commit") [M.B.](# "Martin Budden") Fixed display of BLDC prop shaft when thread length `=` 0.
|
||||
|
||||
* 2021-07-04 [`ba7d7d3`](https://github.com/nophead/NopSCADlib/commit/ba7d7d32adf554d163143c0ae1707565340bb35b "show commit") [C.P.](# "Chris Palmer") Updated chnagelog.
|
||||
|
||||
### [v15.21.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.21.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.20.0...v15.21.0 "diff with v15.20.0")
|
||||
* 2021-07-01 [`df35e14`](https://github.com/nophead/NopSCADlib/commit/df35e14fc71794c3826d6c99ce3cab93a4cfa5fe "show commit") [M.B.](# "Martin Budden") Improved handling of pcb plating colour.
|
||||
|
||||
### [v15.20.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.20.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.19.3...v15.20.0 "diff with v15.19.3")
|
||||
* 2021-06-29 [`c982876`](https://github.com/nophead/NopSCADlib/commit/c982876ebc0f95b466de1af3c80642dfd88800e6 "show commit") [C.P.](# "Chris Palmer") Can now specify the screw used for PSU shrouds and get the wall thickness.
|
||||
|
||||
#### [v15.19.3](https://github.com/nophead/NopSCADlib/releases/tag/v15.19.3 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.19.2...v15.19.3 "diff with v15.19.2")
|
||||
* 2021-06-17 [`92d0444`](https://github.com/nophead/NopSCADlib/commit/92d0444e5f96c8f4768afb3d014044d7e66c6e69 "show commit") [C.P.](# "Chris Palmer") Changelog now runs codespell to fix the spellings in the commit comments.
|
||||
|
||||
#### [v15.19.2](https://github.com/nophead/NopSCADlib/releases/tag/v15.19.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.19.1...v15.19.2 "diff with v15.19.1")
|
||||
* 2021-06-15 [`8d7c44b`](https://github.com/nophead/NopSCADlib/commit/8d7c44b80deffcc8c6b84c7a6485c959826cb381 "show commit") [M.B.](# "Martin Budden") Spelling corrections.
|
||||
|
||||
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 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: 121 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 135 KiB |
11
examples/MainsBreakOutBox/platters/all.scad
Normal file
@@ -0,0 +1,11 @@
|
||||
include <NopSCADlib/core.scad>
|
||||
|
||||
*use_stl("socket_box"); // Importing the STL gives a CGAL error although NetFabb finds nothing wrong with it.
|
||||
|
||||
use <../scad/bob_main.scad>
|
||||
|
||||
render() socket_box_stl();
|
||||
|
||||
for(i = [0 : 3])
|
||||
translate([i * 25 - 1.5 * 25, -70])
|
||||
use_stl("foot");
|
@@ -31,7 +31,8 @@
|
||||
//! while its earth is disconnected. Don't be tempted to float the earth of an oscilloscope this way, use a mains isolation transformer to power the DUT instead.
|
||||
//! Earth leakage can be measured Canadian CSA style by disconnected the neutral link from the left socket and linking the central neutral to the live.
|
||||
//
|
||||
$extrusion_width = 0.5;
|
||||
$extrusion_width = 0.4;
|
||||
$layer_height = 0.2;
|
||||
$pp1_colour = "dimgrey";
|
||||
$pp2_colour = [0.9, 0.9, 0.9];
|
||||
|
||||
|
5
examples/MainsBreakOutBox/stls/deps/all.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
socket_box.stl
|
||||
foot.stl
|
||||
foot.stl
|
||||
foot.stl
|
||||
foot.stl
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
87250
examples/MainsBreakOutBox/stls/printed/all.stl
Normal file
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
BIN
gallery/IOT_LOAD.png
Normal file
After Width: | Height: | Size: 259 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/PSU_cover.png
Normal file
After Width: | Height: | Size: 279 KiB |
BIN
gallery/PotBox.png
Normal file
After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 252 KiB After Width: | Height: | Size: 390 KiB |
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
@@ -25,6 +25,11 @@ WiFi controllable PSU
|
||||
|
||||

|
||||
|
||||
## IOT LOAD
|
||||
WiFi controllable programmable load
|
||||
|
||||

|
||||
|
||||
## Lab ATX PSU
|
||||
Bench power supply built around an ATX PSU.
|
||||
|
||||
@@ -65,6 +70,16 @@ Mains isolated and variable supply with metering.
|
||||
|
||||
|
||||
|
||||
## PSU Cover
|
||||
A base and shroud to make PSU safe to sit on a desk
|
||||
|
||||

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

|
||||
|
||||
## SunBot
|
||||
A solar tracker to keep a solar panel pointing at the sun.
|
||||
|
||||
|
@@ -24,23 +24,22 @@
|
||||
// bom defaults to 0
|
||||
// Setting $bom on the command line or in the main file before including lib.scad overrides it everywhere.
|
||||
// Setting $bom after including lib overrides bom in the libs but not in the local file.
|
||||
// Setting $_bom in the local file overrides it in the local file but not in the libs.
|
||||
//
|
||||
rr_green = [0, 146/255, 0]; // RepRap logo colour
|
||||
crimson = [220/255, 20/255, 60/255];
|
||||
|
||||
$_bom = is_undef($bom) ? 0 : $bom; // 0 no bom, 1 assemblies and stls, 2 vitamins as well
|
||||
$exploded = is_undef($explode) ? 0 : $explode; // 1 for exploded view
|
||||
layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // layer height when printing
|
||||
extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
|
||||
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle
|
||||
cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // minimum tool radius when milling 2D objects
|
||||
pp1_colour = is_undef($pp1_colour) ? rr_green : $pp1_colour; // printed part colour 1, RepRap logo colour
|
||||
pp2_colour = is_undef($pp2_colour) ? crimson : $pp2_colour; // printed part colour 2
|
||||
pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour; // printed part colour 3
|
||||
pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4
|
||||
show_rays = is_undef($show_rays) ? false : $show_rays; // show camera sight lines and light direction
|
||||
show_threads = is_undef($show_threads) ? false : $show_threads; // show screw threads
|
||||
show_plugs = is_undef($show_plugs) ? false : $show_plugs; // plugs on headers
|
||||
pp1_colour = is_undef($pp1_colour) ? rr_green : $pp1_colour;// printed part colour 1, RepRap logo colour
|
||||
pp2_colour = is_undef($pp2_colour) ? crimson : $pp2_colour;// printed part colour 2
|
||||
pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour;// printed part colour 3
|
||||
pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4
|
||||
|
||||
|
||||
// Minimum wall is about two filaments wide but we extrude it closer to get better bonding
|
||||
squeezed_wall = $preview ? 2 * extrusion_width - layer_height * (1 - PI / 4)
|
||||
@@ -51,13 +50,14 @@ eps = 1/128; // small fudge factor to stop CSG barfing on coincident faces.
|
||||
$fa = 6;
|
||||
$fs = extrusion_width / 2;
|
||||
|
||||
function round_to_layer(z) = ceil(z / layer_height) * layer_height;
|
||||
function round_to_layer(z) = ceil(z / layer_height) * layer_height; //! Round up to a multiple of layer_height.
|
||||
|
||||
// Some additional named colours
|
||||
function grey(n) = [0.01, 0.01, 0.01] * n; //! Generate a shade of grey to pass to color().
|
||||
silver = [0.75, 0.75, 0.75];
|
||||
gold = [255, 215, 0] / 255;
|
||||
brass = [255, 220, 100] / 255;
|
||||
copper = [230, 140, 51] / 255;
|
||||
function grey(n) = [0.01, 0.01, 0.01] * n; //! Generate a shade of grey to pass to color().
|
||||
silver = [0.75, 0.75, 0.75];
|
||||
gold = [255, 215, 0] / 255;
|
||||
brass = [255, 220, 100] / 255;
|
||||
copper = [230, 140, 51] / 255;
|
||||
|
||||
/*
|
||||
* Enums
|
||||
@@ -73,11 +73,6 @@ hs_grub = 4; // pulley set screw
|
||||
hs_cs_cap = 5;
|
||||
hs_dome = 6;
|
||||
//
|
||||
// Hot end descriptions
|
||||
//
|
||||
jhead = 1;
|
||||
e3d = 2;
|
||||
//
|
||||
// Face enumeration
|
||||
//
|
||||
f_bottom = 0;
|
||||
|
1
lib.scad
@@ -55,6 +55,7 @@ include <vitamins/pulleys.scad>
|
||||
include <vitamins/ring_terminals.scad>
|
||||
include <vitamins/rails.scad>
|
||||
include <vitamins/rod.scad>
|
||||
include <vitamins/servo_motors.scad>
|
||||
include <vitamins/shaft_couplings.scad>
|
||||
include <vitamins/sheets.scad>
|
||||
include <vitamins/sk_brackets.scad>
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 911 KiB After Width: | Height: | Size: 945 KiB |
85
libtest.scad
@@ -41,6 +41,7 @@
|
||||
//
|
||||
include <lib.scad>
|
||||
|
||||
use <tests/7_segments.scad>
|
||||
use <tests/ball_bearings.scad>
|
||||
use <tests/batteries.scad>
|
||||
use <tests/bearing_blocks.scad>
|
||||
@@ -83,6 +84,7 @@ use <tests/panel_meters.scad>
|
||||
use <tests/PCBs.scad>
|
||||
use <tests/pillars.scad>
|
||||
use <tests/pillow_blocks.scad>
|
||||
use <tests/potentiometers.scad>
|
||||
use <tests/press_fit.scad>
|
||||
use <tests/PSUs.scad>
|
||||
use <tests/pulleys.scad>
|
||||
@@ -92,6 +94,7 @@ use <tests/rockers.scad>
|
||||
use <tests/rod.scad>
|
||||
use <tests/screws.scad>
|
||||
use <tests/sealing_strip.scad>
|
||||
use <tests/servo_motors.scad>
|
||||
use <tests/shaft_couplings.scad>
|
||||
use <tests/sheets.scad>
|
||||
use <tests/SK_brackets.scad>
|
||||
@@ -120,6 +123,7 @@ use <tests/fixing_block.scad>
|
||||
use <tests/flat_hinge.scad>
|
||||
use <tests/foot.scad>
|
||||
use <tests/handle.scad>
|
||||
use <tests/knob.scad>
|
||||
use <tests/PCB_mount.scad>
|
||||
use <tests/pocket_handle.scad>
|
||||
use <tests/printed_box.scad>
|
||||
@@ -170,31 +174,33 @@ translate([x5, cable_grommets_y + 470]) {
|
||||
flat_hinges();
|
||||
}
|
||||
|
||||
translate([x5, cable_grommets_y + 370])
|
||||
translate([x5, cable_grommets_y + 380])
|
||||
no_explode() socket_boxes();
|
||||
|
||||
translate([x5 + 60, cable_grommets_y + 200])
|
||||
strap_handles();
|
||||
|
||||
translate([640, cable_grommets_y + 200])
|
||||
printed_pulley_test();
|
||||
|
||||
translate([x5, cable_grommets_y + 250])
|
||||
translate([x5, cable_grommets_y + 200])
|
||||
knobs();
|
||||
|
||||
translate([x5 + 60, cable_grommets_y + 250])
|
||||
strap_handles();
|
||||
|
||||
translate([x5, cable_grommets_y + 300])
|
||||
handle();
|
||||
|
||||
translate([950, 600])
|
||||
box_test();
|
||||
|
||||
translate([830, 770])
|
||||
translate([900, 750])
|
||||
pocket_handles();
|
||||
|
||||
translate([950, 750])
|
||||
translate([900, 850])
|
||||
printed_boxes();
|
||||
|
||||
translate([850, 1330])
|
||||
translate([850, 1330 + 85])
|
||||
bbox_test();
|
||||
|
||||
|
||||
inserts_y = 0;
|
||||
nuts_y = inserts_y + 20;
|
||||
washers_y = nuts_y + 120;
|
||||
@@ -206,13 +212,14 @@ sealing_strip_y = springs_y + 20;
|
||||
tubings_y = sealing_strip_y + 20;
|
||||
pillars_y = tubings_y + 20;
|
||||
ball_bearings_y = pillars_y + 40;
|
||||
pulleys_y = ball_bearings_y +40;
|
||||
hot_ends_y = pulleys_y + 60;
|
||||
linear_bearings_y = hot_ends_y + 50;
|
||||
sheets_y = linear_bearings_y + 90;
|
||||
pulleys_y = ball_bearings_y + 40;
|
||||
leadnuts_y = pulleys_y + 60;
|
||||
linear_bearings_y = leadnuts_y + 50;
|
||||
steppers_y = linear_bearings_y + 110;
|
||||
sheets_y = steppers_y + 55;
|
||||
pcbs_y = sheets_y + 60;
|
||||
displays_y = pcbs_y + 170;
|
||||
fans_y = displays_y + 80;
|
||||
displays_y = pcbs_y + 140;
|
||||
fans_y = displays_y + 110;
|
||||
transformers_y = fans_y + 120;
|
||||
psus_y = transformers_y + 190;
|
||||
|
||||
@@ -255,13 +262,16 @@ translate([x0, ball_bearings_y])
|
||||
translate([x0, pulleys_y])
|
||||
pulleys();
|
||||
|
||||
translate([x0, leadnuts_y])
|
||||
leadnuts();
|
||||
|
||||
translate([x0, linear_bearings_y]) {
|
||||
linear_bearings();
|
||||
rods();
|
||||
}
|
||||
|
||||
translate([x0 + 10, hot_ends_y])
|
||||
hot_ends();
|
||||
translate([x0, steppers_y])
|
||||
stepper_motors();
|
||||
|
||||
translate([x0, sheets_y])
|
||||
sheets();
|
||||
@@ -279,7 +289,7 @@ translate([x0, fans_y]) {
|
||||
fan_guards();
|
||||
}
|
||||
|
||||
translate([x0, transformers_y])
|
||||
translate([760, fans_y])
|
||||
variacs();
|
||||
|
||||
translate([x0, psus_y]) {
|
||||
@@ -291,7 +301,6 @@ translate([x0, psus_y]) {
|
||||
zipties_y = 0;
|
||||
bulldogs_y = zipties_y + 30;
|
||||
swiss_clips_y = bulldogs_y + 35;
|
||||
leadnuts_y = swiss_clips_y + 50;
|
||||
|
||||
translate([x1, zipties_y])
|
||||
zipties();
|
||||
@@ -302,10 +311,6 @@ translate([x1, bulldogs_y])
|
||||
translate([x1, swiss_clips_y])
|
||||
swiss_clips();
|
||||
|
||||
translate([x1, leadnuts_y])
|
||||
leadnuts();
|
||||
|
||||
|
||||
leds_y = 0;
|
||||
carriers_y = leds_y + 40;
|
||||
magnets_y = carriers_y + 40;
|
||||
@@ -362,9 +367,9 @@ iecs_y = d_connectors_y + 80;
|
||||
modules_y = iecs_y + 60;
|
||||
ssrs_y = modules_y + 80;
|
||||
blowers_y = ssrs_y + 60;
|
||||
batteries_y = blowers_y + 100;
|
||||
steppers_y = batteries_y + 55;
|
||||
panel_meters_y = steppers_y + 70;
|
||||
hot_ends_y = blowers_y + 100;
|
||||
batteries_y = hot_ends_y + 55;
|
||||
panel_meters_y = batteries_y + 70;
|
||||
extrusions_y = panel_meters_y + 80;
|
||||
|
||||
translate([x3, veroboard_y])
|
||||
@@ -409,8 +414,8 @@ translate([x3, blowers_y])
|
||||
translate([x3, batteries_y])
|
||||
batteries();
|
||||
|
||||
translate([x2, steppers_y]) // interloper
|
||||
stepper_motors();
|
||||
translate([x3 + 10, hot_ends_y])
|
||||
hot_ends();
|
||||
|
||||
translate([x2, panel_meters_y])
|
||||
panel_meters();
|
||||
@@ -418,7 +423,7 @@ translate([x2, panel_meters_y])
|
||||
translate([x2, extrusions_y])
|
||||
extrusions();
|
||||
|
||||
translate([x3, transformers_y])
|
||||
translate([400, transformers_y])
|
||||
transformers();
|
||||
|
||||
|
||||
@@ -426,18 +431,21 @@ belts_y = 0;
|
||||
rails_y = belts_y + 200;
|
||||
extrusion_brackets_y = rails_y + 250;
|
||||
sk_brackets_y = extrusion_brackets_y + 80;
|
||||
kp_pillow_blocks_y = sk_brackets_y + 50;
|
||||
kp_pillow_blocks_y = sk_brackets_y + 60;
|
||||
scs_bearing_blocks_y = kp_pillow_blocks_y + 60;
|
||||
cable_strip_y = fans_y + 50;
|
||||
box_sections_y = cable_strip_y;
|
||||
BLDC_y = sheets_y;
|
||||
box_sections_y = batteries_y;
|
||||
BLDC_y = scs_bearing_blocks_y + 120;
|
||||
pot_y = BLDC_y + 40;
|
||||
cable_strip_y = pot_y + 50;
|
||||
|
||||
translate([0, transformers_y])
|
||||
servo_motors();
|
||||
|
||||
translate([x4 + 200, belts_y + 58]) {
|
||||
belt_test();
|
||||
|
||||
translate([0, 60])
|
||||
opengrab_test();
|
||||
|
||||
}
|
||||
|
||||
translate([x4 + 175, belts_y, -20])
|
||||
@@ -446,7 +454,7 @@ translate([x4 + 175, belts_y, -20])
|
||||
translate([x4, rails_y + 130])
|
||||
rails();
|
||||
|
||||
translate([770, cable_strip_y])
|
||||
translate([x4, cable_strip_y])
|
||||
cable_strips();
|
||||
|
||||
translate([x4, kp_pillow_blocks_y])
|
||||
@@ -458,7 +466,7 @@ translate([x4, sk_brackets_y])
|
||||
translate([x4, extrusion_brackets_y])
|
||||
extrusion_brackets();
|
||||
|
||||
translate([x4 + 120, extrusion_brackets_y])
|
||||
translate([x1, swiss_clips_y + 50])
|
||||
shaft_couplings();
|
||||
|
||||
translate([x4, scs_bearing_blocks_y])
|
||||
@@ -467,7 +475,10 @@ translate([x4, scs_bearing_blocks_y])
|
||||
translate([x4, BLDC_y])
|
||||
bldc_motors();
|
||||
|
||||
translate([x6, box_sections_y])
|
||||
translate([x4, pot_y])
|
||||
potentiometers();
|
||||
|
||||
translate([x2, box_sections_y])
|
||||
box_sections();
|
||||
|
||||
translate([x6, 125])
|
||||
|
@@ -31,9 +31,11 @@
|
||||
//!
|
||||
//! Normally the side sheets are the same type but they can be overridden individually as long as the substitute has the same thickness.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/sheet.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <../vitamins/screw.scad>
|
||||
use <../vitamins/washer.scad>
|
||||
use <../utils/quadrant.scad>
|
||||
use <../utils/round.scad>
|
||||
|
||||
@@ -52,8 +54,8 @@ function box_width(type) = type[7]; //! Internal width
|
||||
function box_depth(type) = type[8]; //! Internal depth
|
||||
function box_height(type) = type[9]; //! Internal height
|
||||
|
||||
function box(screw, wall, sheets, top_sheet, base_sheet, size, feet = false, shelf_screw = M3_dome_screw) = //! Construct a property list for a box.
|
||||
concat([screw, shelf_screw, wall, sheets, top_sheet, base_sheet, feet], size);
|
||||
function box(screw, wall, sheets, top_sheet, base_sheet, size, feet = false, shelf_screw = undef) = //! Construct a property list for a box.
|
||||
concat([screw, is_undef(shelf_screw) ? screw : shelf_screw, wall, sheets, top_sheet, base_sheet, feet], size);
|
||||
|
||||
function box_bezel_clearance(type) = bezel_clearance;
|
||||
|
||||
@@ -588,9 +590,26 @@ module box_back_blank(type, sheet = false) { //! Generates a 2D template for the
|
||||
sheet_2D(subst_sheet(type, sheet), box_width(type) - sheet_reduction(type), box_height(type) - sheet_reduction(type), 1);
|
||||
}
|
||||
|
||||
module box_base(type) render_2D_sheet(box_base_sheet(type)) box_base_blank(type); //! Default base, can be overridden to customise
|
||||
module box_top(type) render_2D_sheet(box_top_sheet(type)) box_top_blank(type); //! Default top, can be overridden to customise
|
||||
module box_back(type) render_2D_sheet(box_sheets(type)) box_back_blank(type); //! Default back, can be overridden to customise
|
||||
module box_front(type) render_2D_sheet(box_sheets(type)) box_front_blank(type); //! Default front, can be overridden to customise
|
||||
module box_left(type) render_2D_sheet(box_sheets(type)) box_left_blank(type); //! Default left side, can be overridden to customise
|
||||
module box_right(type) render_2D_sheet(box_sheets(type)) box_right_blank(type); //! Default right side, can be overridden to customise
|
||||
module box_base(type) //! Default base, can be overridden to customise
|
||||
render_2D_sheet(box_base_sheet(type))
|
||||
box_base_blank(type);
|
||||
|
||||
module box_top(type) //! Default top, can be overridden to customise
|
||||
render_2D_sheet(box_top_sheet(type))
|
||||
box_top_blank(type);
|
||||
|
||||
module box_back(type) //! Default back, can be overridden to customise
|
||||
render_2D_sheet(box_sheets(type))
|
||||
box_back_blank(type);
|
||||
|
||||
module box_front(type) //! Default front, can be overridden to customise
|
||||
render_2D_sheet(box_sheets(type))
|
||||
box_front_blank(type);
|
||||
|
||||
module box_left(type) //! Default left side, can be overridden to customise
|
||||
render_2D_sheet(box_sheets(type))
|
||||
box_left_blank(type);
|
||||
|
||||
module box_right(type) //! Default right side, can be overridden to customise
|
||||
render_2D_sheet(box_sheets(type))
|
||||
box_right_blank(type);
|
||||
|
@@ -28,7 +28,7 @@ assembly("box") {
|
||||
|
||||
t = sheet_thickness(box_sheets(type));
|
||||
|
||||
for(corner = [0 : corners - 1]) {
|
||||
for(corner = [0 : 1 : corners - 1]) {
|
||||
x = [-1,1,1,-1][corner];
|
||||
y = [-1,-1,1,1][corner];
|
||||
translate([x * (box_width(type) / 2 + 25 * exploded()), y * (box_depth(type) / 2 + 25 * exploded())])
|
||||
|
@@ -198,12 +198,29 @@ module bbox_back_blank(type, sheet = false) { //! 2D template for the back
|
||||
}
|
||||
}
|
||||
|
||||
module bbox_base(type) render_2D_sheet(bbox_base_sheet(type)) bbox_base_blank(type); //! Default base, can be overridden to customise
|
||||
module bbox_top(type) render_2D_sheet(bbox_top_sheet(type)) bbox_top_blank(type); //! Default top, can be overridden to customise
|
||||
module bbox_back(type) render_2D_sheet(bbox_sheets(type)) bbox_back_blank(type); //! Default back, can be overridden to customise
|
||||
module bbox_front(type) render_2D_sheet(bbox_sheets(type)) bbox_front_blank(type); //! Default front, can be overridden to customise
|
||||
module bbox_left(type) render_2D_sheet(bbox_sheets(type)) bbox_left_blank(type); //! Default left side, can be overridden to customise
|
||||
module bbox_right(type) render_2D_sheet(bbox_sheets(type)) bbox_right_blank(type); //! Default right side, can be overridden to customise
|
||||
module bbox_base(type) //! Default base, can be overridden to customise
|
||||
render_2D_sheet(bbox_base_sheet(type))
|
||||
bbox_base_blank(type);
|
||||
|
||||
module bbox_top(type) //! Default top, can be overridden to customise
|
||||
render_2D_sheet(bbox_top_sheet(type))
|
||||
bbox_top_blank(type);
|
||||
|
||||
module bbox_back(type) //! Default back, can be overridden to customise
|
||||
render_2D_sheet(bbox_sheets(type))
|
||||
bbox_back_blank(type);
|
||||
|
||||
module bbox_front(type) //! Default front, can be overridden to customise
|
||||
render_2D_sheet(bbox_sheets(type))
|
||||
bbox_front_blank(type);
|
||||
|
||||
module bbox_left(type) //! Default left side, can be overridden to customise
|
||||
render_2D_sheet(bbox_sheets(type))
|
||||
bbox_left_blank(type);
|
||||
|
||||
module bbox_right(type) //! Default right side, can be overridden to customise
|
||||
render_2D_sheet(bbox_sheets(type))
|
||||
bbox_right_blank(type);
|
||||
|
||||
module _bbox_assembly(type, top = true, base = true, left = true, right = true, back = true, front = true) { //! The box assembly, wrap with a local copy without parameters
|
||||
width = bbox_width(type);
|
||||
|
@@ -29,7 +29,7 @@ function fan_guard_wall() = extrusion_width - layer_height / 2 + nozzle / 2 + ex
|
||||
function fan_guard_corner_r(type) = washer_diameter(screw_washer(fan_screw(type))) / 2 + 0.5; //! Corner radius of the guard
|
||||
function fan_guard_width(type) = max(2 * (fan_hole_pitch(type) + fan_guard_corner_r(type)), fan_bore(type) + 4 * fan_guard_wall()); //! Width of the guard
|
||||
|
||||
module fan_guard(type, name = false, thickness = fan_guard_thickness(), spokes = 4, finger_width = 7, grill = false) { //! Generate the STL
|
||||
module fan_guard(type, name = false, thickness = fan_guard_thickness(), spokes = 4, finger_width = 7, grill = false, screws = true) { //! Generate the STL
|
||||
if(thickness)
|
||||
stl(name ? name : str("fan_guard_", fan_width(type)));
|
||||
hole_pitch = fan_hole_pitch(type);
|
||||
@@ -54,7 +54,7 @@ module fan_guard(type, name = false, thickness = fan_guard_thickness(), spokes =
|
||||
difference() {
|
||||
rounded_square([width, width], r = width / 2 - hole_pitch);
|
||||
|
||||
fan_holes(type, !grill, !grill, h = 0);
|
||||
fan_holes(type, !grill, !grill && screws, h = 0);
|
||||
}
|
||||
if(spokes) {
|
||||
intersection() {
|
||||
|
@@ -105,7 +105,8 @@ module fixing_block(screw = def_screw) { //! Generate the STL
|
||||
}
|
||||
}
|
||||
|
||||
module fixing_block_assembly(screw = def_screw) pose([55, 180, 25], [0, 4.8, 4.8]) //! Printed part with the inserts inserted
|
||||
module fixing_block_assembly(screw = def_screw) //! Printed part with the inserts inserted
|
||||
pose([55, 180, 25], [0, 4.8, 4.8])
|
||||
assembly(str("fixing_block_M", 20 * screw_radius(screw)), ngb = true) {
|
||||
translate_z(fixing_block_height(screw))
|
||||
rotate([0, 180, 0])
|
||||
|
@@ -67,18 +67,19 @@ module foot(type = foot) { //! Generate STL
|
||||
}
|
||||
}
|
||||
|
||||
module foot_assembly(t = 0, type = foot, flip = false) { //! Assembly with fasteners in place for specified sheet thickness
|
||||
module foot_assembly(t = 0, type = foot, flip = false, no_washer = false) { //! Assembly with fasteners in place for specified sheet thickness
|
||||
screw = foot_screw(type);
|
||||
nut = screw_nut(screw);
|
||||
squeeze = 0.5;
|
||||
screw_length = screw_length(screw, foot_thickness(type) + t - squeeze, 2, nyloc = true);
|
||||
screw_length = screw_length(screw, foot_thickness(type) + t - squeeze, no_washer ? 1 : 2, nyloc = true);
|
||||
|
||||
vflip() explode(15, true) {
|
||||
stl_colour(pp4_colour) foot(type);
|
||||
translate_z(-squeeze)
|
||||
stl_colour(pp4_colour) foot(type);
|
||||
|
||||
if(t)
|
||||
explode(15, true)
|
||||
translate_z(foot_thickness(type))
|
||||
translate_z(foot_thickness(type) - squeeze)
|
||||
if(flip)
|
||||
nut_and_washer(nut, true);
|
||||
else
|
||||
@@ -87,9 +88,15 @@ module foot_assembly(t = 0, type = foot, flip = false) { //! Assembly with faste
|
||||
if(t)
|
||||
translate_z(t)
|
||||
if(flip)
|
||||
screw_and_washer(screw, screw_length);
|
||||
if(no_washer)
|
||||
screw(screw, screw_length);
|
||||
else
|
||||
screw_and_washer(screw, screw_length);
|
||||
else
|
||||
nut_and_washer(nut, true);
|
||||
if(no_washer)
|
||||
nut(nut, true);
|
||||
else
|
||||
nut_and_washer(nut, true);
|
||||
}
|
||||
|
||||
module insert_foot(type = insert_foot) { //! Generate STL for foot with insert
|
||||
|
@@ -79,7 +79,8 @@ module handle_stl() { //! generate the STL
|
||||
//
|
||||
//! Place inserts in the bottom of the posts and push them home with a soldering iron with a conical bit heated to 200°C.
|
||||
//
|
||||
module handle_assembly() pose([225, 0, 150], [0, 0, 14]) //! Printed part with inserts in place
|
||||
module handle_assembly() //! Printed part with inserts in place
|
||||
pose([225, 0, 150], [0, 0, 14])
|
||||
assembly("handle", ngb = true) {
|
||||
translate_z(handle_height())
|
||||
stl_colour(pp1_colour) vflip() handle_stl();
|
||||
|
166
printed/knob.scad
Normal file
@@ -0,0 +1,166 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 221
|
||||
// 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/>.
|
||||
//
|
||||
|
||||
//
|
||||
//! Parametric knobs for potentiometers and encoders.
|
||||
//!
|
||||
//! A knob can be constructed by specififying all the parameters or the potentiometer can be specified to customise it for its shaft with a recess to clear the nut, washer and thread.
|
||||
//! An optional skirt and / or a pointer can be specified.
|
||||
//!
|
||||
//! The STL includes a support membrane that needs to be cut out and a thread needs to be tapped for the grub screw.
|
||||
//
|
||||
|
||||
include <../core.scad>
|
||||
use <../utils/hanging_hole.scad>
|
||||
use <../utils/rounded_polygon.scad>
|
||||
use <../vitamins/potentiometer.scad>
|
||||
|
||||
clearance = 0.2;
|
||||
|
||||
function knob_name(type) = type[0]; //! Name for the stl maker
|
||||
function knob_top_d(type) = type[1]; //! Diameter at the top
|
||||
function knob_bot_d(type) = type[2]; //! Diameter at the bottom
|
||||
function knob_height(type) = type[3]; //! Height
|
||||
function knob_corner_r(type) = type[4]; //! Rounded top corner
|
||||
function knob_shaft_d(type) = type[5]; //! Shaft diameter
|
||||
function knob_shaft_len(type)= type[6]; //! Shaft length
|
||||
function knob_flat_d(type) = type[7]; //! The shaft diameter at the flat
|
||||
function knob_flat_h(type) = type[8]; //! The length of the flat
|
||||
function knob_screw(type) = type[9]; //! The grub screw type
|
||||
function knob_skirt(type) = type[10]; //! Skirt diameter and thickness
|
||||
function knob_recess(type) = type[11]; //! Recess diameter and thickness to clear nut and thread, diameter, nut height, thread height
|
||||
function knob_pointer(type) = type[12]; //! Pointer outside radius, [point width, back width] and height height
|
||||
|
||||
function knob(name = "knob", top_d = 12, bot_d = 15, height = 18, shaft_length, skirt = [20, 2], pointer = false, corner_r = 2, screw = M3_grub_screw, shaft_d, flat_d, flat_h, recess) = //! Constructor
|
||||
[
|
||||
name, top_d, bot_d, height, corner_r, shaft_d, shaft_length, flat_d, flat_h, screw, skirt, recess, pointer
|
||||
];
|
||||
|
||||
function knob_for_pot(pot, thickness, z = 1, shaft_length = undef, top_d = 12, bot_d = 15, skirt = [20, 2], pointer = false, corner_r = 2, height = 0, washer = true) = //! Construct a knob to fit specified pot
|
||||
let(s = pot_shaft(pot),
|
||||
washer = washer && pot_washer(pot) ? pot_washer(pot) : [0, 0],
|
||||
nut = pot_nut(pot) ? pot_nut(pot) : [pot_thread_d(pot) * cos(30), pot_thread_h(pot) - thickness],
|
||||
shaft_length = is_undef(shaft_length) ? s.z : min(shaft_length, s.z),
|
||||
h = round_to_layer(shaft_length + pot_thread_h(pot) - thickness - z),
|
||||
height = max(height, h + 1),
|
||||
recess = [(z > washer.y ? nut.x / cos(30) : washer.x) + 0.4, round_to_layer(nut.y + washer.y - z + layer_height), round_to_layer(pot_thread_h(pot) - z - thickness + 2 * layer_height)],
|
||||
flat_d = s.y + 0.06,
|
||||
flat_h = min(s[3], shaft_length)
|
||||
)
|
||||
knob(name = str(pot[0], "_knob"),
|
||||
top_d = top_d,
|
||||
bot_d = bot_d,
|
||||
height = height,
|
||||
corner_r = corner_r,
|
||||
skirt = skirt,
|
||||
pointer = pointer,
|
||||
shaft_d = s.x,
|
||||
shaft_length = h,
|
||||
flat_d = flat_d,
|
||||
flat_h = flat_h,
|
||||
recess = recess);
|
||||
|
||||
function knob_screw_z(type) = knob_shaft_len(type) - knob_flat_h(type) / 2;
|
||||
|
||||
module knob(type, supports = true) { //! Generate the STL for a knob
|
||||
r_top = knob_top_d(type) / 2;
|
||||
r_bot = knob_bot_d(type) / 2;
|
||||
h = knob_height(type);
|
||||
r = knob_corner_r(type);
|
||||
sr = knob_shaft_d(type) / 2 + clearance;
|
||||
top_wall = h - knob_shaft_len(type);
|
||||
fr = knob_flat_d(type) - sr + 2 * clearance;
|
||||
fh = knob_flat_h(type);
|
||||
screw = knob_screw(type);
|
||||
skirt = knob_skirt(type);
|
||||
recess = knob_recess(type);
|
||||
pointer = knob_pointer(type);
|
||||
|
||||
stl(knob_name(type))
|
||||
{
|
||||
difference() {
|
||||
union() {
|
||||
rotate_extrude() {
|
||||
rounded_polygon([
|
||||
[0, h, 0],
|
||||
[r_top - r, h - r, r],
|
||||
[r_bot, 0, 0],
|
||||
[0, 0, 0],
|
||||
]);
|
||||
|
||||
if(skirt)
|
||||
square([skirt.x / 2, skirt.y]);
|
||||
}
|
||||
if(pointer)
|
||||
linear_extrude(pointer.z)
|
||||
rotate(-90)
|
||||
hull() {
|
||||
translate([pointer.x, 0])
|
||||
square([eps, pointer.y[0]], center = true);
|
||||
|
||||
translate([r_bot, 0])
|
||||
square([eps, pointer.y[1]], center = true);
|
||||
}
|
||||
}
|
||||
shaft_z = recess ? recess.z + (supports ? layer_height : -eps) : -eps;
|
||||
translate_z(shaft_z) {
|
||||
h = h - top_wall - shaft_z;
|
||||
linear_extrude(h)
|
||||
difference() {
|
||||
poly_circle(sr);
|
||||
|
||||
translate([-sr, fr])
|
||||
square([2 * sr, sr]);
|
||||
}
|
||||
|
||||
if(h > fh)
|
||||
poly_cylinder(sr, round_to_layer(h - fh), center = false);
|
||||
}
|
||||
|
||||
if(recess)
|
||||
translate_z(-eps)
|
||||
hull() {
|
||||
poly_cylinder(r = recess.x / 2, h = recess.y + eps, center = false);
|
||||
|
||||
linear_extrude(recess.z + eps)
|
||||
offset(min(-(recess.z - recess.y), 0))
|
||||
poly_circle(recess.x / 2);
|
||||
}
|
||||
|
||||
if(screw)
|
||||
translate_z(knob_screw_z(type))
|
||||
rotate([90, 0, 180])
|
||||
teardrop_plus(r = screw_pilot_hole(screw), h = max(r_top, r_bot) + eps, center = false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! Knob with grub screw in place
|
||||
module knob_assembly(type) explode(40, explode_children = true) { //! Assembly with the grub screw in place
|
||||
fr = knob_flat_d(type) - knob_shaft_d(type) / 2;
|
||||
r_top = knob_top_d(type) / 2;
|
||||
r_bot = knob_bot_d(type) / 2;
|
||||
screw_length = screw_shorter_than(min(r_top, r_bot) - fr);
|
||||
|
||||
stl_colour(pp1_colour) render() knob(type, supports = false);
|
||||
|
||||
translate([0, (fr + screw_length), knob_screw_z(type)])
|
||||
rotate([90, 0, 180])
|
||||
screw(knob_screw(type), screw_length);
|
||||
}
|
@@ -22,7 +22,7 @@
|
||||
//!
|
||||
//! Add solvent or glue to make a permanent fixture.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
interference = 0.0;
|
||||
|
||||
|
@@ -26,7 +26,9 @@
|
||||
//!
|
||||
//! It can also have printed feet on the base with the screws doubling up to hold the base on.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/screw.scad>
|
||||
use <../vitamins/washer.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <foot.scad>
|
||||
|
||||
|
@@ -21,8 +21,8 @@
|
||||
//! Creative Commons - Attribution - Share Alike license (see <https://creativecommons.org/licenses/by-sa/3.0/>)
|
||||
//
|
||||
|
||||
include <../core.scad>
|
||||
include <../vitamins/pulleys.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/pulley.scad>
|
||||
|
||||
printed_pulley_GT2_profile = [[0.747183,-0.5],[0.747183,0],[0.647876,0.037218],[0.598311,0.130528],[0.578556,0.238423],[0.547158,0.343077],[0.504649,0.443762],[0.451556,0.53975],[0.358229,0.636924],[0.2484,0.707276],[0.127259,0.750044],[0,0.76447],[-0.127259,0.750044],[-0.2484,0.707276],[-0.358229,0.636924],[-0.451556,0.53975],[-0.504797,0.443762],[-0.547291,0.343077],[-0.578605,0.238423],[-0.598311,0.130528],[-0.648009,0.037218],[-0.747183,0],[-0.747183,-0.5]];
|
||||
|
||||
|
@@ -41,6 +41,7 @@ overlap = 6;
|
||||
cable_tie_inset = wall + 4;
|
||||
|
||||
function psu_shroud_extent(type) = 15 + wall; //! How far it extends beyond the PSU to clear the connections
|
||||
function psu_shroud_wall(type) = wall; //! The wall thickness
|
||||
function psu_shroud_depth(type) = //! Outside depth of the shroud
|
||||
psu_left_bay(type) + overlap + psu_shroud_extent(type);
|
||||
|
||||
@@ -154,7 +155,7 @@ assembly(str("PSU_shroud_", name), ngb = true) {
|
||||
insert(insert);
|
||||
}
|
||||
|
||||
module psu_shroud_fastened_assembly(type, cable_d, thickness, name, cables = 1) //! Assembly with screws in place
|
||||
module psu_shroud_fastened_assembly(type, cable_d, thickness, name, cables = 1, screw = screw) //! Assembly with screws in place
|
||||
{
|
||||
screw_length = screw_length(screw,thickness + counter_bore, 2, true);
|
||||
|
||||
|
@@ -81,8 +81,9 @@ module ribbon_clamp(ways, screw = screw) { //! Generate STL for given number of
|
||||
}
|
||||
}
|
||||
|
||||
module ribbon_clamp_assembly(ways, screw = screw) pose([55, 180, 25]) //! Printed part with inserts in place
|
||||
assembly(let(screw_d = screw_radius(screw) * 2)str("ribbon_clamp_", ways, screw_d != 3 ? str("_", screw_d) : ""), ngb = true) {
|
||||
module ribbon_clamp_assembly(ways, screw = screw) //! Printed part with inserts in place
|
||||
pose([55, 180, 25])
|
||||
assembly(let(screw_d = screw_radius(screw) * 2)str("ribbon_clamp_", ways, screw_d != 3 ? str("_", screw_d) : ""), ngb = true) {
|
||||
h = ribbon_clamp_height(screw);
|
||||
insert = screw_insert(screw);
|
||||
|
||||
|
493
readme.md
@@ -21,33 +21,67 @@ A list of changes classified as breaking, additions or fixes is maintained in [C
|
||||
## Table of Contents<a name="top"/>
|
||||
<table><tr>
|
||||
<th align="left"> Vitamins A-H </th><th align="left"> Vitamins I-Q </th><th align="left"> Vitamins R-Z </th><th align="left"> Printed </th><th align="left"> Utilities </th><th align="left"> Core Utilities </th></tr>
|
||||
<tr><td> <a href = "#Axials">Axials</a> </td><td> <a href = "#IECs">IECs</a> </td><td> <a href = "#Rails">Rails</a> </td><td> <a href = "#Box">Box</a> </td><td> <a href = "#Annotation">Annotation</a> </td><td> <a href = "#BOM">BOM</a> </td></tr>
|
||||
<tr><td> <a href = "#BLDC_motors">BLDC_motors</a> </td><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Ring_terminals">Ring_terminals</a> </td><td> <a href = "#Butt_box">Butt_box</a> </td><td> <a href = "#Bezier">Bezier</a> </td><td> <a href = "#Clip">Clip</a> </td></tr>
|
||||
<tr><td> <a href = "#Ball_bearings">Ball_bearings</a> </td><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Cable_grommets">Cable_grommets</a> </td><td> <a href = "#Catenary">Catenary</a> </td><td> <a href = "#Global">Global</a> </td></tr>
|
||||
<tr><td> <a href = "#Batteries">Batteries</a> </td><td> <a href = "#LDRs">LDRs</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Camera_housing">Camera_housing</a> </td><td> <a href = "#Core_xy">Core_xy</a> </td><td> <a href = "#Polyholes">Polyholes</a> </td></tr>
|
||||
<tr><td> <a href = "#Bearing_blocks">Bearing_blocks</a> </td><td> <a href = "#LED_meters">LED_meters</a> </td><td> <a href = "#SK_brackets">SK_brackets</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Dogbones">Dogbones</a> </td><td> <a href = "#Rounded_rectangle">Rounded_rectangle</a> </td></tr>
|
||||
<tr><td> <a href = "#Belts">Belts</a> </td><td> <a href = "#LEDs">LEDs</a> </td><td> <a href = "#SMDs">SMDs</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr>
|
||||
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Gears">Gears</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#Box_sections">Box_sections</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Drag_chain">Drag_chain</a> </td><td> <a href = "#Horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Pocket_handle">Pocket_handle</a> </td><td> <a href = "#Rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#Wire">Wire</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#7_segments">7_segments</a> </td><td> <a href = "#IECs">IECs</a> </td><td> <a href = "#Rails">Rails</a> </td><td> <a href = "#Box">Box</a> </td><td> <a href = "#Annotation">Annotation</a> </td><td> <a href = "#BOM">BOM</a> </td></tr>
|
||||
<tr><td> <a href = "#Axials">Axials</a> </td><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Ring_terminals">Ring_terminals</a> </td><td> <a href = "#Butt_box">Butt_box</a> </td><td> <a href = "#Bezier">Bezier</a> </td><td> <a href = "#Clip">Clip</a> </td></tr>
|
||||
<tr><td> <a href = "#BLDC_motors">BLDC_motors</a> </td><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Cable_grommets">Cable_grommets</a> </td><td> <a href = "#Catenary">Catenary</a> </td><td> <a href = "#Global">Global</a> </td></tr>
|
||||
<tr><td> <a href = "#Ball_bearings">Ball_bearings</a> </td><td> <a href = "#LDRs">LDRs</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Camera_housing">Camera_housing</a> </td><td> <a href = "#Core_xy">Core_xy</a> </td><td> <a href = "#Polyholes">Polyholes</a> </td></tr>
|
||||
<tr><td> <a href = "#Batteries">Batteries</a> </td><td> <a href = "#LED_meters">LED_meters</a> </td><td> <a href = "#SK_brackets">SK_brackets</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Dogbones">Dogbones</a> </td><td> <a href = "#Rounded_rectangle">Rounded_rectangle</a> </td></tr>
|
||||
<tr><td> <a href = "#Bearing_blocks">Bearing_blocks</a> </td><td> <a href = "#LEDs">LEDs</a> </td><td> <a href = "#SMDs">SMDs</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr>
|
||||
<tr><td> <a href = "#Belts">Belts</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Gears">Gears</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Box_sections">Box_sections</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Drag_chain">Drag_chain</a> </td><td> <a href = "#Horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Servo_motors">Servo_motors</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#Knob">Knob</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Pocket_handle">Pocket_handle</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Wire">Wire</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Potentiometers">Potentiometers</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td></td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
</table>
|
||||
|
||||
---
|
||||
<a name="7_segments"></a>
|
||||
## 7_segments
|
||||
7 Segment displays.
|
||||
|
||||
Can be single digits stacked side by side or can be multiple digits in one unit. This is determined by the overall width compared to the width of a digit.
|
||||
Presence of a decimal point is determined by the number of pins. Its position is determined by a heuristic.
|
||||
|
||||
[vitamins/7_segments.scad](vitamins/7_segments.scad) Object definitions.
|
||||
|
||||
[vitamins/7_segment.scad](vitamins/7_segment.scad) Implementation.
|
||||
|
||||
[tests/7_segments.scad](tests/7_segments.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `7_segment_digit_size(type)` | Size of the actual digit and segment width and angle |
|
||||
| `7_segment_pin_pitch(type)` | x and y pin pitches and pin diameter |
|
||||
| `7_segment_pins(type)` | None |
|
||||
| `7_segment_size(type)` | Size of the body |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `7_segment_digit(type, colour = grey(95), pin_length = 6.4)` | Draw the specified 7 segment digit |
|
||||
| `7_segment_digits(type, n, colour = grey(70), pin_length = 6.4, cutout = false)` | Draw n digits side by side |
|
||||
|
||||

|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="Axials"></a>
|
||||
## Axials
|
||||
@@ -312,7 +346,7 @@ Individual teeth are not drawn, instead they are represented by a lighter colour
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `belt(type, points, belt_colour = grey(20)` | Draw a belt path given a set of points and pitch radii where the pulleys are. Closed loop unless open is specified |
|
||||
| `belt(type, points, belt_colour = grey(20), tooth_colour = grey(50), open = false, twist = undef, auto_twist = false, start_twist = false)` | Draw a belt path given a set of points and pitch radii where the pulleys are. Closed loop unless open is specified |
|
||||
|
||||

|
||||
|
||||
@@ -754,6 +788,7 @@ Various electronic components used in hot ends and heated beds.
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `TO220_thickness()` | Thickness of the tab of a TO220 |
|
||||
| `TO247_size()` | Body dimensions of a T247, hole offset, lead height and lead wide length |
|
||||
| `fack2spm_bezel_size()` | FACK2SPM Bezel dimensions |
|
||||
| `fack2spm_screw()` | Screw type for FACK2SPM |
|
||||
|
||||
@@ -761,6 +796,7 @@ Various electronic components used in hot ends and heated beds.
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| ` TO220(description, leads = 3, lead_length = 16)` | Draw a TO220 package, use `description` to describe what it is |
|
||||
| ` TO247(description, lead_length = 20)` | Draw a TO247 package, use `description` to describe what it is |
|
||||
| `al_clad_resistor(type, value, leads = true)` | Draw an aluminium clad resistor |
|
||||
| `al_clad_resistor_hole_positions(type)` | Position children at the screw holes of an aluminium clad resistor |
|
||||
| `al_clad_resistor_holes(type, h = 100)` | Drill screw holes for an aluminium clad resistor |
|
||||
@@ -781,6 +817,7 @@ Various electronic components used in hot ends and heated beds.
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 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 | `resistor(RWM04106R80J)` | Resistor RWM04106R80J 6R8 3W vitreous enamel |
|
||||
| 1 | `resistor(RIE1212UB5C5R6)` | Resistor UB5C 5R6F 5R6 3W vitreous enamel |
|
||||
@@ -878,7 +915,7 @@ Dual inline IC packages and sockets
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `dip(n, part, size, w, pitch, pin)` | Draw DIP package |
|
||||
| `pdip(pins, part, socketed, w = inch(0.3)` | Draw standard 0.1" PDIP IC package |
|
||||
| `pdip(pins, part, socketed, w = inch(0.3), pitch = inch(0.1))` | Draw standard 0.1" PDIP IC package |
|
||||
| `pdip_pin(type, l, end)` | Draw a pin |
|
||||
|
||||

|
||||
@@ -941,6 +978,7 @@ LCD displays.
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `display(BigTreeTech_TFT35v3_0)` | BigTreeTech TFT35 v3.0 |
|
||||
| 1 | `display(HDMI5)` | HDMI display 5" |
|
||||
| 1 | `display(TFT128x160)` | LCD TFT ST7735 display 128x160 |
|
||||
| 1 | `display(LCD1602A)` | LCD display 1602A |
|
||||
| 1 | `display(LCDS7282B)` | LCD display S-7282B |
|
||||
| 1 | `display(SSD1963_4p3)` | LCD display SSD1963 4.3" |
|
||||
@@ -963,34 +1001,47 @@ Brackets for joining extrusions at a corner.
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_corner_bracket_base_thickness(type)` | Thickness of base of bracket |
|
||||
| `extrusion_corner_bracket_extrusion(type)` | Default extrusion this bracket is for |
|
||||
| `extrusion_corner_bracket_hole_offset(type)` | Hole offset from corner |
|
||||
| `extrusion_corner_bracket_side_thickness(type)` | Thickness of side of bracket |
|
||||
| `extrusion_corner_bracket_size(type)` | Size of bracket |
|
||||
| `extrusion_corner_bracket_tnut(type)` | The sliding t-nut to use in the assembly |
|
||||
| `extrusion_inner_corner_bracket_extrusion(type)` | Default extrusion this bracket is for |
|
||||
| `extrusion_inner_corner_bracket_screw_offsets(type)` | Screw offsets from the ends |
|
||||
| `extrusion_inner_corner_bracket_size(type)` | Size of inner bracket |
|
||||
| `extrusion_inner_corner_bracket_tnut(type)` | The sliding t-nut it is based on |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_corner_bracket(type)` | Corner bracket for extrusion |
|
||||
| `extrusion_corner_bracket_assembly(type, part_thickness = 2, screw_type = M4_cap_screw, nut_type = M4_sliding_t_nut, max_screw_depth = 6)` | Assembly with fasteners in place |
|
||||
| `extrusion_corner_bracket_assembly(type, part_thickness = undef, screw_type = undef, nut_type = undef, max_screw_depth = undef, extrusion = undef)` | Assembly with fasteners in place |
|
||||
| `extrusion_corner_bracket_hole_positions(type)` | Place children at hole positions |
|
||||
| `extrusion_inner_corner_bracket(type, grub_screws = true)` | Inner corner bracket for extrusion |
|
||||
| `extrusion_inner_corner_bracket(type, grub_screws = true, backwards = false, extrusion = undef)` | Inner corner bracket for extrusion |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `extrusion(E2020, 20)` | Extrusion E2020 x 20mm |
|
||||
| 1 | `extrusion(E2020, 30)` | Extrusion E2020 x 30mm |
|
||||
| 1 | `extrusion(E2020, 40)` | Extrusion E2020 x 40mm |
|
||||
| 1 | `extrusion(E2020, 50)` | Extrusion E2020 x 50mm |
|
||||
| 2 | `extrusion_corner_bracket(E20_corner_bracket)` | Extrusion corner bracket 20 |
|
||||
| 2 | `extrusion_inner_corner_bracket(E20_inner_corner_bracket, true)` | Extrusion inner corner bracket 4.5 |
|
||||
| 1 | `extrusion_inner_corner_bracket(E20_inner_corner_bracket, false)` | Extrusion inner corner bracket 4.5 |
|
||||
| 2 | `extrusion(E2020t, 20.5)` | Extrusion E2020t x 20.5mm |
|
||||
| 1 | `extrusion(E2020t, 28)` | Extrusion E2020t x 28mm |
|
||||
| 2 | `extrusion(E2020t, 39.5)` | Extrusion E2020t x 39.5mm |
|
||||
| 1 | `extrusion(E2020t, 48)` | Extrusion E2020t x 48mm |
|
||||
| 1 | `extrusion(E4040t, 27.4, cornerHole = true)` | Extrusion E4040t x 27.4mm |
|
||||
| 1 | `extrusion(E4040t, 40, cornerHole = true)` | Extrusion E4040t x 40mm |
|
||||
| 1 | `extrusion(E4040t, 60.4, cornerHole = true)` | Extrusion E4040t x 60.4mm |
|
||||
| 1 | `extrusion(E4040t, 80, cornerHole = true)` | Extrusion E4040t x 80mm |
|
||||
| 2 | `extrusion_corner_bracket(E20_corner_bracket)` | Extrusion corner bracket 20mm for E2020t |
|
||||
| 2 | `extrusion_corner_bracket(E40_corner_bracket)` | Extrusion corner bracket 35mm for E4040t |
|
||||
| 4 | `extrusion_inner_corner_bracket(E20_inner_corner_bracket)` | Extrusion inner corner bracket for E2020t |
|
||||
| 2 | `extrusion_inner_corner_bracket(E40_inner_corner_bracket)` | Extrusion inner corner bracket for E4040t |
|
||||
| 4 | `sliding_t_nut(M4_sliding_t_nut)` | Nut M4 sliding T |
|
||||
| 4 | `sliding_t_nut(M8_sliding_ball_t_nut)` | Nut M8 sliding T with spring loaded ball |
|
||||
| 4 | `screw(M4_cap_screw, 8)` | Screw M4 cap x 8mm |
|
||||
| 4 | `screw(M8_cap_screw, 12)` | Screw M8 cap x 12mm |
|
||||
| 4 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 4 | `washer(M8_washer)` | Washer M8 x 17mm x 1.6mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -1009,17 +1060,25 @@ Aluminium extrusion.
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_center_hole(type)` | Diameter of center hole |
|
||||
| `extrusion_center_square(type)` | Size of center square |
|
||||
| `extrusion_center_hole_wd(type)` | Diameter of center hole if -ve or square side if +ve |
|
||||
| `extrusion_center_square_wd(type)` | Size of center square if +ve or tube diameter if -ve |
|
||||
| `extrusion_channel_recess(type)` | Channel recess width and depth or false in none |
|
||||
| `extrusion_channel_width(type)` | Channel width |
|
||||
| `extrusion_channel_width_internal(type)` | Internal channel width |
|
||||
| `extrusion_corner_hole(type)` | Diameter of corner hole |
|
||||
| `extrusion_corner_hole_wd(type)` | Diameter of corner hole if -ve or square side if +ve |
|
||||
| `extrusion_fillet(type)` | Radius of corner fillet |
|
||||
| `extrusion_height(type)` | Height of extrusion |
|
||||
| `extrusion_spar_thickness(type)` | Spar thickness |
|
||||
| `extrusion_tab_thickness(type)` | Tab thickness |
|
||||
| `extrusion_width(type)` | Width of extrusion |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `extrusion_center_hole(type)` | Diameter of center hole or side if square |
|
||||
| `extrusion_center_square(type)` | Size of center square or tube |
|
||||
| `extrusion_corner_hole(type)` | Diameter of corner hole or side if square |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
@@ -1032,12 +1091,14 @@ Aluminium extrusion.
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `extrusion(E1515, 80)` | Extrusion E1515 x 80mm |
|
||||
| 1 | `extrusion(E2020, 80)` | Extrusion E2020 x 80mm |
|
||||
| 1 | `extrusion(E2020t, 80)` | Extrusion E2020t x 80mm |
|
||||
| 1 | `extrusion(E2040, 80)` | Extrusion E2040 x 80mm |
|
||||
| 1 | `extrusion(E2060, 80)` | Extrusion E2060 x 80mm |
|
||||
| 1 | `extrusion(E2080, 80)` | Extrusion E2080 x 80mm |
|
||||
| 1 | `extrusion(E3030, 80, cornerHole = true)` | Extrusion E3030 x 80mm |
|
||||
| 1 | `extrusion(E3060, 80, cornerHole = true)` | Extrusion E3060 x 80mm |
|
||||
| 1 | `extrusion(E4040, 80, cornerHole = true)` | Extrusion E4040 x 80mm |
|
||||
| 1 | `extrusion(E4040t, 80, cornerHole = true)` | Extrusion E4040t x 80mm |
|
||||
| 1 | `extrusion(E4080, 80, cornerHole = true)` | Extrusion E4080 x 80mm |
|
||||
|
||||
|
||||
@@ -1396,6 +1457,7 @@ IEC mains inlets and outlet.
|
||||
| 1 | `iec(IEC_inlet)` | IEC inlet |
|
||||
| 1 | `iec(IEC_inlet_atx)` | IEC inlet for ATX |
|
||||
| 1 | `iec(IEC_outlet)` | IEC outlet RS 811-7193 |
|
||||
| 1 | `iec(IEC_inlet_atx2)` | IEC pressfit inlet for ATX |
|
||||
| 1 | `iec(IEC_320_C14_switched_fused_inlet)` | IEC320 C14 switched fused inlet module |
|
||||
| 12 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 4 | `screw(M3_cs_cap_screw, 10)` | Screw M3 cs cap x 10mm |
|
||||
@@ -1468,14 +1530,18 @@ E.g. a "brown" socket for mains live needs to be displayed as "sienna" to look r
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `jack_4mm_flange_radius()` | 4mm jack socket flange radius |
|
||||
| `jack_4mm_hole_radius()` | Panel hole radius for 4mm jack |
|
||||
| `jack_4mm_plastic_flange_radius()` | 4mm plastic jack socket flange radius |
|
||||
| `jack_4mm_shielded_hole_radius()` | Panel hole radius for 4mm shielded jack |
|
||||
| `jack_4mm_shielded_nut_radius()` | Largest diameter of 4mm shielded jack |
|
||||
| `post_4mm_diameter()` | Outer diameter of 4mm binding post |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `jack_4mm(colour, thickness, display_colour = false)` | Draw a 4mm jack socket with nut positioned for specified panel thickness |
|
||||
| `jack_4mm_plastic(colour, thickness, display_colour = false)` | Draw a 4mm plastic jack socket with nut positioned for specified panel thickness |
|
||||
| `jack_4mm_shielded(colour, thickness, display_colour = false)` | Draw a 4mm shielded jack |
|
||||
| `post_4mm(colour, thickness, display_colour = false)` | Draw a 4mm binding post |
|
||||
| `post_4mm_hole(h = 100, poly = false)` | Drill hole for 4mm binding post |
|
||||
@@ -1487,6 +1553,7 @@ E.g. a "brown" socket for mains live needs to be displayed as "sienna" to look r
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `post_4mm("red", 3)` | 4mm jack binding post red |
|
||||
| 1 | `jack_4mm("blue", 3, "royalblue")` | 4mm jack socket blue |
|
||||
| 1 | `jack_4mm_plastic("[0.2, 0.2, 0.2]", 3, [0.2, 0.2, 0.2])` | 4mm plastic jack socket [0.2, 0.2, 0.2] |
|
||||
| 1 | `jack_4mm_shielded("brown", 3, "sienna")` | 4mm shielded jack socket brown |
|
||||
|
||||
|
||||
@@ -1547,9 +1614,11 @@ Nuts for leadscrews.
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `leadnut_bore(type)` | Thread size |
|
||||
| `leadnut_colour(type)` | The colour |
|
||||
| `leadnut_flange_dia(type)` | Flange diameter |
|
||||
| `leadnut_flange_offset(type)` | Offset of the flange from the top |
|
||||
| `leadnut_flange_t(type)` | Flange thickness |
|
||||
| `leadnut_flat(type)` | Flat section width |
|
||||
| `leadnut_height(type)` | Total height |
|
||||
| `leadnut_hole_dia(type)` | The diameter of the screw holes |
|
||||
| `leadnut_hole_pitch(type)` | The radial pitch of the screw holes |
|
||||
@@ -1577,6 +1646,7 @@ Nuts for leadscrews.
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `leadnut(LSN8x2)` | Leadscrew nut 8 x 2 |
|
||||
| 1 | `leadnut(LSN8x8)` | Leadscrew nut 8 x 8 RobotDigg |
|
||||
| 1 | `leadnut(SFU1610)` | Leadscrew nut for SFU1610 |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -1814,6 +1884,7 @@ Cylindrical and ring magnets.
|
||||
|:--- |:--- |
|
||||
| `magnet_h(type)` | Height |
|
||||
| `magnet_id(type)` | Inside diameter if a ring |
|
||||
| `magnet_name(type)` | Name |
|
||||
| `magnet_od(type)` | Outer diameter |
|
||||
| `magnet_r(type)` | Corner radius |
|
||||
|
||||
@@ -1827,9 +1898,10 @@ Cylindrical and ring magnets.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `magnet(MAG484)` | Magnet 6.35mm diameter, 6.35mm high, 3.175mm bore |
|
||||
| 1 | `magnet(MAG8x4x4p2)` | Magnet 8mm diameter, 4mm high, 4.2mm bore |
|
||||
| 1 | `magnet(MAG5x8)` | Magnet 8mm diameter, 5mm high |
|
||||
| 1 | `magnet(MAG484)` | Magnet, 6.35mm diameter, 6.35mm high, 3.175mm bore |
|
||||
| 1 | `magnet(MAG8x4x4p2)` | Magnet, 8mm diameter, 4mm high, 4.2mm bore |
|
||||
| 1 | `magnet(MAG5x8)` | Magnet, 8mm diameter, 5mm high |
|
||||
| 1 | `magnet(MAGRE6x2p5)` | Radial encoder magnet, 6mm diameter, 2.5mm high |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -2045,6 +2117,7 @@ If a nut is given a child then it gets placed on its top surface.
|
||||
| `nut_thickness(type, nyloc = false)` | Thickness of plain or nyloc version |
|
||||
| `nut_trap_flat_radius(nut, horizontal = false)` | Radius across the flats of a nut trap |
|
||||
| `nut_trap_radius(nut, horizontal = false)` | Radius across the corners of a nut trap |
|
||||
| `t_nut_tab(type)` | Sliding t-nut T dimensions |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
@@ -2053,6 +2126,7 @@ If a nut is given a child then it gets placed on its top surface.
|
||||
| `nut_and_washer(type, nyloc)` | Draw nut with corresponding washer |
|
||||
| `nut_square(type, brass = false, nylon = false)` | Draw specified square nut |
|
||||
| `nut_trap(screw, nut, depth = 0, horizontal = false, supported = false, h = 200)` | Make a nut trap |
|
||||
| `sliding_t_nut(type)` | Draw a sliding T nut, T nut with a spring loaded ball or a hammer nut. |
|
||||
| `wingnut(type)` | Draw a wingnut |
|
||||
|
||||

|
||||
@@ -2080,10 +2154,12 @@ If a nut is given a child then it gets placed on its top surface.
|
||||
| 1 | `nut(M5_nut)` | Nut M5 x 4mm |
|
||||
| 1 | `nut(M5_nut, nyloc = true)` | Nut M5 x 4mm nyloc |
|
||||
| 1 | `nut(M5nS_thin_nut)` | Nut M5nS 8 x 2.7mm |
|
||||
| 1 | `sliding_t_nut(M6_sliding_t_nut)` | Nut M6 hammer |
|
||||
| 1 | `nut(M6_half_nut)` | Nut M6 x 3mm |
|
||||
| 1 | `nut(M6_nut)` | Nut M6 x 5mm |
|
||||
| 1 | `nut(M6_nut, nyloc = true)` | Nut M6 x 5mm nyloc |
|
||||
| 1 | `nut(M6nS_thin_nut)` | Nut M6nS 10 x 3.2mm |
|
||||
| 1 | `sliding_t_nut(M8_sliding_ball_t_nut)` | Nut M8 sliding T with spring loaded ball |
|
||||
| 1 | `nut(M8_nut)` | Nut M8 x 6.5mm |
|
||||
| 1 | `nut(M8_nut, nyloc = true)` | Nut M8 x 6.5mm nyloc |
|
||||
| 1 | `nut(M8nS_thin_nut)` | Nut M8nS 13 x 4mm |
|
||||
@@ -2277,12 +2353,13 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| `barrel_jack(cutout = false)` | Draw barrel power jack |
|
||||
| `block(size, colour, makes_cutout, cutouts)` | Draw a coloured cube to represent a random PCB component |
|
||||
| `buzzer(height, diameter, colour)` | Draw PCB buzzer with specified height, diameter and colour |
|
||||
| `chip(length, width, thickness, colour, cutout = false)` | Draw a coloured cube to represent a chip, or other rectangular component |
|
||||
| `chip(length, width, thickness, colour, cutout = false)` | Draw a coloured cube to represent a chip, or other rectangular component, or cylinder if width is zero |
|
||||
| `flat_flex(type, cutout = false)` | Draw flat flexistrip connector as used on RPI0 |
|
||||
| `flex(cutout = false)` | Draw flexistrip connector |
|
||||
| `hdmi(type, cutout = false)` | Draw HDMI socket |
|
||||
| `jack(cutout = false)` | Draw 3.5mm jack |
|
||||
| `molex_254(ways)` | Draw molex header |
|
||||
| `molex_254(ways, right_angle = 0, skip = undef)` | Draw molex KK header, set `right_angle` to 1 for normal right angle version or -1 for inverted right angle version. |
|
||||
| `molex_254_housing(ways)` | Draw a Molex KK housing |
|
||||
| `molex_usb_Ax1(cutout)` | Draw Molex USB A connector suitable for perf board |
|
||||
| `molex_usb_Ax2(cutout)` | Draw Molex dual USB A connector suitable for perf board |
|
||||
| `pcb(type)` | Draw specified PCB |
|
||||
@@ -2293,6 +2370,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| `pcb_components(type, cutouts = false, angle = undef)` | Draw list of PCB components on the PCB |
|
||||
| `pcb_cutouts(type, angle = undef)` | Make cut outs to clear components on a PCB |
|
||||
| `pcb_grid(type, x, y, z = 0)` | Positions children at specified grid position |
|
||||
| `pcb_grid_components(type, components, cutouts = false, angle = undef)` | Draw list of components on the PCB grid for perf board |
|
||||
| `pcb_screw_positions(type)` | Positions children at the mounting hole positions |
|
||||
| `pcb_spacer(screw, height, wall = 1.8, taper = 0)` | Generate STL for PCB spacer |
|
||||
| `rj45(cutout = false)` | Draw RJ45 Ethernet connector |
|
||||
@@ -2305,12 +2383,14 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| `usb_B(cutout = false)` | Draw USB B connector |
|
||||
| `usb_C(cutout = false)` | Draw USB C connector |
|
||||
| `usb_uA(cutout = false)` | Draw USB micro A connector |
|
||||
| `vero_pin(cropped = false)` | Draw a vero pin |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `potentiometer(BTT_encoder)` | BTT_encoder |
|
||||
| 1 | `box_header(2p54header, 4, 2)` | Box header 4 x 2 |
|
||||
| 1 | `d_plug(DCONN9, pcb = true)` | D-type 9 way PCB mount plug |
|
||||
| 1 | `dil_socket(12, 15.24)` | DIL socket 24 x 0.6" |
|
||||
@@ -2318,6 +2398,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pdip(24, 27C32, w = 15.24)` | IC 27C32 PDIP24 |
|
||||
| 1 | `pdip(8, NE555)` | IC NE555 PDIP8 |
|
||||
| 1 | `idc_transition(2p54header, 5)` | IDC transition header 5 x 2 |
|
||||
| 1 | `potentiometer(KY_040_encoder)` | KY_040_encoder |
|
||||
| 1 | `led(LED10mm, "yellow")` | LED 10 mm yellow |
|
||||
| 1 | `led(LED3mm)` | LED 3 mm red |
|
||||
| 1 | `led(LED5mm, "orange")` | LED 5 mm orange |
|
||||
@@ -2355,7 +2436,8 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `green_terminal(gt_5x17, 3)` | Terminal block 3 way 5mm |
|
||||
| 2 | `green_terminal(gt_3p5, 4)` | Terminal block 4 way 3.5mm |
|
||||
| 1 | `terminal_35(4)` | Terminal block 4 way 3.5mm |
|
||||
| 1 | `pcb(TestPCB)` | Test PCB |
|
||||
| 1 | `pcb(test_pcb)` | Test PCB |
|
||||
| 2 | `vero_pin()` | Vero board pin |
|
||||
| 1 | `wire_link(0.8, 5.08, h = 10.16)` | Wire link 0.8mm x 0.2" |
|
||||
| 1 | `wire_link(0.8, 10.16)` | Wire link 0.8mm x 0.4" |
|
||||
|
||||
@@ -2418,12 +2500,13 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| `barrel_jack(cutout = false)` | Draw barrel power jack |
|
||||
| `block(size, colour, makes_cutout, cutouts)` | Draw a coloured cube to represent a random PCB component |
|
||||
| `buzzer(height, diameter, colour)` | Draw PCB buzzer with specified height, diameter and colour |
|
||||
| `chip(length, width, thickness, colour, cutout = false)` | Draw a coloured cube to represent a chip, or other rectangular component |
|
||||
| `chip(length, width, thickness, colour, cutout = false)` | Draw a coloured cube to represent a chip, or other rectangular component, or cylinder if width is zero |
|
||||
| `flat_flex(type, cutout = false)` | Draw flat flexistrip connector as used on RPI0 |
|
||||
| `flex(cutout = false)` | Draw flexistrip connector |
|
||||
| `hdmi(type, cutout = false)` | Draw HDMI socket |
|
||||
| `jack(cutout = false)` | Draw 3.5mm jack |
|
||||
| `molex_254(ways)` | Draw molex header |
|
||||
| `molex_254(ways, right_angle = 0, skip = undef)` | Draw molex KK header, set `right_angle` to 1 for normal right angle version or -1 for inverted right angle version. |
|
||||
| `molex_254_housing(ways)` | Draw a Molex KK housing |
|
||||
| `molex_usb_Ax1(cutout)` | Draw Molex USB A connector suitable for perf board |
|
||||
| `molex_usb_Ax2(cutout)` | Draw Molex dual USB A connector suitable for perf board |
|
||||
| `pcb(type)` | Draw specified PCB |
|
||||
@@ -2434,6 +2517,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| `pcb_components(type, cutouts = false, angle = undef)` | Draw list of PCB components on the PCB |
|
||||
| `pcb_cutouts(type, angle = undef)` | Make cut outs to clear components on a PCB |
|
||||
| `pcb_grid(type, x, y, z = 0)` | Positions children at specified grid position |
|
||||
| `pcb_grid_components(type, components, cutouts = false, angle = undef)` | Draw list of components on the PCB grid for perf board |
|
||||
| `pcb_screw_positions(type)` | Positions children at the mounting hole positions |
|
||||
| `pcb_spacer(screw, height, wall = 1.8, taper = 0)` | Generate STL for PCB spacer |
|
||||
| `rj45(cutout = false)` | Draw RJ45 Ethernet connector |
|
||||
@@ -2446,6 +2530,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| `usb_B(cutout = false)` | Draw USB B connector |
|
||||
| `usb_C(cutout = false)` | Draw USB C connector |
|
||||
| `usb_uA(cutout = false)` | Draw USB micro A connector |
|
||||
| `vero_pin(cropped = false)` | Draw a vero pin |
|
||||
|
||||

|
||||
|
||||
@@ -2453,18 +2538,21 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `pcb(ArduinoLeonardo)` | Arduino Leonardo |
|
||||
| 1 | `pcb(ArduinoNano)` | Arduino Nano |
|
||||
| 1 | `pcb(ArduinoUno3)` | Arduino Uno R3 |
|
||||
| 1 | `pcb(BTT_SKR_E3_TURBO)` | BigTreeTech SKR E3 Turbo |
|
||||
| 1 | `pcb(BTT_SKR_MINI_E3_V2_0)` | BigTreeTech SKR Mini E3 v2.0 |
|
||||
| 1 | `pcb(BTT_SKR_V1_4_TURBO)` | BigTreeTech SKR v1.4 Turbo |
|
||||
| 1 | | Cat 5 patch cable 300mm |
|
||||
| 1 | `d_plug(DCONN15, pcb = true)` | D-type 15 way PCB mount plug |
|
||||
| 1 | `d_plug(DCONN15, pcb = true)` | D-type 15 way PCB mount plug - not shown |
|
||||
| 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(ESP32_DOIT_V1)` | ESP32 DOIT DEV KIT V1 |
|
||||
| 1 | `pcb(EnviroPlus)` | Enviro+ |
|
||||
| 1 | `pcb(ExtruderPCB)` | Extruder connection PCB |
|
||||
| 1 | `pcb(ExtruderPCB)` | Extruder connection PCB - not shown |
|
||||
| 1 | `pcb(KY_040)` | KY-040 rotart encoder breakout |
|
||||
| 1 | `pcb(Keyes5p1)` | Keyes5.1 Arduino Uno expansion board - not shown |
|
||||
| 1 | `pcb(LIPO_fuel_gauge)` | LIPO fuel gauge |
|
||||
| 1 | `pcb(MP1584EN)` | MP1584EN 3A buck converter |
|
||||
@@ -2472,13 +2560,13 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pcb(Melzi)` | Melzi electronics - not shown |
|
||||
| 4 | | Micro SD card |
|
||||
| 1 | | Micro SD card - not shown |
|
||||
| 1 | `molex_254(2)` | Molex KK header 2 way |
|
||||
| 1 | `molex_254(3)` | Molex KK header 3 way |
|
||||
| 16 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 1 | `molex_254(2)` | Molex KK header 2 way - not shown |
|
||||
| 1 | `molex_254(3)` | Molex KK header 3 way - not shown |
|
||||
| 20 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 30 | `nut(M2p5_nut, nyloc = true)` | Nut M2.5 x 2.2mm nyloc |
|
||||
| 26 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 28 | `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(PI_IO)` | PI_IO V2 |
|
||||
| 1 | `pcb(PI_IO)` | PI_IO V2 - not shown |
|
||||
| 1 | `pcb(PSU12V1A)` | PSU 12V 1A - not shown |
|
||||
| 1 | `pcb(PERF60x40)` | Perfboard 60 x 40mm |
|
||||
| 1 | `pcb(PERF70x30)` | Perfboard 70 x 30mm |
|
||||
@@ -2486,57 +2574,58 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pcb(PERF70x51)` | Perfboard 70 x 51mm |
|
||||
| 1 | `pcb(PERF74x51)` | Perfboard 74 x 51mm |
|
||||
| 1 | `pcb(PERF80x20)` | Perfboard 80 x 20mm |
|
||||
| 1 | `pin_socket(2p54header, 13, 2, right_angle = true)` | Pin socket 13 x 2 right_angle |
|
||||
| 1 | `pin_socket(2p54header, 13, 2, right_angle = true)` | Pin socket 13 x 2 right_angle - not shown |
|
||||
| 1 | `pcb(RAMPSEndstop)` | RAMPS Endstop Switch |
|
||||
| 1 | `pcb(RPI3)` | Raspberry Pi 3 |
|
||||
| 1 | `pcb(RPI4)` | Raspberry Pi 4 |
|
||||
| 1 | `pcb(RPI_Pico)` | Raspberry Pi Pico |
|
||||
| 1 | `pcb(RPI0)` | Raspberry Pi Zero |
|
||||
| 8 | `screw(M2_cap_screw, 16)` | Screw M2 cap x 16mm |
|
||||
| 8 | `screw(M2_cap_screw, 20)` | Screw M2 cap x 20mm |
|
||||
| 12 | `screw(M2_cap_screw, 20)` | Screw M2 cap x 20mm |
|
||||
| 2 | `screw(M2p5_cap_screw, 16)` | Screw M2.5 cap x 16mm |
|
||||
| 8 | `screw(M2p5_cap_screw, 20)` | Screw M2.5 cap x 20mm |
|
||||
| 8 | `screw(M2p5_cap_screw, 25)` | Screw M2.5 cap x 25mm |
|
||||
| 8 | `screw(M2p5_cap_screw, 30)` | Screw M2.5 cap x 30mm |
|
||||
| 4 | `screw(M2p5_pan_screw, 20)` | Screw M2.5 pan x 20mm |
|
||||
| 8 | `screw(M2p5_pan_screw, 25)` | Screw M2.5 pan x 25mm |
|
||||
| 8 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
|
||||
| 4 | `screw(M3_cap_screw, 25)` | Screw M3 cap x 25mm |
|
||||
| 10 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
|
||||
| 14 | `screw(M3_cap_screw, 30)` | Screw M3 cap x 30mm |
|
||||
| 4 | `screw(M3_cap_screw, 35)` | Screw M3 cap x 35mm |
|
||||
| 8 | `screw(M4_cap_screw, 35)` | Screw M4 cap x 35mm |
|
||||
| 1 | `pcb(XIAO)` | Seeeduino XIAO |
|
||||
| 1 | `pcb(TP4056)` | TP4056 Li-lon Battery charger module |
|
||||
| 3 | `terminal_35(2)` | Terminal block 2 way 3.5mm |
|
||||
| 2 | `green_terminal(gt_2p54, 4)` | Terminal block 4 way 0.1" |
|
||||
| 3 | `terminal_35(2)` | Terminal block 2 way 3.5mm - not shown |
|
||||
| 2 | `green_terminal(gt_2p54, 4)` | Terminal block 4 way 0.1" - not shown |
|
||||
| 1 | | USB A to Mini B lead - not shown |
|
||||
| 1 | `pcb(WD2002SJ)` | WD2002SJ Buck Boost DC-DC converter |
|
||||
| 16 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 20 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 30 | `washer(M2p5_washer)` | Washer M2.5 x 5.9mm x 0.5mm |
|
||||
| 26 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 28 | `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 |
|
||||
|
||||
### Printed
|
||||
| Qty | Filename |
|
||||
| ---:|:--- |
|
||||
| 4 | pcb_spacer20100.stl |
|
||||
| 8 | pcb_spacer20100.stl |
|
||||
| 4 | pcb_spacer2070.stl |
|
||||
| 4 | pcb_spacer2080.stl |
|
||||
| 4 | pcb_spacer2090.stl |
|
||||
| 4 | pcb_spacer25100.stl |
|
||||
| 4 | pcb_spacer25110.stl |
|
||||
| 4 | pcb_spacer25120_2.stl |
|
||||
| 4 | pcb_spacer25130_2.stl |
|
||||
| 4 | pcb_spacer25150.stl |
|
||||
| 4 | pcb_spacer25160.stl |
|
||||
| 4 | pcb_spacer25120.stl |
|
||||
| 4 | pcb_spacer25130.stl |
|
||||
| 4 | pcb_spacer25140_2.stl |
|
||||
| 4 | pcb_spacer25150_2.stl |
|
||||
| 4 | pcb_spacer25170.stl |
|
||||
| 4 | pcb_spacer25180.stl |
|
||||
| 2 | pcb_spacer2550.stl |
|
||||
| 4 | pcb_spacer2590.stl |
|
||||
| 4 | pcb_spacer30140.stl |
|
||||
| 5 | pcb_spacer30170.stl |
|
||||
| 5 | pcb_spacer30180.stl |
|
||||
| 4 | pcb_spacer30190.stl |
|
||||
| 4 | pcb_spacer2580.stl |
|
||||
| 4 | pcb_spacer30160.stl |
|
||||
| 5 | pcb_spacer30190.stl |
|
||||
| 5 | pcb_spacer30200.stl |
|
||||
| 4 | pcb_spacer30210.stl |
|
||||
| 4 | pcb_spacer3050.stl |
|
||||
| 4 | pcb_spacer3060.stl |
|
||||
| 4 | pcb_spacer40200.stl |
|
||||
| 4 | pcb_spacer40210.stl |
|
||||
| 6 | pcb_spacer3060.stl |
|
||||
| 4 | pcb_spacer40220.stl |
|
||||
| 4 | pcb_spacer40230.stl |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -2672,7 +2761,7 @@ Pin headers and sockets, etc.
|
||||
|:--- |:--- |
|
||||
| `box_header(type, cols = 1, rows = 1, smt = false, cutout = false)` | Draw box header |
|
||||
| `idc_transition(type, cols = 5, skip = [], cutout = false)` | Draw IDC transition header |
|
||||
| `jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false)` | Draw JST XH connector |
|
||||
| `jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false, smt = false)` | Draw JST XH connector |
|
||||
| `pin(type, length = undef)` | Draw a header pin |
|
||||
| `pin_header(type, cols = 1, rows = 1, smt = false, right_angle = false, cutout = false, colour)` | Draw pin header |
|
||||
| `pin_socket(type, cols = 1, rows = 1, right_angle = false, height = 0, smt = false, cutout = false, colour)` | Draw pin socket |
|
||||
@@ -2697,6 +2786,62 @@ Pin headers and sockets, etc.
|
||||
| 1 | `pin_socket(2p54header, 8, 1)` | Pin socket 8 x 1 |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="Potentiometers"></a>
|
||||
## Potentiometers
|
||||
Potentiometers and rotary encoders
|
||||
|
||||
[vitamins/potentiometers.scad](vitamins/potentiometers.scad) Object definitions.
|
||||
|
||||
[vitamins/potentiometer.scad](vitamins/potentiometer.scad) Implementation.
|
||||
|
||||
[tests/potentiometers.scad](tests/potentiometers.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `pot_body(type)` | Body diameter or width & depth, height and corner radius |
|
||||
| `pot_boss_d(type)` | Boss diameter |
|
||||
| `pot_boss_h(type)` | Boss height |
|
||||
| `pot_face(type)` | Faceplate rib width, plate depth and plate height |
|
||||
| `pot_gangs(type)` | Number of gangs for mult-gang pot |
|
||||
| `pot_neck(type)` | Diameter and length of the shaft neck |
|
||||
| `pot_nut(type)` | Across flat diameter and thickness of the nut |
|
||||
| `pot_shaft(type)` | Diameter, flat diameter, length and flat/slot length and colour. If flat diameter is less than the radius then it is a slot width |
|
||||
| `pot_spigot(type)` | Spigot width, length and height above the boss |
|
||||
| `pot_spigot_x(type)` | Spigot offset from the shaft centre |
|
||||
| `pot_thread_d(type)` | Nomininal thread diameter |
|
||||
| `pot_thread_h(type)` | Height of threaded part |
|
||||
| `pot_thread_p(type)` | Thread pritch |
|
||||
| `pot_wafer(type)` | Width, diameter and thickness of the track wafer plus true if curved |
|
||||
| `pot_washer(type)` | Outside diameter and thickness of the washer |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `pot_size(type)` | Get pot body dimensions |
|
||||
| `pot_z(type, washer = true)` | Ideal distance behind panel surface to get the nut and washer on comfortably |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `pot_nut(type, washer = true)` | Draw the nut for a potentiometer and possibly a washer |
|
||||
| `potentiometer(type, thickness = 3, shaft_length = undef, value = false)` | Draw a potentiometer with nut spaced by specified thickness |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `potentiometer(BTT_encoder)` | BTT_encoder |
|
||||
| 1 | `potentiometer(KY_040_encoder)` | KY_040_encoder |
|
||||
| 1 | `potentiometer(imperial_pot)` | Potentiometer imperial_pot |
|
||||
| 1 | `potentiometer(imperial_pot_x2)` | Potentiometer imperial_pot_x2 |
|
||||
| 1 | `potentiometer(metric_pot)` | Potentiometer metric_pot |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
@@ -2717,6 +2862,7 @@ Face order is bottom, top, left, right, front, back.
|
||||
|:--- |:--- |
|
||||
| `atx_psu(type)` | True if an ATX style PSU |
|
||||
| `psu_accessories(type)` | Accessories to add to BOM, e.g. mains lead |
|
||||
| `psu_face_cutout(type)` | Panel cutout to accommodate this face, e.g. for ATX |
|
||||
| `psu_face_cutouts(type)` | List of polygons to remove |
|
||||
| `psu_face_fan(type)` | Fan x,y position and type |
|
||||
| `psu_face_grill(type)` | Is this face a grill |
|
||||
@@ -2752,7 +2898,7 @@ Face order is bottom, top, left, right, front, back.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `atx_psu_cutout(type)` | Cut out for the rear of an ATX |
|
||||
| `atx_psu_cutout(type, face = f_front)` | Cut out for the rear of an ATX, which is actually f_front! |
|
||||
| `psu(type)` | Draw a power supply |
|
||||
| `psu_screw_positions(type, face = undef)` | Position children at the screw positions on the preferred mounting face, which can be overridden. |
|
||||
| `terminal_block(type, ways)` | Draw a power supply terminal block |
|
||||
@@ -2762,18 +2908,18 @@ Face order is bottom, top, left, right, front, back.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | | IEC mains lead |
|
||||
| 2 | | IEC mains lead |
|
||||
| 1 | `psu(ATX500)` | PSU ATX500 |
|
||||
| 1 | `psu(KY240W)` | PSU KY-240W-12-L |
|
||||
| 1 | `psu(ATX300)` | PSU FSP300-60GHX |
|
||||
| 1 | `psu(KY240W)` | PSU KY-240W-12-L - not shown |
|
||||
| 1 | `psu(PD_150_12)` | PSU PD-150-12 |
|
||||
| 1 | `psu(S_250_48)` | PSU S-250-48 |
|
||||
| 1 | `psu(S_300_12)` | PSU S-300-12 |
|
||||
| 4 | `screw(No632_pan_screw, 8)` | Screw 6-32 pan x 8mm |
|
||||
| 4 | `screw(M3_cap_screw, 8)` | Screw M3 cap x 8mm |
|
||||
| 9 | `screw(No632_pan_screw, 8)` | Screw 6-32 pan x 8mm |
|
||||
| 8 | `screw(M3_pan_screw, 8)` | Screw M3 pan x 8mm |
|
||||
| 4 | `screw(M4_cap_screw, 8)` | Screw M4 cap x 8mm |
|
||||
| 12 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 8 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 8 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 13 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -2894,10 +3040,10 @@ Linear rails with carriages.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `carriage(type, end_colour = grey(20)` | Draw the specified carriage |
|
||||
| `carriage(type, end_colour = grey(20), wiper_colour = grey(20))` | Draw the specified carriage |
|
||||
| `carriage_hole_positions(type)` | Position children over screw holes |
|
||||
| `rail(type, length, colour = grey(90)` | Draw the specified rail |
|
||||
| `rail_assembly(carriage, length, pos, carriage_end_colour = grey(20)` | Rail and carriage assembly |
|
||||
| `rail(type, length, colour = grey(90), use_polycircles = false)` | Draw the specified rail |
|
||||
| `rail_assembly(carriage, length, pos, carriage_end_colour = grey(20), carriage_wiper_colour = grey(20))` | Rail and carriage assembly |
|
||||
| `rail_hole_positions(type, length, first = 0, screws = 100, both_ends = true)` | Position children over screw holes |
|
||||
| `rail_screws(type, length, thickness, screws = 100, index_screws = undef)` | Place screws in the rail |
|
||||
|
||||
@@ -2906,12 +3052,16 @@ Linear rails with carriages.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `rail(HGH15CA, 200)` | Linear rail HGH15CA x 200mm |
|
||||
| 1 | `rail(HGH20CA, 200)` | Linear rail HGH20CA x 200mm |
|
||||
| 1 | `rail(MGN12, 200)` | Linear rail MGN12 x 200mm |
|
||||
| 1 | `rail(MGN15, 200)` | Linear rail MGN15 x 200mm |
|
||||
| 1 | `rail(MGN5, 200)` | Linear rail MGN5 x 200mm |
|
||||
| 1 | `rail(MGN7, 200)` | Linear rail MGN7 x 200mm |
|
||||
| 1 | `rail(MGN9, 200)` | Linear rail MGN9 x 200mm |
|
||||
| 1 | `rail(SSR15, 200)` | Linear rail SSR15 x 200mm |
|
||||
| 1 | `carriage(HGH15CA_carriage)` | Linear rail carriage HGH15CA |
|
||||
| 1 | `carriage(HGH20CA_carriage)` | Linear rail carriage HGH20CA |
|
||||
| 1 | `carriage(MGN12C_carriage)` | Linear rail carriage MGN12C |
|
||||
| 1 | `carriage(MGN12H_carriage)` | Linear rail carriage MGN12H |
|
||||
| 1 | `carriage(MGN15C_carriage)` | Linear rail carriage MGN15C |
|
||||
@@ -2923,7 +3073,8 @@ Linear rails with carriages.
|
||||
| 1 | `carriage(SSR15_carriage)` | Linear rail carriage SSR15 |
|
||||
| 26 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 23 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 4 | `nut(M4_nut, nyloc = true)` | Nut M4 x 3.2mm nyloc |
|
||||
| 7 | `nut(M4_nut, nyloc = true)` | Nut M4 x 3.2mm nyloc |
|
||||
| 3 | `nut(M5_nut, nyloc = true)` | Nut M5 x 4mm nyloc |
|
||||
| 11 | `screw(M2_cap_screw, 10)` | Screw M2 cap x 10mm |
|
||||
| 15 | `screw(M2_cs_cap_screw, 10)` | Screw M2 cs cap x 10mm |
|
||||
| 8 | `screw(M3_cap_screw, 10)` | Screw M3 cap x 10mm |
|
||||
@@ -2932,10 +3083,15 @@ Linear rails with carriages.
|
||||
| 2 | `screw(M3_cs_cap_screw, 12)` | Screw M3 cs cap x 12mm |
|
||||
| 4 | `screw(M3_cs_cap_screw, 16)` | Screw M3 cs cap x 16mm |
|
||||
| 2 | `screw(M4_cap_screw, 16)` | Screw M4 cap x 16mm |
|
||||
| 2 | `screw(M4_cap_screw, 20)` | Screw M4 cap x 20mm |
|
||||
| 2 | `screw(M4_cs_cap_screw, 20)` | Screw M4 cs cap x 20mm |
|
||||
| 2 | `screw(M4_cs_cap_screw, 25)` | Screw M4 cs cap x 25mm |
|
||||
| 2 | `screw(M5_cap_screw, 20)` | Screw M5 cap x 20mm |
|
||||
| 2 | `screw(M5_cs_cap_screw, 25)` | Screw M5 cs cap x 25mm |
|
||||
| 26 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 23 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 4 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 7 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 3 | `washer(M5_washer)` | Washer M5 x 10mm x 1mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -3147,6 +3303,7 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
| 1 | `screw(M2_cs_cap_screw, 10)` | Screw M2 cs cap x 10mm |
|
||||
| 1 | `screw(M2_dome_screw, 10)` | Screw M2 dome x 10mm |
|
||||
| 1 | `screw(M2p5_cap_screw, 10)` | Screw M2.5 cap x 10mm |
|
||||
| 1 | `screw(M2p5_dome_screw, 10)` | Screw M2.5 dome x 10mm |
|
||||
| 1 | `screw(M2p5_pan_screw, 10)` | Screw M2.5 pan x 10mm |
|
||||
| 1 | `screw(M3_cap_screw, 10)` | Screw M3 cap x 10mm |
|
||||
| 1 | `screw(M3_cs_cap_screw, 10)` | Screw M3 cs cap x 10mm |
|
||||
@@ -3158,19 +3315,22 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
| 1 | `screw(M4_cap_screw, 25)` | Screw M4 cap x 25mm |
|
||||
| 1 | `screw(M4_cs_cap_screw, 25)` | Screw M4 cs cap x 25mm |
|
||||
| 1 | `screw(M4_dome_screw, 25)` | Screw M4 dome x 25mm |
|
||||
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||
| 1 | `screw(M4_grub_screw, 8)` | Screw M4 grub x 8mm |
|
||||
| 1 | `screw(M4_hex_screw, 30)` | Screw M4 hex x 30mm |
|
||||
| 1 | `screw(M4_pan_screw, 30)` | Screw M4 pan x 30mm |
|
||||
| 1 | `screw(M5_cap_screw, 30)` | Screw M5 cap x 30mm |
|
||||
| 1 | `screw(M5_cs_cap_screw, 30)` | Screw M5 cs cap x 30mm |
|
||||
| 1 | `screw(M5_dome_screw, 30)` | Screw M5 dome x 30mm |
|
||||
| 1 | `screw(M5_grub_screw, 10)` | Screw M5 grub x 10mm |
|
||||
| 1 | `screw(M5_hex_screw, 30)` | Screw M5 hex x 30mm |
|
||||
| 1 | `screw(M5_pan_screw, 30)` | Screw M5 pan x 30mm |
|
||||
| 1 | `screw(M6_cap_screw, 30)` | Screw M6 cap x 30mm |
|
||||
| 1 | `screw(M6_cs_cap_screw, 30)` | Screw M6 cs cap x 30mm |
|
||||
| 1 | `screw(M6_grub_screw, 12)` | Screw M6 grub x 12mm |
|
||||
| 1 | `screw(M6_hex_screw, 30)` | Screw M6 hex x 30mm |
|
||||
| 1 | `screw(M6_pan_screw, 30)` | Screw M6 pan x 30mm |
|
||||
| 1 | `screw(M8_cap_screw, 35)` | Screw M8 cap x 35mm |
|
||||
| 1 | `screw(M8_cs_cap_screw, 35)` | Screw M8 cs cap x 35mm |
|
||||
| 1 | `screw(M8_hex_screw, 30)` | Screw M8 hex x 30mm |
|
||||
| 1 | `screw(No2_screw, 10)` | Screw No2 pan wood x 10mm |
|
||||
| 1 | `screw(No4_screw, 10)` | Screw No4 pan wood x 10mm |
|
||||
@@ -3208,6 +3368,61 @@ Sealing strip from B&Q used to seal around the door of 3D printers.
|
||||
| 1 | `sealing_strip(100)` | Sealing strip 10mm x 4mm x 100mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="Servo_motors"></a>
|
||||
## Servo_motors
|
||||
BLDC servos for CNC machines
|
||||
|
||||
[vitamins/servo_motors.scad](vitamins/servo_motors.scad) Object definitions.
|
||||
|
||||
[vitamins/servo_motor.scad](vitamins/servo_motor.scad) Implementation.
|
||||
|
||||
[tests/servo_motors.scad](tests/servo_motors.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `faceplate_boss_size(type)` | Centre boss outer d, inner d and height |
|
||||
| `faceplate_hole_dia(type)` | Screw hole size |
|
||||
| `faceplate_hole_pitch(type)` | Screw hole pitch |
|
||||
| `faceplate_thickness(type)` | Thickness of the faceplate |
|
||||
| `faceplate_width(type)` | Width of faceplate |
|
||||
| `servo_motor_cap(type)` | Diameter height and corner radius of encoder cover |
|
||||
| `servo_motor_faceplate(type)` | Face plate type |
|
||||
| `servo_motor_length(type)` | Total length from the faceplate |
|
||||
| `servo_motor_shaft(type)` | Shaft type |
|
||||
| `shaft_diameter(type)` | Shaft diameter |
|
||||
| `shaft_key_size(type)` | None |
|
||||
| `shaft_length(type)` | Shaft length |
|
||||
| `shaft_type(type)` | String to indicate the shaft type |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `servo_motor_width(type)` | Width of the motor body |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `faceplate_screw_positions(type)` | Position children at faceplate screw positions |
|
||||
| `motor_faceplate(type)` | Draw specified motor faceplate |
|
||||
| `motor_shaft(type)` | Draw the specified motor shaft |
|
||||
| `servo_motor(type)` | Draw the specified servo |
|
||||
| `servo_screw_positions(type)` | Position children at screw positions |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `servo_motor(Lichuan_M01330_80ST) ` | Servo Lichuan LCMT07L02NB-80M01330B 80ST mount 80 x 123mm |
|
||||
| 1 | `servo_motor(Lichuan_M02430_80ST) ` | Servo Lichuan LCMT07L02NB-80M02430B 80ST mount 80 x 150mm |
|
||||
| 1 | `servo_motor(Lichuan_M03530_80ST) ` | Servo Lichuan LCMT07L02NB-80M03530B 80ST mount 80 x 178mm |
|
||||
| 1 | `servo_motor(Lichuan_M04030_80ST) ` | Servo Lichuan LCMT07L02NB-80M04030B 80ST mount 80 x 190mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
@@ -3298,6 +3513,9 @@ When woven sheets (e.g. carbon fibre) are rendered it is necessary to specify th
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `sheet(FoilTape, 30, 30, 2)` | Aluminium foil tape 30mm x 30mm x 0.05mm |
|
||||
| 1 | `sheet(AL1_6, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 1.6mm |
|
||||
| 1 | `sheet(AL2, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 2mm |
|
||||
| 1 | `sheet(AL3, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 3mm |
|
||||
| 1 | `sheet(AL6, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 6mm |
|
||||
| 1 | `sheet(AL8, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 8mm |
|
||||
| 1 | `sheet(Spring05, 30, 30, 2)` | Bi-metal saw blade 30mm x 30mm x 0.5mm |
|
||||
@@ -3309,6 +3527,7 @@ When woven sheets (e.g. carbon fibre) are rendered it is necessary to specify th
|
||||
| 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(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 |
|
||||
| 1 | `sheet(PMMA2, 30, 30, 2)` | Sheet acrylic 30mm x 30mm x 2mm |
|
||||
| 1 | `sheet(PMMA3, 30, 30, 2)` | Sheet acrylic 30mm x 30mm x 3mm |
|
||||
@@ -3614,15 +3833,20 @@ NEMA stepper motor model.
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `NEMA_black_caps(type)` | End caps are black |
|
||||
| `NEMA_body_radius(type)` | Body radius |
|
||||
| `NEMA_boss_height(type)` | Boss height |
|
||||
| `NEMA_boss_radius(type)` | Boss around the spindle radius |
|
||||
| `NEMA_cap_heights(type)` | Height of the end cap at the corner and the side |
|
||||
| `NEMA_end_connector(type)` | If has a connector then plug goes in the end rather than the side |
|
||||
| `NEMA_hole_pitch(type)` | Screw hole pitch |
|
||||
| `NEMA_length(type)` | Body length |
|
||||
| `NEMA_radius(type)` | End cap radius |
|
||||
| `NEMA_shaft_bore(type)` | Hollow shaft in non-zero |
|
||||
| `NEMA_shaft_dia(type)` | Shaft diameter |
|
||||
| `NEMA_shaft_length(type)` | Shaft length above the face, if a list then a leadscrew: length, lead, starts |
|
||||
| `NEMA_shaft_length2(type)` | Rear shaft length if non-zero |
|
||||
| `NEMA_thread_d(type)` | Screw hole diameter |
|
||||
| `NEMA_width(type)` | Width of the square face |
|
||||
|
||||
### Functions
|
||||
@@ -3653,6 +3877,8 @@ NEMA stepper motor model.
|
||||
| 1 | `NEMA(NEMA17M)` | Stepper motor NEMA17 x 40mm |
|
||||
| 1 | `NEMA(NEMA17)` | Stepper motor NEMA17 x 47mm |
|
||||
| 1 | `NEMA(NEMA23)` | Stepper motor NEMA22 x 51.2mm |
|
||||
| 1 | `NEMA(NEMA8)` | Stepper motor NEMA8 x 30mm |
|
||||
| 1 | `NEMA(NEMA8BH)` | Stepper motor NEMA8 x 30mm |
|
||||
| 16 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 20 | `star_washer(M3_washer)` | Washer star M3 x 0.5mm |
|
||||
|
||||
@@ -4206,7 +4432,7 @@ Normally the side sheets are the same type but they can be overridden individual
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `box(screw, wall, sheets, top_sheet, base_sheet, size, feet = false, shelf_screw = M3_dome_screw)` | Construct a property list for a box. |
|
||||
| `box(screw, wall, sheets, top_sheet, base_sheet, size, feet = false, shelf_screw = undef)` | Construct a property list for a box. |
|
||||
| `box_bezel_height(type, bottom)` | Bezel height for top or bottom |
|
||||
| `box_corner_gap(type)` | Gap between box_sheets at the corners to connect inside and outside profiles |
|
||||
| `box_inset(type)` | How much the bezel intrudes on the specified width and length, away from the corners |
|
||||
@@ -4778,7 +5004,7 @@ The ring spacing as well as the number of spokes can be specified, if zero a gas
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `fan_guard(type, name = false, thickness = fan_guard_thickness()` | Generate the STL |
|
||||
| `fan_guard(type, name = false, thickness = fan_guard_thickness(), spokes = 4, finger_width = 7, grill = false, screws = true)` | Generate the STL |
|
||||
|
||||

|
||||
|
||||
@@ -4985,7 +5211,7 @@ inserts don't grip well in rubber.
|
||||
|:--- |:--- |
|
||||
| `fastened_insert_foot_assembly(t = 3, type = insert_foot)` | Assembly with fasteners in place for specified sheet thickness |
|
||||
| `foot(type = foot)` | Generate STL |
|
||||
| `foot_assembly(t = 0, type = foot, flip = false)` | Assembly with fasteners in place for specified sheet thickness |
|
||||
| `foot_assembly(t = 0, type = foot, flip = false, no_washer = false)` | Assembly with fasteners in place for specified sheet thickness |
|
||||
| `insert_foot(type = insert_foot)` | Generate STL for foot with insert |
|
||||
| `insert_foot_assembly(type = insert_foot)` | Printed part with insert in place |
|
||||
|
||||
@@ -5063,6 +5289,75 @@ Printed handle that can be printed without needing support material due to its t
|
||||
| 1 | handle_assembly |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="Knob"></a>
|
||||
## Knob
|
||||
Parametric knobs for potentiometers and encoders.
|
||||
|
||||
A knob can be constructed by specififying all the parameters or the potentiometer can be specified to customise it for its shaft with a recess to clear the nut, washer and thread.
|
||||
An optional skirt and / or a pointer can be specified.
|
||||
|
||||
The STL includes a support membrane that needs to be cut out and a thread needs to be tapped for the grub screw.
|
||||
|
||||
[printed/knob.scad](printed/knob.scad) Implementation.
|
||||
|
||||
[tests/knob.scad](tests/knob.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `knob_bot_d(type)` | Diameter at the bottom |
|
||||
| `knob_corner_r(type)` | Rounded top corner |
|
||||
| `knob_flat_d(type)` | The shaft diameter at the flat |
|
||||
| `knob_flat_h(type)` | The length of the flat |
|
||||
| `knob_height(type)` | Height |
|
||||
| `knob_name(type)` | Name for the stl maker |
|
||||
| `knob_pointer(type)` | None |
|
||||
| `knob_recess(type)` | Recess diameter and thickness to clear nut and thread, diameter, nut height, thread height |
|
||||
| `knob_screw(type)` | The grub screw type |
|
||||
| `knob_shaft_d(type)` | Shaft diameter |
|
||||
| `knob_shaft_len(type)` | Shaft length |
|
||||
| `knob_skirt(type)` | Skirt diameter and thickness |
|
||||
| `knob_top_d(type)` | Diameter at the top |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `knob(name = "knob", top_d = 12, bot_d = 15, height = 18, shaft_length, skirt = [20, 2], pointer = false, corner_r = 2, screw = M3_grub_screw, shaft_d, flat_d, flat_h, recess)` | Constructor |
|
||||
| `knob_for_pot(pot, thickness, z = 1, shaft_length = undef, top_d = 12, bot_d = 15, skirt = [20, 2], pointer = false, corner_r = 2, height = 0, washer = true)` | Construct a knob to fit specified pot |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `knob(type, supports = true)` | Generate the STL for a knob |
|
||||
| `knob_assembly(type) explode(40, explode_children = true)` | Assembly with the grub screw in place |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `potentiometer(BTT_encoder)` | BTT_encoder |
|
||||
| 1 | `potentiometer(KY_040_encoder)` | KY_040_encoder |
|
||||
| 1 | `potentiometer(imperial_pot)` | Potentiometer imperial_pot |
|
||||
| 1 | `potentiometer(imperial_pot_x2)` | Potentiometer imperial_pot_x2 |
|
||||
| 1 | `potentiometer(metric_pot)` | Potentiometer metric_pot |
|
||||
| 1 | `screw(M3_grub_screw, 4)` | Screw M3 grub x 4mm |
|
||||
| 2 | `screw(M3_grub_screw, 5)` | Screw M3 grub x 5mm |
|
||||
| 2 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||
|
||||
### Printed
|
||||
| Qty | Filename |
|
||||
| ---:|:--- |
|
||||
| 1 | BTT_encoder_knob.stl |
|
||||
| 1 | KY_040_encoder_knob.stl |
|
||||
| 1 | imperial_pot_knob.stl |
|
||||
| 1 | imperial_pot_x2_knob.stl |
|
||||
| 1 | metric_pot_knob.stl |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
@@ -5353,6 +5648,7 @@ The stl and assembly must be given a name and parameterless wrappers for the stl
|
||||
| `psu_shroud_extent(type)` | How far it extends beyond the PSU to clear the connections |
|
||||
| `psu_shroud_height(type)` | Outside height |
|
||||
| `psu_shroud_screw(type)` | Screw used to fasten |
|
||||
| `psu_shroud_wall(type)` | The wall thickness |
|
||||
| `psu_shroud_width(type)` | Outside width of the shroud |
|
||||
|
||||
### Modules
|
||||
@@ -5361,7 +5657,7 @@ The stl and assembly must be given a name and parameterless wrappers for the stl
|
||||
| `psu_shroud(type, cable_d, name, cables = 1)` | Generate the STL file for a specified ssr and cable |
|
||||
| `psu_shroud_assembly(type, cable_d, name, cables = 1)` | The printed parts with inserts fitted |
|
||||
| `psu_shroud_cable_positions(type, cable_d, cables = 1)` | Place children at the cable tie positions |
|
||||
| `psu_shroud_fastened_assembly(type, cable_d, thickness, name, cables = 1)` | Assembly with screws in place |
|
||||
| `psu_shroud_fastened_assembly(type, cable_d, thickness, name, cables = 1, screw = screw)` | Assembly with screws in place |
|
||||
| `psu_shroud_hole_positions(type)` | Place children at the screw hole positions |
|
||||
| `psu_shroud_holes(type, cable_d, cables = 1)` | Drill the screw and ziptie holes |
|
||||
|
||||
@@ -6115,8 +6411,9 @@ Because the tangents need to be calculated to find the length these can be calcu
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `circle_tangent(p1, p2)` | Compute the clockwise tangent between two circles represented as [x,y,r] |
|
||||
| `rounded_polygon(points, _tangents = undef)` | Return the rounded polygon from the point list, can pass the tangent list to save it being calculated |
|
||||
| `rounded_polygon_arcs(points, tangents)` | Compute the arcs at the points, for each point [angle, rotate_angle, length] |
|
||||
| `rounded_polygon_length(points, tangents)` | Calculate the length given the point list and the list of tangents computed by ` rounded_polygon_tangents` |
|
||||
| `rounded_polygon_length(points, tangents)` | Calculate the length given the point list and the list of tangents computed by `rounded_polygon_tangents` |
|
||||
| `rounded_polygon_tangents(points)` | Compute the straight sections between a point and the next point, for each section [start_point, end_point, length] |
|
||||
|
||||
### Modules
|
||||
@@ -6266,7 +6563,7 @@ Simple tube or ring
|
||||
| `rectangular_tube(size, center = true, thickness = 1, fillet = 0.5)` | Create a rectangular tube with filleted corners |
|
||||
| `ring(or, ir)` | Create a ring with specified external and internal radii |
|
||||
| `tube(or, ir, h, center = true)` | Create a tube with specified external and internal radii and height `h` |
|
||||
| `woven_tube(or, ir, h, center= true, colour = grey(30)` | Create a woven tube with specified external and internal radii, height `h`, colours, warp and weft |
|
||||
| `woven_tube(or, ir, h, center= true, colour = grey(30), colour2, warp = 2, weft)` | Create a woven tube with specified external and internal radii, height `h`, colours, warp and weft |
|
||||
|
||||

|
||||
|
||||
@@ -6309,7 +6606,7 @@ The `pose()` module allows assembly views in the readme to be posed differently
|
||||
|:--- |:--- |
|
||||
| `arg(value, default, name = "")` | Create string for arg if not default, helper for `vitamin()` |
|
||||
| `bom_mode(n = 1)` | Current BOM mode, 0 = none, 1 = printed and routed parts and assemblies, 2 includes vitamins as well |
|
||||
| `exploded()` | Returns the value of `$exploded` if it is defined, else `0` |
|
||||
| `exploded()` | Returns the value of `$explode` if it is defined, else `0` |
|
||||
| `show_supports()` | True if printed support material should be shown |
|
||||
| `value_string(value)` | Convert `value` to a string or quote it if it is already a string |
|
||||
|
||||
|
@@ -81,7 +81,7 @@ def scrape_code(scad_file):
|
||||
match = re.match(r'^function (.*?\(.*?\)).*?(?://! ?(.*))$', line)
|
||||
if match:
|
||||
functions[match.group(1)] = match.group(2)
|
||||
match = re.match(r'^module (.*?\(.*?\)).*?(?://! ?(.*))$', line)
|
||||
match = re.match(r'^module (.*?\(.*\)).*?(?://! ?(.*))$', line)
|
||||
if match:
|
||||
modules[match.group(1)] = match.group(2)
|
||||
|
||||
|
@@ -139,6 +139,7 @@ def make_parts(target, part_type, parts = None):
|
||||
#
|
||||
part_maker_name = tmp_dir + '/' + part_type + ".scad"
|
||||
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);
|
||||
t = time.time()
|
||||
|
@@ -94,11 +94,13 @@ def render(target, type):
|
||||
cam = "--camera=0,0,0,70,0,315,500" 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'
|
||||
openscad.run("-o", tmp_name, png_maker_name, colour_scheme, "--projection=p", "--imgsize=4096,4096", cam, render, "--autocenter", "--viewall");
|
||||
dummy_deps_name = tmp_dir + '/tmp.deps' # work around for OpenSCAD issue #3879
|
||||
openscad.run("-o", tmp_name, png_maker_name, colour_scheme, "--projection=p", "--imgsize=4096,4096", cam, render, "--autocenter", "--viewall", "-d", dummy_deps_name)
|
||||
do_cmd(("magick "+ tmp_name + " -trim -resize 280x280 -background %s -gravity Center -extent 280x280 -bordercolor %s -border 10 %s"
|
||||
% (background, background, tmp_name)).split())
|
||||
update_image(tmp_name, png_name)
|
||||
os.remove(png_maker_name)
|
||||
os.remove(dummy_deps_name)
|
||||
#
|
||||
# Remove tmp dir
|
||||
#
|
||||
|
@@ -72,6 +72,8 @@ def update_image(tmp_name, png_name):
|
||||
if pixels < 0 or pixels > threshold:
|
||||
shutil.copyfile(tmp_name, png_name)
|
||||
print(Fore.YELLOW + png_name + " updated" + Fore.WHITE, pixels if pixels > 0 else '')
|
||||
if png_name.endswith('_tn.png') and os.path.isfile(diff_name):
|
||||
os.remove(diff_name)
|
||||
else:
|
||||
os.utime(png_name, None)
|
||||
os.remove(diff_name)
|
||||
|
@@ -25,6 +25,7 @@ import time
|
||||
def mktmpdir(top_dir):
|
||||
tmp_dir = top_dir + 'tmp'
|
||||
if not os.path.isdir(tmp_dir):
|
||||
time.sleep(0.1)
|
||||
os.makedirs(tmp_dir)
|
||||
else:
|
||||
for file in os.listdir(tmp_dir):
|
||||
|
@@ -216,6 +216,7 @@ def views(target, do_assemblies = None):
|
||||
#
|
||||
png_maker_name = tmp_dir + '/png.scad'
|
||||
with open(png_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);
|
||||
t = time.time()
|
||||
|
31
tests/7_segments.scad
Normal file
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2021
|
||||
// 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 <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/7_segments.scad>
|
||||
|
||||
function digits(s) = 7_segment_digits(s) < 2 ? 2 : 1;
|
||||
|
||||
module 7_segments()
|
||||
layout([for(s = 7_segments) 7_segment_size(s).x * digits(s)], 3) let(s = 7_segments[$i])
|
||||
7_segment_digits(s, digits(s));
|
||||
|
||||
if($preview)
|
||||
7_segments();
|
@@ -16,7 +16,7 @@
|
||||
// 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>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/dip.scad>
|
||||
|
||||
dips = [[6, "OPTO"], [8, "NE555"], [14, "74HC00"], [16, "ULN2003"], [18, "ULN2803"], [20, "74HC245"], [28, "ATMEGA328"]];
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// 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>
|
||||
include <../utils/core/core.scad>
|
||||
include <../vitamins/ldrs.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
@@ -22,6 +22,8 @@ include <../vitamins/d_connectors.scad>
|
||||
include <../vitamins/leds.scad>
|
||||
include <../vitamins/axials.scad>
|
||||
include <../vitamins/smds.scad>
|
||||
include <../vitamins/7_segments.scad>
|
||||
include <../vitamins/potentiometers.scad>
|
||||
|
||||
use <../vitamins/pcb.scad>
|
||||
|
||||
@@ -46,7 +48,7 @@ TMC2130 = ["TMC2130", "TMC2130",
|
||||
[]
|
||||
];
|
||||
|
||||
test_pcb = ["TestPCB", "Test PCB",
|
||||
test_pcb = ["test_pcb", "Test PCB",
|
||||
100, 250, 1.6, // length, width, thickness
|
||||
3, // Corner radius
|
||||
2.75, // Mounting hole diameter
|
||||
@@ -95,6 +97,8 @@ test_pcb = ["TestPCB", "Test PCB",
|
||||
[ 65, 12, 0, "ax_res", res1_8, 1000],
|
||||
[ 65, 17, 0, "ax_res", res1_4, 10000],
|
||||
[ 65, 22, 0, "ax_res", res1_2, 100000],
|
||||
[ 55, 22, 0, "vero_pin"],
|
||||
[ 55, 17, 0, "vero_pin", true],
|
||||
|
||||
[ 80, 9, 0, "link", inch(0.2), inch(0.4)],
|
||||
[ 80, 12, 0, "ax_res", res1_8, 1000000, 1, inch(0.1)],
|
||||
@@ -137,7 +141,8 @@ test_pcb = ["TestPCB", "Test PCB",
|
||||
[ 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"],
|
||||
[ 75, 240, 0, "potentiometer", 7, 8],
|
||||
[ 75, 240, 0, "potentiometer", KY_040_encoder, 8],
|
||||
[ 30, 85, -90, "7seg", WT5011BSR, 2],
|
||||
],
|
||||
// accessories
|
||||
[]
|
||||
|
@@ -21,7 +21,7 @@ include <../vitamins/pcbs.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
function spacing(p) = let(w = pcb_width(p)) w < 22 ? w + 3 : w + 10;
|
||||
function spacing(p) = let(w = pcb_width(p)) w < 22 ? w + 3 : w + 7;
|
||||
|
||||
module pcbs() {
|
||||
layout([for(p = pcbs) spacing(p)], 0)
|
||||
@@ -29,9 +29,9 @@ module pcbs() {
|
||||
rotate(90)
|
||||
pcb_assembly(pcbs[$i], 5 + $i, 3);
|
||||
|
||||
translate([0, 45])
|
||||
translate([0, 65])
|
||||
layout([for(p = tiny_pcbs) pcb_length(p)], 3)
|
||||
translate([0, pcb_width(tiny_pcbs[$i]) / 2])
|
||||
translate([0, -pcb_width(tiny_pcbs[$i]) / 2])
|
||||
pcb_assembly(tiny_pcbs[$i], 5 + $i, 3);
|
||||
|
||||
translate([0, 120])
|
||||
|
@@ -16,20 +16,32 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
show_cutout = false;
|
||||
|
||||
include <../core.scad>
|
||||
include <../vitamins/psus.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
|
||||
|
||||
module psus()
|
||||
layout([for(p = psus) psu_width(p)], 10) let(p = psus[$i])
|
||||
layout([for(p = psus) atx_psu(p) ? psu_length(p) : psu_width(p)], 10) let(p = psus[$i])
|
||||
rotate(atx_psu(p) ? 0 : 90) {
|
||||
psu(p);
|
||||
|
||||
psu_screw_positions(p)
|
||||
translate_z(3)
|
||||
screw_and_washer(psu_screw(p), 8);
|
||||
|
||||
if(show_cutout && atx_psu(p))
|
||||
#atx_psu_cutout(p);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
if($preview) {
|
||||
psus();
|
||||
|
||||
for(p = psus_not_shown)
|
||||
hidden()
|
||||
psu(p);
|
||||
}
|
||||
|
@@ -22,18 +22,20 @@ include <../vitamins/extrusions.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module sk_brackets() {
|
||||
module sk_brackets(examples = false) {
|
||||
screws = [M4_dome_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw];
|
||||
nuts = [M4_hammer_nut, M4_sliding_t_nut, M5_sliding_t_nut, undef];
|
||||
// channel depth = 6 for 2020 extrusion, 9 for 3030 extrusion
|
||||
depths = [6, 6, 9, 0];
|
||||
layout([for(s = sk_brackets) 1.5 * sk_size(s)[1]]) {
|
||||
sk_bracket_assembly(sk_brackets[$i], screw_type = screws[$i], nut_type = nuts[$i], max_screw_depth = depths[$i]);
|
||||
translate([0, -sk_hole_offset(sk_brackets[$i]) - extrusion_width($i < 2 ? E2020 : E3030) / 2, 0])
|
||||
rotate([0, 90, 0])
|
||||
extrusion($i < 2 ? E2020 : E3030, 20, false);
|
||||
|
||||
if(examples)
|
||||
translate([0, -sk_hole_offset(sk_brackets[$i]) - extrusion_width($i < 2 ? E2020 : E3030) / 2, 0])
|
||||
rotate([0, 90, 0])
|
||||
extrusion($i < 2 ? E2020 : E3030, 20, false);
|
||||
}
|
||||
}
|
||||
|
||||
if($preview)
|
||||
sk_brackets();
|
||||
sk_brackets(true);
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// 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>
|
||||
include <../utils/core/core.scad>
|
||||
include <../vitamins/ssrs.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// 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>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/ball_bearings.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// 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>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
use <../printed/camera_housing.scad>
|
||||
|
@@ -42,6 +42,9 @@ module components() {
|
||||
TO220("Generic TO220 package");
|
||||
|
||||
translate([40, 50])
|
||||
TO247("Generic TO247 package");
|
||||
|
||||
translate([40, 80])
|
||||
panel_USBA();
|
||||
|
||||
translate([80, 50])
|
||||
|
@@ -19,7 +19,6 @@
|
||||
|
||||
include <../core.scad>
|
||||
include <../vitamins/pulleys.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/stepper_motors.scad>
|
||||
include <../vitamins/washers.scad>
|
||||
|
||||
|
@@ -24,7 +24,10 @@ use <../vitamins/pcb.scad>
|
||||
|
||||
module displays()
|
||||
layout([for(d = displays) pcb_length(display_pcb(d))], 10)
|
||||
display(displays[$i]);
|
||||
translate([0, pcb_width(displays[$i]) / 2])
|
||||
vflip()
|
||||
display(displays[$i]);
|
||||
|
||||
if($preview)
|
||||
displays();
|
||||
let($show_threads = true)
|
||||
displays();
|
||||
|
@@ -16,13 +16,51 @@
|
||||
// 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>
|
||||
include <../core.scad>
|
||||
|
||||
include <../vitamins/extrusion_brackets.scad>
|
||||
include <../vitamins/extrusions.scad>
|
||||
include <../vitamins/extrusion_brackets.scad>
|
||||
include <../vitamins/washers.scad>
|
||||
include <../vitamins/nuts.scad>
|
||||
|
||||
module inner_bracket_test(bracket, backwards = false)
|
||||
rotate([90, 0, 180]) {
|
||||
extrusion = extrusion_inner_corner_bracket_extrusion(bracket);
|
||||
eWidth = extrusion_width(extrusion);
|
||||
size = extrusion_inner_corner_bracket_size(bracket);
|
||||
tnut = extrusion_inner_corner_bracket_tnut(bracket);
|
||||
|
||||
translate([backwards ? -eWidth : 0, 0])
|
||||
extrusion_inner_corner_bracket(bracket, backwards = backwards);
|
||||
|
||||
translate([-eWidth / 2, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(extrusion, size.x - nut_thickness(tnut) - extrusion_tab_thickness(extrusion), false, cornerHole = eWidth > 20);
|
||||
|
||||
translate([-eWidth, -eWidth / 2])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(extrusion, eWidth + size.y - nut_thickness(tnut) - extrusion_tab_thickness(extrusion), false, cornerHole = eWidth > 20);
|
||||
}
|
||||
|
||||
|
||||
module bracket_test(bracket)
|
||||
rotate([90, 0, 180]) {
|
||||
extrusion = extrusion_corner_bracket_extrusion(bracket);
|
||||
eWidth = extrusion_width(extrusion);
|
||||
size = extrusion_corner_bracket_size(bracket);
|
||||
|
||||
extrusion_corner_bracket_assembly(bracket);
|
||||
|
||||
translate([-eWidth / 2, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(extrusion, size.y, false, cornerHole = eWidth > 20);
|
||||
|
||||
translate([-eWidth, -eWidth / 2])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(extrusion, eWidth + size.x, false, cornerHole = eWidth > 20);
|
||||
}
|
||||
|
||||
|
||||
module extrusion_brackets(examples = false) {
|
||||
extrusion_inner_corner_bracket(E20_inner_corner_bracket);
|
||||
|
||||
@@ -32,34 +70,30 @@ module extrusion_brackets(examples = false) {
|
||||
translate([60, 0])
|
||||
extrusion_corner_bracket_assembly(E20_corner_bracket);
|
||||
|
||||
eWidth = extrusion_width(E2020);
|
||||
translate([110, 0])
|
||||
extrusion_inner_corner_bracket(E40_inner_corner_bracket);
|
||||
|
||||
translate([140, 0])
|
||||
extrusion_corner_bracket_assembly(E40_corner_bracket);
|
||||
|
||||
if(examples) {
|
||||
translate([20, 60, 10]) rotate([90, 0, 180]) {
|
||||
extrusion_inner_corner_bracket(E20_inner_corner_bracket);
|
||||
translate([20, 50, 10])
|
||||
inner_bracket_test(E20_inner_corner_bracket, true);
|
||||
|
||||
translate([-eWidth / 2, 0, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(E2020, 20, false);
|
||||
translate([20, 80, 10])
|
||||
inner_bracket_test(E20_inner_corner_bracket);
|
||||
|
||||
translate([-eWidth, -eWidth / 2, 0])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(E2020, 40, false);
|
||||
}
|
||||
translate([20, 120, 10])
|
||||
bracket_test(E20_corner_bracket);
|
||||
|
||||
translate([100, 60, 10]) rotate([90, 0, 180]) {
|
||||
extrusion_corner_bracket_assembly(E20_corner_bracket);
|
||||
translate([100, 70, 10])
|
||||
inner_bracket_test(E40_inner_corner_bracket);
|
||||
|
||||
translate([-eWidth / 2, 0, 0])
|
||||
rotate([-90, 0, 0])
|
||||
extrusion(E2020, 30, false);
|
||||
|
||||
translate([-eWidth, -eWidth / 2, 0])
|
||||
rotate([0, 90, 0])
|
||||
extrusion(E2020, 50, false);
|
||||
}
|
||||
translate([100, 130, 10])
|
||||
bracket_test(E40_corner_bracket);
|
||||
}
|
||||
}
|
||||
|
||||
if($preview)
|
||||
extrusion_brackets(true);
|
||||
let($show_threads = true)
|
||||
extrusion_brackets(true);
|
||||
|
@@ -21,9 +21,24 @@ use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/extrusions.scad>
|
||||
|
||||
gap = 10;
|
||||
|
||||
module extrusions()
|
||||
layout([for(e = extrusions) extrusion_width(e)], 10)
|
||||
extrusion(extrusions[$i], 80, cornerHole = extrusion_width(extrusions[$i]) > 20);
|
||||
layout([for(e = extrusions) is_list(e[0]) ? extrusion_width(e[0]) : extrusion_width(e)], gap)
|
||||
let(e = extrusions[$i])
|
||||
if(is_list(e[0])) {
|
||||
list = e;
|
||||
heights = [for(e = list) extrusion_height(e)];
|
||||
l = len(heights) - 1;
|
||||
offset = (heights * [for(i = [0 : l]) 1] + l * gap) / 2;
|
||||
translate([0, -offset])
|
||||
rotate(90)
|
||||
layout(heights, gap)
|
||||
rotate(-90)
|
||||
extrusion(list[$i], 80, cornerHole = extrusion_width(list[$i]) > 20);
|
||||
}
|
||||
else
|
||||
extrusion(e, 80, cornerHole = extrusion_width(e) > 20);
|
||||
|
||||
if ($preview)
|
||||
extrusions();
|
||||
|
@@ -22,12 +22,15 @@ use <../vitamins/jack.scad>
|
||||
|
||||
module jacks() {
|
||||
translate([0, 0])
|
||||
jack_4mm("blue",3, "royalblue");
|
||||
jack_4mm_plastic("black",3, grey(20));
|
||||
|
||||
translate([20, 0])
|
||||
jack_4mm_shielded("brown", 3, "sienna");
|
||||
jack_4mm("blue",3, "royalblue");
|
||||
|
||||
translate([40, 0])
|
||||
jack_4mm_shielded("brown", 3, "sienna");
|
||||
|
||||
translate([60, 0])
|
||||
post_4mm("red",3);
|
||||
}
|
||||
|
||||
|
57
tests/knob.scad
Normal file
@@ -0,0 +1,57 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2021
|
||||
// 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/>.
|
||||
//
|
||||
z = 1; // [0: 5]
|
||||
thickness = 3; // [0: 5]
|
||||
shaft_length = 10;
|
||||
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/knob.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/potentiometers.scad>
|
||||
|
||||
knobs = [for(i = [0 : len(potentiometers) - 1]) let(p = potentiometers[i])
|
||||
knob_for_pot(p, thickness, z, shaft_length = pot_shaft(p).z > 20 ? shaft_length : undef,
|
||||
top_d = [10, 12, 20, 16, 16 ][i],
|
||||
bot_d = [10, 15, 20, 20, 20 ][i],
|
||||
skirt = [false, [20, 2], false, [27, 1.5], [27, 1.5]][i],
|
||||
pointer = [false, false, [14, [1, 5], 2], [13.5, [1, 1], 3], [13.5, [1, 3], 3]][i]
|
||||
)];
|
||||
|
||||
|
||||
module knobs(show_pot = false)
|
||||
layout([for(p = potentiometers) pot_size(p).x], 5) let(p = potentiometers[$i])
|
||||
if($preview) {
|
||||
translate_z(z)
|
||||
knob_assembly(knobs[$i]);
|
||||
|
||||
if(show_pot)
|
||||
translate_z(-thickness)
|
||||
vflip() {
|
||||
potentiometer(p, shaft_length = shaft_length);
|
||||
|
||||
translate_z(-thickness)
|
||||
pot_nut(p);
|
||||
}
|
||||
}
|
||||
else
|
||||
knob(knobs[$i]);
|
||||
|
||||
|
||||
knobs(true);
|
@@ -16,7 +16,7 @@
|
||||
// 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>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/microview.scad>
|
||||
|
||||
microview(!$preview);
|
||||
|
@@ -52,6 +52,12 @@ module nuts() {
|
||||
|
||||
if(n == M5_nut)
|
||||
sliding_t_nut(M5_sliding_t_nut);
|
||||
|
||||
if(n == M6_nut)
|
||||
sliding_t_nut(M6_sliding_t_nut);
|
||||
|
||||
if(n == M8_nut)
|
||||
sliding_t_nut(M8_sliding_ball_t_nut);
|
||||
}
|
||||
|
||||
translate([0, 80]) {
|
||||
|
@@ -64,8 +64,9 @@ module pin_headers() {
|
||||
pin_socket(pin_headers[$i], 3, 3, right_angle = true);
|
||||
}
|
||||
|
||||
for(i = [0, 1], p = [5, 2][i], j = [0 , 1]) {
|
||||
h = [jst_ph_header, jst_xh_header][j];
|
||||
headers = [jst_zh_header, jst_ph_header, jst_xh_header];
|
||||
for(i = [0, 1], p = [5, 2][i], j = [0 : len(headers) - 1]) {
|
||||
h = headers[j];
|
||||
translate([-20 * (i + 1), 0 + j * 40])
|
||||
jst_xh_header(h, p);
|
||||
|
||||
|
BIN
tests/png/7_segments.png
Normal file
After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 89 KiB |
BIN
tests/png/knob.png
Normal file
After Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 169 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 146 KiB |
BIN
tests/png/potentiometers.png
Normal file
After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 255 KiB |
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 165 KiB |