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

Compare commits

...

184 Commits

Author SHA1 Message Date
Chris
3f209cbdd3 Merge pull request #60 from nophead/issue_57
Fix for issue #57, now searches multiple directories.
2020-03-02 18:38:36 +00:00
Chris Palmer
7b76aceaad Changed microswitch include to a use. 2020-03-02 14:15:51 +00:00
Chris Palmer
4edd08977f Added green_terminals and pin_headers to lib.scad.
Removed terminal_254() because it can't work.
2020-03-02 13:51:59 +00:00
Chris Palmer
a1d385f9ec Updated gallery images 2020-03-02 13:49:41 +00:00
Chris Palmer
fc17b52518 Added missing includes in lib.scad: extrusion_brackets and kp_pillow_blocks.
Since kp_pillow_blocks includes ball bearings, they were also missing.
2020-03-02 09:52:31 +00:00
Chris Palmer
9fbdb82991 bom.py now shows errors and warnings. 2020-03-02 09:38:37 +00:00
Chris Palmer
7706716fa2 Updated readme for threads. 2020-03-01 20:08:19 +00:00
Chris Palmer
c815c1592d SHOW_THREADS renamed NOPSCADLIB_SHOW_THREADS for #61 2020-03-01 19:10:40 +00:00
Chris Palmer
e32ef88c90 Small optimisation to views.py 2020-03-01 19:09:18 +00:00
Chris Palmer
702c450a27 Small optimisation to exports.py 2020-03-01 18:35:53 +00:00
Chris Palmer
343351155c Made library search order deterministic by sorting the result of os.listdir() 2020-03-01 17:53:20 +00:00
Chris Palmer
c41b1fa115 Fix for issue #57, now searches multiple directories. 2020-03-01 10:55:52 +00:00
Chris Palmer
1a197ac823 Fixed missing screw holes in blowers. 2020-02-29 20:34:05 +00:00
Chris Palmer
ab592e049c Screws.scad is now included in core.scad, so doesn't need to be included
anywhere else. utils/core/core.scad is the old version without fasteners to
be used internally in the library.
2020-02-29 17:52:36 +00:00
Chris Palmer
9b104e4fe7 Changed the default printed part colour, pp1_colour to RepRap logo green. 2020-02-29 10:30:15 +00:00
Chris Palmer
f0b4d767e9 Replaced "lime" with pp1_colour. 2020-02-29 10:26:25 +00:00
Chris Palmer
82baed4c8f Updated images and readme. 2020-02-29 09:00:20 +00:00
Chris Palmer
acb2cb2a48 Changed PSU list order to get all the shrouds together. 2020-02-29 08:55:40 +00:00
Chris Palmer
cf94972b18 Merge branch 'psu_vents' of https://github.com/martinbudden/NopSCADlib into martinbudden-psu_vents 2020-02-29 08:48:33 +00:00
Chris Palmer
7c0a48d0c1 Added parametric printed box 2020-02-29 01:27:17 +00:00
Martin Budden
a5a640e273 Added facility to add vents to PSU. Added vents to S_300_12. 2020-02-28 21:21:11 +00:00
Chris Palmer
95c4359421 Better test coverage of stepper earth tag position. 2020-02-28 14:27:35 +00:00
Chris Palmer
bcff26a27b Added threads to stepper motors and made the test show them. 2020-02-28 12:02:24 +00:00
Chris Palmer
07b00fabe0 Added a guard against and empty BOM in views.py. 2020-02-28 09:22:50 +00:00
Chris Palmer
8ed0f3c1af Updated readme and images. 2020-02-28 09:05:59 +00:00
Martin Budden
0e8e387d35 Improved S_300_12 PSU. 2020-02-28 03:05:45 +00:00
Chris Palmer
0c17620adb Removed echo from extrusion_bracket.scad 2020-02-28 01:59:00 +00:00
Chris Palmer
6470f1b004 Extrusions now default to centered. New parts added to the libtest picture.
Extrusion bracket examples rotated for clearer view and made optional.
Added missing description for scs_bearing_blocks.
Extrusion no longer shows centre parameter but does show no default cornerHole.
2020-02-27 17:55:03 +00:00
Chris Palmer
29ba402530 Updated image 2020-02-27 11:22:02 +00:00
Chris Palmer
aed4a699f2 Merge branch 'kp_pillow_block_fix' of https://github.com/martinbudden/NopSCADlib into martinbudden-kp_pillow_block_fix 2020-02-27 11:18:54 +00:00
Chris Palmer
10b846c0d5 Updated images 2020-02-27 11:17:07 +00:00
Martin Budden
2de479d691 Fixed incomplete webbing on side of kp_pillow_block. 2020-02-27 10:44:00 +00:00
Chris Palmer
054dab5025 Merge branch 'linear_rail_groove' of https://github.com/martinbudden/NopSCADlib into martinbudden-linear_rail_groove 2020-02-27 10:35:09 +00:00
Chris Palmer
b559319b03 Ensured all Markdown table heading markers have at least three dashes. 2020-02-27 10:15:37 +00:00
Martin Budden
a487ca0f20 Added groove to linear_rail. 2020-02-27 09:47:36 +00:00
Chris Palmer
a2ce3f1278 Updated readme 2020-02-27 09:44:54 +00:00
Chris Palmer
01eb6931d9 Merge branch 'extrusion_center' of https://github.com/martinbudden/NopSCADlib into martinbudden-extrusion_center 2020-02-27 09:41:01 +00:00
Chris Palmer
c09a74b4c9 Added center option to spring and documented the origin of rods, etc. 2020-02-27 09:39:05 +00:00
Martin Budden
aab7f3d683 Added center parameter. Added cornerhole dimensions to E20. 2020-02-27 09:03:23 +00:00
Chris Palmer
ad719dad5a Added copyright boiler plate and description.
Updated images and readme.
2020-02-26 19:43:02 +00:00
Chris Palmer
00690b61d2 Merge branch 'extrusion_corner_brackets' of https://github.com/martinbudden/NopSCADlib into martinbudden-extrusion_corner_brackets 2020-02-26 19:23:39 +00:00
Chris Palmer
1a24e0d87e Added image and updated readme. 2020-02-26 15:55:22 +00:00
Chris Palmer
171c9a6a34 Merge branch 'pcb_additions' of https://github.com/martinbudden/NopSCADlib into martinbudden-pcb_additions 2020-02-26 15:39:12 +00:00
Chris Palmer
8bb4b3881e Fixed test, image and readme updated. 2020-02-26 15:24:33 +00:00
Chris Palmer
79f8bc66e1 Merge branch 'Drachenkaetzchen-patch-1' of https://github.com/Drachenkaetzchen/NopSCADlib into Drachenkaetzchen-Drachenkaetzchen-patch-1 2020-02-26 14:58:27 +00:00
Chris Palmer
33c9d158ef REmoved fans.scad from lib.scad as already included from psus.scad. 2020-02-26 14:03:46 +00:00
Chris Palmer
d2874a0531 Moved washers.scad from screws.scad to nuts.scad.
Moved screw_insert() from inserts.scad to screw.scad.
Changed most includes of inserts.scad to use insert.scad.
Removed linear_bearings, iecs, rockers and microswitches from lib.scad as
already included by other vitamins.
2020-02-26 13:46:11 +00:00
Felicia Hummel
b6fd795a25 Updated readme to reflect the pillow block changes 2020-02-26 13:02:17 +01:00
Felicia Hummel
ad0882db40 Added 15mm and 18mm variants for the KP08 blocks 2020-02-26 12:57:53 +01:00
Chris Palmer
8afb08aaa4 Updated image 2020-02-26 10:23:05 +00:00
Martin Budden
e87dffd92c More pcb component examples. Allowed more colour setting. 2020-02-26 07:19:55 +00:00
Martin Budden
c364bf06b2 Code tidy. 2020-02-25 22:34:13 +00:00
Martin Budden
1668f9c54c Naming update. 2020-02-25 22:23:44 +00:00
Martin Budden
e0dd174010 Parameterisation of extrusion brackets. 2020-02-25 22:19:20 +00:00
Martin Budden
f104bd42e5 Added back jst_xh connector to ramps endstop. 2020-02-25 21:38:53 +00:00
Martin Budden
8342ba87e9 Update as per code review. 2020-02-25 21:07:29 +00:00
Martin Budden
0e58e92fbc Allowed parameterised green terminals on PCBs. 2020-02-25 21:01:04 +00:00
Martin Budden
1af2e18594 Added usb_Ax1 and potentiometer. 2020-02-25 20:39:37 +00:00
Martin Budden
598527edbe Added a test pcb. 2020-02-25 20:13:15 +00:00
Martin Budden
9c666f8f47 Merge branch 'pin_header_color' into pcb_additions 2020-02-25 19:07:58 +00:00
Martin Budden
bc1f135e40 Added ability to set socket color. 2020-02-25 17:06:16 +00:00
Martin Budden
ce36729e50 Allow pin header base colour to be set on PCB. 2020-02-25 17:05:48 +00:00
Martin Budden
1dca024e64 Internal and external corner brackets for 20nn extrusion. 2020-02-25 16:53:51 +00:00
Chris Palmer
c1833f0820 Updated image and readme. 2020-02-25 13:42:31 +00:00
Chris Palmer
6a7f7dcbbf Merge branch 'sk_bracket_screw_length' of https://github.com/martinbudden/NopSCADlib into martinbudden-sk_bracket_screw_length 2020-02-25 12:34:19 +00:00
Chris Palmer
5d3f1115bb Updated readme and images 2020-02-25 11:11:05 +00:00
Chris Palmer
9f9adeb6ca Merge branch 'teardrop_chamfer' of https://github.com/martinbudden/NopSCADlib into martinbudden-teardrop_chamfer 2020-02-25 09:44:38 +00:00
Chris Palmer
f9b06c855c Merge branch 'martinbudden-kp_pillow_block' 2020-02-25 09:32:55 +00:00
Chris Palmer
05bfe9b159 Updated and images. 2020-02-25 09:32:40 +00:00
Martin Budden
f961874ce3 Added kp_pillow_blocks. 2020-02-25 07:55:47 +00:00
Martin Budden
7a6210f442 Add optional chamfer to teardrops. Defaults to no chamfer. 2020-02-25 07:46:57 +00:00
Martin Budden
5bae0aaa51 Better sk_bracket screw length calculation. 2020-02-25 07:33:07 +00:00
Chris Palmer
8649d59e8a Merge branch 'martinbudden-print_search_path' 2020-02-25 00:05:12 +00:00
Chris Palmer
e9bc300b8d Fix for printed directory not present. 2020-02-24 23:58:22 +00:00
Chris Palmer
dcb1e74894 Merge branch 'print_search_path' of https://github.com/martinbudden/NopSCADlib into martinbudden-print_search_path 2020-02-24 19:02:50 +00:00
Chris Palmer
42b9479094 Merge branch 'martinbudden-tnuts_and_hammer_nuts' 2020-02-24 18:37:40 +00:00
Chris Palmer
f46f35e909 Updated readme 2020-02-24 18:37:25 +00:00
Chris Palmer
0513b151b2 Merge branch 'tnuts_and_hammer_nuts' of https://github.com/martinbudden/NopSCADlib into martinbudden-tnuts_and_hammer_nuts 2020-02-24 18:22:05 +00:00
Chris Palmer
dcf258f11a Brass colour now distinct from gold. 2020-02-24 18:15:20 +00:00
Martin Budden
4ff6c7d0a8 Unified tnuts and hammer nuts. 2020-02-24 17:40:39 +00:00
Chris Palmer
2edb6d4df2 Shorter screws when using T-nut but mignt not be a suitable standard size. 2020-02-24 12:01:40 +00:00
Chris Palmer
26e8497018 Merge branch 'martinbudden-sk_brackets_tidy' 2020-02-24 11:42:07 +00:00
Chris Palmer
bfde879ce2 Updated readme and images. 2020-02-24 11:41:39 +00:00
Chris Palmer
4641e3a642 More nut and screw types 2020-02-24 11:40:30 +00:00
Chris Palmer
42cfed8846 Set default part thickness to 2. 2020-02-24 11:38:31 +00:00
Chris Palmer
8c339a18c4 Removed washers from T-nuts and used the lack to detect them. 2020-02-24 11:23:10 +00:00
Chris Palmer
065ec0a430 Corrected nut placement 2020-02-24 11:18:34 +00:00
Chris Palmer
e7eea0520c T nut thickness no longer includes the stem to simplyfy placement and screw
length calculations.
2020-02-24 11:14:30 +00:00
Chris Palmer
5cb994b58b Retabulated nut table 2020-02-24 10:21:37 +00:00
Chris Palmer
573425055a Fixed origin of T-nuts to be consistent with others.
I.e the mating face is at Z = 0.
2020-02-24 09:11:59 +00:00
Chris Palmer
66a7a9bfe0 Used named elements of size. 2020-02-24 08:57:22 +00:00
Chris Palmer
0335545334 Merge branch 'sk_brackets_tidy' of https://github.com/martinbudden/NopSCADlib into martinbudden-sk_brackets_tidy 2020-02-24 08:38:16 +00:00
Chris Palmer
fa91acbaad Merge branch 'martinbudden-scs_bearing_blocks' 2020-02-24 00:03:42 +00:00
Chris Palmer
8bad05e721 Added to lib.scad 2020-02-24 00:00:32 +00:00
Chris Palmer
9d6727d371 Added images and readme 2020-02-23 23:57:18 +00:00
Chris Palmer
8902d83f0a Merge branch 'scs_bearing_blocks' of https://github.com/martinbudden/NopSCADlib into martinbudden-scs_bearing_blocks 2020-02-23 23:40:02 +00:00
Martin Budden
e40b10f5a0 Added comment. 2020-02-23 23:08:34 +00:00
Martin Budden
66a8d1d583 Tidy of sk_brackets as per scs_bearing_blocks code review. 2020-02-23 22:56:47 +00:00
Martin Budden
d066648a76 Renamed sheet_thickness to part_thickness. 2020-02-23 22:34:59 +00:00
Chris Palmer
b8546414c0 Fixed leadscrew when center = false. 2020-02-23 21:54:26 +00:00
Martin Budden
581c2f8a96 Used accessor functions internally. 2020-02-23 21:49:35 +00:00
Martin Budden
e9ee88dfe9 Updates as per code review. 2020-02-23 21:41:47 +00:00
Martin Budden
b07a8ad245 Added SCS bearing blocks, SCSnUU and SCSnLUU variants 2020-02-23 21:06:38 +00:00
Chris Palmer
ab17de3b0b Merge branch 'martinbudden-green_terminals' 2020-02-23 19:53:10 +00:00
Chris Palmer
0b8141844c Updated readme. 2020-02-23 19:52:18 +00:00
Chris Palmer
7d0548b033 Merge branch 'green_terminals' of https://github.com/martinbudden/NopSCADlib into martinbudden-green_terminals 2020-02-23 19:49:16 +00:00
Martin Budden
ad3e8d85af Added scad/printed to stl search path. 2020-02-23 17:54:28 +00:00
Chris Palmer
8435a350d0 Merge branch 'martinbudden-sk_brackets' 2020-02-23 17:32:54 +00:00
Chris Palmer
3e5d4b1c8e Added to lib.scad. 2020-02-23 17:12:47 +00:00
Chris Palmer
20f830a008 Added image and updated readme. 2020-02-23 16:46:27 +00:00
Chris Palmer
10bd8ff354 Merge branch 'sk_brackets' of https://github.com/martinbudden/NopSCADlib into martinbudden-sk_brackets 2020-02-23 16:22:11 +00:00
Chris Palmer
4459cca3ea Merge branch 'martinbudden-screw_length_formatting' 2020-02-23 16:16:30 +00:00
Chris Palmer
95bbebd42d Updated readme. 2020-02-23 16:16:09 +00:00
Martin Budden
cc84a5a536 Added comments and ability to set colour to green terminals. 2020-02-23 15:38:02 +00:00
Chris Palmer
28c795e9f4 Merge branch 'screw_length_formatting' of https://github.com/martinbudden/NopSCADlib into martinbudden-screw_length_formatting 2020-02-23 15:24:43 +00:00
Chris Palmer
9a0477d16b Merge branch 'martinbudden-pcb_microswitch2' 2020-02-23 15:22:43 +00:00
Chris Palmer
0583da2eb7 Added images 2020-02-23 15:22:25 +00:00
Chris
9a08fe9b5c Merge branch 'master' into pcb_microswitch2 2020-02-23 15:10:13 +00:00
Chris Palmer
8ab7993148 Merge branch 'martinbudden-rocker_color' 2020-02-23 15:03:23 +00:00
Chris Palmer
16dd8d6d17 Added images and readme. 2020-02-23 15:02:39 +00:00
Chris Palmer
08c268145e Merge branch 'rocker_color' of https://github.com/martinbudden/NopSCADlib into martinbudden-rocker_color 2020-02-23 14:52:11 +00:00
Chris Palmer
ba7e64233a Clarified path settings in usage.md. 2020-02-23 14:46:39 +00:00
Chris Palmer
7090c714ce Merge branch 'martinbudden-pcb_buzzer' 2020-02-23 14:34:04 +00:00
Martin Budden
c5038db6d9 Added support for tNuts in sk_brackets. 2020-02-23 14:32:40 +00:00
Chris Palmer
654f094304 Merge branch 'martinbudden-spool_filament' 2020-02-23 14:28:57 +00:00
Chris Palmer
1e5e5860e1 Made more realistic and added a test. 2020-02-23 14:28:39 +00:00
Martin Budden
a08216d0b8 Added SK shaft support brackets. 2020-02-23 13:57:14 +00:00
Chris Palmer
3d8a9ec8aa Merge branch 'spool_filament' of https://github.com/martinbudden/NopSCADlib into martinbudden-spool_filament 2020-02-23 10:04:23 +00:00
Chris Palmer
7ec059142f Updated readme. 2020-02-23 10:01:28 +00:00
Chris Palmer
7f0d96b824 Merge branch 'pcb_buzzer' of https://github.com/martinbudden/NopSCADlib into martinbudden-pcb_buzzer 2020-02-22 23:06:08 +00:00
Chris Palmer
9e826c1a09 Merge branch 'martinbudden-belt_colors' 2020-02-22 23:02:03 +00:00
Chris Palmer
2c1dbe04a9 Added images and readme. 2020-02-22 23:01:50 +00:00
Chris Palmer
d644d6b698 Merge branch 'belt_colors' of https://github.com/martinbudden/NopSCADlib into martinbudden-belt_colors 2020-02-22 22:47:42 +00:00
Chris Palmer
8db4cc2cb5 Merge branch 'martinbudden-pcb_jst_xh' 2020-02-22 22:40:31 +00:00
Chris Palmer
509a87939c Updated images and readme 2020-02-22 22:40:09 +00:00
Chris Palmer
40607e6cfc Merge branch 'pcb_jst_xh' of https://github.com/martinbudden/NopSCADlib into martinbudden-pcb_jst_xh 2020-02-22 22:28:16 +00:00
Chris Palmer
599fbba6c2 Reduced dependecies in pcb_mount test. 2020-02-22 22:24:45 +00:00
Chris Palmer
52729d012c Merge branch 'martinbudden-rail_carriage_coloring' 2020-02-22 22:16:50 +00:00
Chris Palmer
6097e07094 Updated images and readme. 2020-02-22 22:16:09 +00:00
Chris Palmer
9d71438a3c Merge branch 'rail_carriage_coloring' of https://github.com/martinbudden/NopSCADlib into martinbudden-rail_carriage_coloring 2020-02-22 21:59:15 +00:00
Chris Palmer
ffa1ab940b Merge branch 'martinbudden-tnuts' 2020-02-22 21:51:16 +00:00
Chris Palmer
3174013e1a Updated images and readme. 2020-02-22 21:51:05 +00:00
Chris Palmer
c4eea38a2b Added threads 2020-02-22 21:27:51 +00:00
Chris Palmer
0cd89279a5 Merge branch 'tnuts' of https://github.com/martinbudden/NopSCADlib into martinbudden-tnuts 2020-02-22 21:12:13 +00:00
Chris Palmer
92051e0b28 Merge branch 'martinbudden-gitattributes' 2020-02-22 21:05:26 +00:00
Chris Palmer
f4b22e35c7 Merge branch 'gitattributes' of https://github.com/martinbudden/NopSCADlib into martinbudden-gitattributes 2020-02-22 21:02:24 +00:00
Chris Palmer
17ecfc07f3 Merge branch 'martinbudden-screw_knob_typo' 2020-02-22 20:58:55 +00:00
Chris Palmer
9658205efd Updated readme 2020-02-22 20:58:43 +00:00
Chris Palmer
53140a4cc1 Merge branch 'screw_knob_typo' of https://github.com/martinbudden/NopSCADlib into martinbudden-screw_knob_typo 2020-02-22 20:55:17 +00:00
Chris Palmer
2798d39538 Merge branch 'martinbudden-iec_switched_fused' 2020-02-22 20:51:58 +00:00
Chris Palmer
8be0cc98ea Updated the images and readme. 2020-02-22 20:51:15 +00:00
Chris Palmer
6a5f31edd8 Merge branch 'iec_switched_fused' of https://github.com/martinbudden/NopSCADlib into martinbudden-iec_switched_fused 2020-02-22 20:01:25 +00:00
Chris Palmer
e068918e21 Added screw threads to most things that are threaded.
Added a mechanism for tests.py and views.py to have command line options.
2020-02-22 19:44:01 +00:00
Chris Palmer
1614f50b73 Merged master 2020-02-22 18:32:35 +00:00
Martin Budden
32522b28d7 Added hammer nuts. 2020-02-19 06:42:11 +00:00
Martin Budden
1936c95d06 Added IEC 320 C14 switched fused inlet module. 2020-02-18 08:24:16 +00:00
Martin Budden
16060629c0 Added sliding t nuts. Sizes M3, M4 and M5. 2020-02-18 07:48:01 +00:00
Martin Budden
b7b5c837bd Used tube for buzzer. 2020-02-17 19:40:49 +00:00
Martin Budden
a793cb6d43 Added ability to use microswitch on a pcb. 2020-02-17 06:58:09 +00:00
Martin Budden
dc4e24b63a Simplified drawing of filament. 2020-02-16 23:06:07 +00:00
Martin Budden
8f85ac73dc Added space before screw length when length < 10 to ensure correct ordering.
This means 5mm, 6mm etc comes before 10mm in BOM.
2020-02-16 21:15:44 +00:00
Martin Budden
3ab934d83e Typo in screw_knob. foe corrected to for. 2020-02-07 19:58:37 +00:00
Martin Budden
d1324a670e Added JST-XH connector for pcbs. 2020-01-30 05:45:29 +00:00
Martin Budden
f5fdec613c Allow setting of color of rocker switch. Defaults to current colors. 2020-01-29 17:46:32 +00:00
Martin Budden
c55b8b6d1c Parameterised belt colors. 2020-01-29 17:40:34 +00:00
Martin Budden
56ec8e03ad Added PCB buzzer. 2020-01-29 17:37:01 +00:00
Martin Budden
728b7adf38 Add ability to display filament on spool. 2020-01-14 11:26:21 +00:00
Martin Budden
75747687d9 Parameterised coloring of linear rail carriage. 2020-01-12 10:20:10 +00:00
Martin Budden
03c97e8b6a Changed rail carriage coloring to be green with red endpiece to match common form. 2020-01-11 14:54:00 +00:00
Chris Palmer
8ac06b53e7 Updated readme and images for linear_bearings change. 2020-01-11 08:57:33 +00:00
Martin Budden
de76eb46e7 Initial commit. Set default text file line endings to LF. 2020-01-11 08:21:38 +00:00
Chris
2c77f184a2 Merge pull request #12 from martinbudden/linear_bearings
Added LM16UU and long form (LMxLUU) of linear bearings plus external grooves.
2020-01-11 08:10:49 +00:00
Martin Budden
4d3d9dfdfe Added LM16UU and long form (LMxLUU) of linear bearings.
Added external grooves.
2020-01-10 22:11:53 +00:00
Chris Palmer
f7a972f946 Added pictures and documentation for extrusions. 2020-01-10 20:10:17 +00:00
Chris
4e81fcbd4f Merge pull request #10 from martinbudden/extrusions
Initial submission of E2020 aluminium extrusion.
2020-01-10 19:32:49 +00:00
Martin Budden
1f038decd4 Initial submission of aluminium extrusion. Supports 2020, 2040, 2060, 2080, 3030, 3060, 4040, 4080 types.
Added extrusions to main picture.
2020-01-10 19:24:24 +00:00
Chris
da958fe112 Merge pull request #11 from martinbudden/e3d_naked
E3d Resistor wire drawn even if naked=true.
2020-01-10 13:26:43 +00:00
Martin Budden
61493eaa34 Resistor wire drawn even if naked=true. 2020-01-10 12:26:56 +00:00
Chris
804c00bdcb Merge pull request #8 from martinbudden/rocker_typo
Fixed typo where 'rocker' was spelt 'rocket'.
2020-01-10 10:28:21 +00:00
Chris
11ea68681f Merge pull request #9 from martinbudden/e3d_tab_formatting
Tabs used instead of spaces in module e3d_resistor.
2020-01-10 10:27:40 +00:00
Chris Palmer
d703ae4997 Added male screw threads. 2020-01-10 10:26:12 +00:00
Martin Budden
ed97d226f8 Tabs used instead of spaces in module e3d_resistor. 2020-01-10 08:49:03 +00:00
Martin Budden
4107a2c848 Fixed typo where 'rocker' was spelt 'rocket'. 2020-01-10 08:26:20 +00:00
Chris Palmer
f7ef075434 Fixed hex pillar thread length.
Reordered screws.
Random pixel changes.
2019-12-30 12:45:51 +00:00
319 changed files with 3996 additions and 889 deletions

16
.gitattributes vendored Normal file
View File

@@ -0,0 +1,16 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto eol=lf
# Declare text files that are normalized and converted on checkout.
*.scad text
*.py text
*.md text
# Handle Windows batch and command files
*.{bat,[bB][aA][tT]} text eol=crlf
*.{cmd,[cC][mM][dD]} text eol=crlf
# Denote files that are binary and should not be modified.
*.png binary
*.jpg binary

1
.gitignore vendored
View File

@@ -7,6 +7,7 @@ tests/bom/
*.log
*.html
bounds.json
options.json
times.txt
*_diff.png
*.echo

View File

@@ -18,22 +18,10 @@
//
//
// Include this file to use the miniumum library
// Include this file to use the miniumum library plus screws, nuts and washers
//
include <global_defs.scad>
include <utils/core/core.scad>
//
// Global functions and modules
// Fasteners used by a lot of other vitamins
//
use <utils/core/global.scad>
module use_stl(name) { //! Import an STL to make a build platter
stl(name);
import(str("../stls/", name, ".stl"));
}
module use_dxf(name) { //! Import a DXF to make a build panel
dxf(name);
import(str("../dxfs/", name, ".dxf"));
}
include <vitamins/screws.scad>

BIN
docs/metric_threads.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -26,7 +26,7 @@ OpenSCAD has to be setup to find libraries by setting the ```OPENSCADPATH``` env
in the directory it points to. This can be done with ```git clone https://github.com/nophead/NopSCADlib.git``` while in that directory or, if you don't want to use GIT,
by downloading https://github.com/nophead/NopSCADlib/archive/master.zip and unzipping it to a directory called NopSCADlib.
The ```NopSCADlib/scripts``` directory needs to be added to the executable search path.
The ```NopSCADlib/scripts``` directory needs to be added to the executable search path, ```PATH``` on Windows and ```path``` on Linux and Mac.
The installation can be tested by opening ```NopSCADlib/libtest.scad``` in the OpenSCAD GUI. It should render all the objects in the library in about 1 minute.
@@ -116,8 +116,8 @@ get shared if other files in the project include ```lib.scad``` as well, or if y
One downside is that any change to the library will mean all the project files need regenerating.
A more optimised approach for large projects is to include [NopSCADlib/core.scad](../core.scad) instead.
That only has the a small set of utilities and the global settings in [global_defs.scad](../global_defs.scad). Any vitamins used need to be included explicitly.
One can copy the include or use line from [NopSCADlib/lib.scad](../lib.scad).
That only has the a small set of utilities and the global settings in [global_defs.scad](../global_defs.scad) plus screws, nuts and washers that are required by a lot of other vitamins.
Any other vitamins used need to be included explicitly. One can copy the includes or use a line from [NopSCADlib/lib.scad](../lib.scad).
### Parametric parts.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -30,7 +30,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
<a name="Parts_list"></a>
## Parts list
| <span style="writing-mode: vertical-rl; text-orientation: mixed;">Base</span> | <span style="writing-mode: vertical-rl; text-orientation: mixed;">Feet</span> | <span style="writing-mode: vertical-rl; text-orientation: mixed;">Mains&nbsp;In</span> | <span style="writing-mode: vertical-rl; text-orientation: mixed;">Main</span> | <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |
|--:|--:|--:|--:|--:|:--|
|---:|---:|---:|---:|---:|:---|
| | | | | | **Vitamins** |
| &nbsp;&nbsp;.&nbsp; | &nbsp;&nbsp;.&nbsp; | &nbsp;&nbsp;.&nbsp; | &nbsp;&nbsp;2&nbsp; | &nbsp;&nbsp;2&nbsp; | &nbsp;&nbsp; 4mm shielded jack socket blue |
| &nbsp;&nbsp;.&nbsp; | &nbsp;&nbsp;.&nbsp; | &nbsp;&nbsp;.&nbsp; | &nbsp;&nbsp;1&nbsp; | &nbsp;&nbsp;1&nbsp; | &nbsp;&nbsp; 4mm shielded jack socket brown |
@@ -61,14 +61,14 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
## Base Assembly
### Vitamins
|Qty|Description|
|--:|:----------|
|---:|:----------|
|2| Heatfit insert M3|
### 3D Printed parts
| 1 x socket_box.stl |
|--|
|---|
| ![socket_box.stl](stls/socket_box.png)
@@ -88,7 +88,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
## Feet Assembly
### Vitamins
|Qty|Description|
|--:|:----------|
|---:|:----------|
|4| Nut M3 x 2.4mm nyloc|
|4| Screw M3 dome x 10mm|
|8| Washer M3 x 7mm x 0.5mm|
@@ -97,7 +97,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
### 3D Printed parts
| 4 x foot.stl |
|--|
|---|
| ![foot.stl](stls/foot.png)
@@ -105,7 +105,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
### Sub-assemblies
| 1 x base_assembly |
|--|
|---|
| ![base_assembled](assemblies/base_assembled_tn.png)
@@ -124,7 +124,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
## Mains In Assembly
### Vitamins
|Qty|Description|
|--:|:----------|
|---:|:----------|
|3| Heatshrink sleeving ID 3.2mm x 15mm - not shown|
|1| IEC inlet for ATX|
|2| Nut M3 x 2.4mm nyloc|
@@ -138,7 +138,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
### Sub-assemblies
| 1 x feet_assembly |
|--|
|---|
| ![feet_assembled](assemblies/feet_assembled_tn.png)
@@ -163,7 +163,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
## Main Assembly
### Vitamins
|Qty|Description|
|--:|:----------|
|---:|:----------|
|2| 4mm shielded jack socket blue|
|1| 4mm shielded jack socket brown|
|2| 4mm shielded jack socket green|
@@ -178,7 +178,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
### Sub-assemblies
| 1 x mains_in_assembly |
|--|
|---|
| ![mains_in_assembled](assemblies/mains_in_assembled_tn.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 107 KiB

BIN
gallery/EnviroPlus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 198 KiB

View File

@@ -6,6 +6,13 @@ Arduino thermostat to control a beer fridge to use it as an environmental chambe
![](ArduinoThermostat.png)
<a name="TOP"></a>
## EnviroPlus
Environmental monitor using Enviro+ sensor board and a Raspberry Pi Zero.
![](EnviroPlus.png)
<a name="TOP"></a>
## FilamentDryBox
A small fan oven with a spool holder to keep the filament warm and dry.

View File

@@ -34,11 +34,12 @@ layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // lay
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; // miniumum tool radius when milling 2D objects
pp1_colour = is_undef($pp1_colour) ? "lime" : $pp1_colour; // printed part colour 1
pp1_colour = is_undef($pp1_colour) ? [0, 146/255, 0] : $pp1_colour; // printed part colour 1, RepRap logo colour
pp2_colour = is_undef($pp2_colour) ? "red" : $pp2_colour; // printed part colour 2
pp3_colour = is_undef($pp3_colour) ? "blue" : $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
// 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)
@@ -59,7 +60,9 @@ grey60 = [0.6, 0.6, 0.6];
grey70 = [0.7, 0.7, 0.7];
grey80 = [0.8, 0.8, 0.8];
grey90 = [0.9, 0.9, 0.9];
brass = "gold";
gold = [255/255, 215/255, 0/255];
brass = [255/255, 220/255, 100/255];
silver = [0.75, 0.75, 0.75];
/*
* Enums

View File

@@ -22,46 +22,45 @@
//
include <core.scad>
include <vitamins/fans.scad>
include <vitamins/psus.scad>
include <vitamins/pcbs.scad>
include <vitamins/batteries.scad>
include <vitamins/blowers.scad>
include <vitamins/bulldogs.scad>
include <vitamins/buttons.scad>
include <vitamins/components.scad>
include <vitamins/displays.scad>
include <vitamins/extrusions.scad>
include <vitamins/extrusion_brackets.scad>
include <vitamins/geared_steppers.scad>
include <vitamins/green_terminals.scad>
include <vitamins/hot_ends.scad>
include <vitamins/inserts.scad>
include <vitamins/kp_pillow_blocks.scad>
include <vitamins/ldrs.scad>
include <vitamins/leadnuts.scad>
include <vitamins/leds.scad>
include <vitamins/light_strips.scad>
include <vitamins/mains_sockets.scad>
include <vitamins/modules.scad>
include <vitamins/pillars.scad>
include <vitamins/pin_headers.scad>
include <vitamins/pulleys.scad>
include <vitamins/ring_terminals.scad>
include <vitamins/rails.scad>
include <vitamins/belts.scad>
include <vitamins/pulleys.scad>
include <vitamins/sheets.scad>
include <vitamins/stepper_motors.scad>
include <vitamins/components.scad>
include <vitamins/hot_ends.scad>
include <vitamins/tubings.scad>
include <vitamins/zipties.scad>
include <vitamins/linear_bearings.scad>
include <vitamins/rod.scad>
include <vitamins/leadnuts.scad>
include <vitamins/bulldogs.scad>
include <vitamins/pillars.scad>
include <vitamins/psus.scad>
include <vitamins/iecs.scad>
include <vitamins/rockers.scad>
include <vitamins/scs_bearing_blocks.scad>
include <vitamins/sheets.scad>
include <vitamins/sk_brackets.scad>
include <vitamins/spools.scad>
include <vitamins/ssrs.scad>
include <vitamins/d_connectors.scad>
include <vitamins/buttons.scad>
include <vitamins/pcbs.scad>
include <vitamins/modules.scad>
include <vitamins/displays.scad>
include <vitamins/blowers.scad>
include <vitamins/leds.scad>
include <vitamins/stepper_motors.scad>
include <vitamins/toggles.scad>
include <vitamins/transformers.scad>
include <vitamins/tubings.scad>
include <vitamins/variacs.scad>
include <vitamins/springs.scad>
include <vitamins/batteries.scad>
include <vitamins/microswitches.scad>
include <vitamins/ball_bearings.scad>
include <vitamins/light_strips.scad>
include <vitamins/spools.scad>
include <vitamins/mains_sockets.scad>
include <vitamins/ldrs.scad>
include <vitamins/geared_steppers.scad>
include <vitamins/zipties.scad>
use <vitamins/jack.scad>
use <vitamins/meter.scad>
@@ -90,3 +89,4 @@ use <utils/layout.scad>
use <utils/round.scad>
use <utils/offset.scad>
use <utils/sector.scad>
use <utils/thread.scad>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 740 KiB

After

Width:  |  Height:  |  Size: 781 KiB

View File

@@ -32,6 +32,8 @@ use <tests/cable_strips.scad>
use <tests/components.scad>
use <tests/d_connectors.scad>
use <tests/displays.scad>
use <tests/extrusions.scad>
use <tests/extrusion_brackets.scad>
use <tests/fans.scad>
use <tests/fuseholder.scad>
use <tests/geared_steppers.scad>
@@ -39,6 +41,7 @@ use <tests/hot_ends.scad>
use <tests/iecs.scad>
use <tests/inserts.scad>
use <tests/jack.scad>
use <tests/kp_pillow_blocks.scad>
use <tests/leadnuts.scad>
use <tests/leds.scad>
use <tests/ldrs.scad>
@@ -59,8 +62,10 @@ use <tests/ring_terminals.scad>
use <tests/rockers.scad>
use <tests/rod.scad>
use <tests/screws.scad>
use <tests/scs_bearing_blocks.scad>
use <tests/sealing_strip.scad>
use <tests/sheets.scad>
use <tests/sk_brackets.scad>
use <tests/spades.scad>
use <tests/springs.scad>
use <tests/ssrs.scad>
@@ -82,18 +87,25 @@ use <tests/door_hinge.scad>
use <tests/door_latch.scad>
use <tests/fan_guard.scad>
use <tests/fixing_block.scad>
use <tests/flat_hinge.scad>
use <tests/foot.scad>
use <tests/handle.scad>
use <tests/pcb_mount.scad>
use <tests/printed_box.scad>
use <tests/ribbon_clamp.scad>
use <tests/screw_knob.scad>
use <tests/socket_box.scad>
use <tests/strap_handle.scad>
use <tests/ssr_shroud.scad>
use <tests/psu_shroud.scad>
use <tests/flat_hinge.scad>
use <tests/pcb_mount.scad>
x5 = 800;
x0 = 0;
x1 = x0 + 100;
x2 = x1 + 90;
x3 = x2 + 130;
x4 = x3 + 200;
x5 = 850;
x6 = x5 + 150;
cable_grommets_y = 0;
@@ -132,16 +144,20 @@ translate([x5 + 60, cable_grommets_y + 200])
translate([x5, cable_grommets_y + 250])
handle();
translate([900, 600])
translate([950, 600])
box_test();
translate([850, 1170])
translate([890, 730])
printed_boxes();
translate([850, 1260])
bbox_test();
x0 = 0;
inserts_y = 0;
nuts_y = inserts_y + 20;
washers_y = nuts_y + 60;
washers_y = nuts_y + 100;
screws_y = washers_y + 120;
o_rings_y = screws_y + 130;
springs_y = o_rings_y + 20;
@@ -152,7 +168,7 @@ leadnuts_y = pillars_y + 40;
pulleys_y = leadnuts_y +40;
hot_ends_y = pulleys_y + 60;
linear_bearings_y = hot_ends_y + 50;
sheets_y = linear_bearings_y + 50;
sheets_y = linear_bearings_y + 100;
pcbs_y = sheets_y + 40;
displays_y = pcbs_y + 150;
fans_y = displays_y + 100;
@@ -231,7 +247,6 @@ translate([x0, psus_y]) {
psu_shrouds();
}
x1 = x0 + 100;
zipties_y = 0;
bulldogs_y = zipties_y + 40;
@@ -241,7 +256,6 @@ translate([x1, zipties_y])
translate([x1, bulldogs_y])
bulldogs();
x2 = x1 + 90;
leds_y = 0;
carriers_y = leds_y + 40;
spades_y = carriers_y + 40;
@@ -249,7 +263,7 @@ buttons_y = spades_y + 40;
jacks_y = buttons_y + 40;
microswitches_y = jacks_y + 40;
rockers_y = microswitches_y + 40;
toggles_y = rockers_y + 40;
toggles_y = rockers_y + 60;
components_y = toggles_y + 40;
translate([x2, leds_y])
@@ -288,8 +302,6 @@ translate([x2, toggles_y])
translate([x2, components_y])
components();
x3 = x2 + 150;
veroboard_y = 0;
d_connectors_y = veroboard_y + 110;
iecs_y = d_connectors_y + 80;
@@ -298,6 +310,7 @@ ssrs_y = modules_y + 80;
blowers_y = ssrs_y + 60;
batteries_y = blowers_y + 100;
steppers_y = batteries_y + 70;
extrusions_y = steppers_y + 100;
translate([x3, veroboard_y])
veroboard_test();
@@ -338,16 +351,22 @@ translate([x3, batteries_y])
translate([x2, steppers_y]) // interloper
stepper_motors();
translate([x2, extrusions_y]) {
extrusions();
}
translate([x3, transformers_y])
transformers();
x4 = x3 + 220;
belts_y = 0;
rails_y = belts_y + 200;
cable_strips_y = rails_y + 300;
extrusion_brackets_y = rails_y + 250;
sk_brackets_y = extrusion_brackets_y + 80;
kp_pillow_blocks_y = sk_brackets_y + 50;
scs_bearing_blocks_y = kp_pillow_blocks_y + 60;
translate([x4 + 112, belts_y + 58]) {
translate([x4 + 130, belts_y + 58]) {
belt_test();
translate([0, 60])
@@ -357,9 +376,22 @@ translate([x4 + 112, belts_y + 58]) {
translate([x4, rails_y + 130])
rails();
translate([x4, cable_strips_y])
cable_strips();
translate([780, 0])
rotate(90)
cable_strips();
translate([x4, kp_pillow_blocks_y])
kp_pillow_blocks();
translate([x4, sk_brackets_y])
sk_brackets();
translate([x4, extrusion_brackets_y])
extrusion_brackets();
translate([x4, scs_bearing_blocks_y])
scs_bearing_blocks();
x6 = x5 + 150;
translate([x6, 125])
light_strips();

View File

@@ -31,12 +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/screw.scad>
use <../vitamins/washer.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../utils/quadrant.scad>
bezel_clearance = 0.2;

View File

@@ -21,7 +21,7 @@
//! Printed cable grommets for passing cables through panels avoiding sharp edges and in the case
//! of conductive panels, an extra layer of insulation.
//
include <../core.scad>
include <../utils/core/core.scad>
use <../vitamins/cable_strip.scad>
base = 1.25;

View File

@@ -22,7 +22,7 @@
//
$extrusion_width = 0.5;
include <../core.scad>
include <../utils/core/core.scad>
module ESP12F_carrier_stl() { //! Generate the STL for an ESP12 carrier
stl("ESP12F_carrier");

View File

@@ -31,8 +31,7 @@
//! Star washers can be omitted by setting ```star_washers``` to false.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../utils/rounded_cylinder.scad>
use <../utils/maths.scad>

View File

@@ -24,7 +24,6 @@
//! Rubber door [sealing strip](#sealing_strip) is used to make it airtight and a [door_latch](#door_latch) holds it closed.
//
include <../core.scad>
include <../vitamins/screws.scad>
width = 18;
thickness = 4;
@@ -142,7 +141,7 @@ module door_hinge_assembly(top, door_thickness = 6) { //! The moving assembly th
translate([0, pin_y - (thickness + door_thickness / 2), dir * width / 2]) {
rotate([90, 0, 180])
color("red") door_hinge(door_thickness);
color(pp2_colour) door_hinge(door_thickness);
rotate([90, 0, 0])
door_hinge_hole_positions()
@@ -166,7 +165,7 @@ module door_hinge_static_assembly(top, sheet_thickness = 3) { //! The stationary
translate([pin_x, 0, -dir * (stat_width / 2 + washer_thickness(screw_washer(pin_screw)))])
rotate([90, 0, 0]) {
color("lime") door_hinge_stat_stl();
color(pp1_colour) door_hinge_stat_stl();
door_hinge_stat_hole_positions() {
screw_and_washer(stat_screw, stat_screw_length);

View File

@@ -22,7 +22,6 @@
//
include <../core.scad>
use <../utils/hanging_hole.scad>
include <../vitamins/screws.scad>
length = 35;
width = 12;
@@ -66,7 +65,7 @@ module door_latch_assembly(sheet_thickness = 3) { //! The assembly for a specifi
translate([0, -height - washer_thickness(washer)])
rotate([-90, 0, 0]) {
color("lime") render() door_latch_stl();
color(pp1_colour) render() door_latch_stl();
translate_z(nut_trap_depth)
vflip()

View File

@@ -31,8 +31,7 @@
//! Star washers can be omitted by setting ```star_washers``` to false.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../utils/maths.scad>
def_screw = M3_cap_screw;

View File

@@ -30,7 +30,6 @@
//! This allows the hinges and one set of screws to belong to one assembly and the other set of screws to another assembly.
//
include <../core.scad>
include <../vitamins/screws.scad>
function hinge_width(type) = type[1]; //! Width
function hinge_depth(type) = type[2]; //! Depth of each leaf

View File

@@ -22,8 +22,7 @@
//! inserts don't grip well in rubber.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
foot = [25, 12, 3, 2, M4_cap_screw, 10];
insert_foot = [20, 10, 0, 2, M3_cap_screw, 10];

View File

@@ -21,8 +21,7 @@
//! Printed handle that can be printed without needing support material due to its truncated teardrop profile.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
dia = 18;
length = 90; // inside length

View File

@@ -22,7 +22,6 @@
//! The stl must be given a parameterless wrapper in the project that uses it.
//
include <../core.scad>
include <../vitamins/screws.scad>
use <../vitamins/pcb.scad>
clearance = 0.2;

229
printed/printed_box.scad Normal file
View File

@@ -0,0 +1,229 @@
//
// NopSCADlib Copyright Chris Palmer 2020
// 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/>.
//
//
//! A fully parametric 3D printed case that can be customised with cutouts and additions specified by children.
//!
//! The walls can be made wavy, which possibly reduces warping when printing and looks nice, however if holes need to be made
//! in the sides you can't print a wavy bridge. Any holes need to be surrounded by a 45&deg; chamfer to make the bridges straight.
//! See the mounting points for the feet in the first example.
//!
//! It can also have printed feet on the base with the screws doubling up to hold the base on.
//
include <../core.scad>
use <../vitamins/insert.scad>
use <foot.scad>
function pbox_name(type) = type[0]; //! Name to allow more than one box in a project
function pbox_wall(type) = type[1]; //! Wall thickness
function pbox_top(type) = type[2]; //! Top thickness
function pbox_base(type) = type[3]; //! Base thickness, can be zero for no base
function pbox_foot(type) = type[4]; //! Printed foot, can be false to suppress feet
function pbox_base_screw(type) = type[5]; //! Screw type if no feet
function pbox_radius(type) = type[6]; //! Internal corner radius
function pbox_ridges(type) = type[7]; //! Ridge wavelength and amplitude
function pbox_width(type) = type[8]; //! Internal width
function pbox_depth(type) = type[9]; //! Internal depth
function pbox_height(type) = type[10]; //! Internal height
base_outset = 1; // How much the base overlaps the inner dimensions
base_overlap = 2; // The width of ledge the base sits on
height_overlap = 1; // How far the edges sit below the base
function pbox_inclusion(type) = pbox_base(type) ? base_overlap - base_outset : 0; //! How far the ledge for the base extends inwards
function pbox_total_height(type) = //! Total height including base overlap
let(base = pbox_base(type),
foot = pbox_foot(type),
washer = pbox_washer(type),
screw = pbox_screw(type))
pbox_height(type) + pbox_top(type) + base + (base ? height_overlap : 0) + (foot || !base ? 0 : washer_thickness(washer) + screw_head_height(screw));
function pbox_screw(type) = //! Foot screw if got feet else base_screw
let(foot = pbox_foot(type)) foot ? foot_screw(foot) : pbox_base_screw(type);
function pbox_insert(type) = screw_insert(pbox_screw(type)); //! The insert for the base screws
function pbox_washer(type) = screw_washer(pbox_screw(type)); //! The washer for the base screws
function pbox_screw_length(type, panel_thickness = 0) = //! Length of the base screw
let(foot = pbox_foot(type))
screw_shorter_than(pbox_base(type) + washer_thickness(pbox_washer(type))
+ insert_length(pbox_insert(type))
+ (foot ? foot_thickness(foot) : panel_thickness));
function pbox_mid_offset(type) = pbox_ridges(type).y + pbox_wall(type) / 2; // Offset to wall midpoint
function pbox_screw_inset(type) = //! How far the base screws are inset
let(foot = pbox_foot(type),
r = foot ? foot_diameter(foot) / 2 : washer_radius(pbox_washer(type)),
R = pbox_radius(type)
) max(r, R - (R - r) / sqrt(2));
module pbox_screw_positions(type) {
foot = pbox_foot(type);
inset = pbox_screw_inset(type);
for(x = [-1, 1], y = [-1, 1])
translate([x * (pbox_width(type) / 2 - inset), y * (pbox_depth(type) / 2 - inset)])
rotate((y > 0 ? -x * 45 : -x * 135) + 90)
children();
}
module pbox_mid_shape(type) {
ridges = pbox_ridges(type);
offset = ridges.y + pbox_wall(type) / 2;
rad = pbox_radius(type) + offset;
w = pbox_width(type) + 2 * offset;
d = pbox_depth(type) + 2 * offset;
module waves(length) {
l = length - 2 * rad;
waves = round(l / ridges.x);
points = 16;
translate([-l / 2, ridges.y / 2])
polygon(concat([[0, -10]], [for(i = [0 : waves * points], a = 360 * i / points) [i * l / waves / points, -cos(a) * ridges.y / 2] ], [[l, -10]]));
}
difference() {
rounded_square([w, d], rad, center = true);
if(ridges.y)
for(side = [-1, 1]) {
translate([0, side * d / 2])
rotate(90 + side * 90)
waves(w);
translate([side * w / 2, 0])
rotate(side * 90)
waves(d);
}
}
}
module pbox_inner_shape(type) {
rad = pbox_radius(type);
w = pbox_width(type);
d = pbox_depth(type);
rounded_square([w, d], rad, center = true);
}
module pbox_base(type) { //! Generate the STL for the base
stl(str(pbox_name(type),"_base"));
t = pbox_base(type);
difference() {
union() {
linear_extrude(height = t)
offset(base_outset - 0.2)
pbox_inner_shape(type);
if($children > 0)
children(0);
}
pbox_screw_positions(type)
poly_cylinder(r = screw_clearance_radius(pbox_screw(type)), h = 2 * t + eps, center = true);
if($children > 1)
children(1);
}
}
module pbox(type) { //! Generate the STL for the main case
stl(pbox_name(type));
height = pbox_height(type);
total_height = pbox_total_height(type);
top_thickness = pbox_top(type);
wall = pbox_wall(type);
ledge_outset = pbox_ridges(type).y;
ledge_inset = base_outset - base_overlap;
ledge_h = pbox_base(type) ? (ledge_outset - ledge_inset) * 2 : 0;
difference() {
union() {
linear_extrude(height = total_height)
offset(wall / 2) pbox_mid_shape(type);
if($children > 2)
children(2);
}
difference() {
translate_z(top_thickness)
union() {
linear_extrude(height = height + eps)
offset(-wall / 2) pbox_mid_shape(type);
translate_z(height) // Recess for the base
linear_extrude(height = total_height - height)
offset(base_outset)
pbox_inner_shape(type);
}
// Ledge to support the lid
if(ledge_h)
translate_z(top_thickness + height - ledge_h)
difference() {
rounded_rectangle([pbox_width(type) + 2 * outset, pbox_depth(type) + 2 * outset, ledge_h], 1, center = false);
hull() {
linear_extrude(height = ledge_h + eps)
offset(ledge_inset)
pbox_inner_shape(type);
linear_extrude(height = eps)
offset(ledge_outset)
pbox_inner_shape(type);
}
pbox_screw_positions(type)
insert_hole(pbox_insert(type));
}
// Corner lugs for inserts
outset = wall + pbox_ridges(type).y;
or = pbox_radius(type) + outset;
inset = pbox_screw_inset(type) + outset;
br = insert_boss_radius(pbox_insert(type), wall);
ext = sqrt(2) * inset - or * (sqrt(2) - 1) - br;
translate_z(height + top_thickness)
pbox_screw_positions(type)
insert_lug(pbox_insert(type), wall, counter_bore = 0, extension = ext, corner_r = or);
if($children > 0)
children(0);
}
if($children > 1)
children(1);
}
}
module pbox_inserts(type) //! Place the inserts for the base screws
translate_z(pbox_height(type) + pbox_top(type))
pbox_screw_positions(type)
insert(pbox_insert(type));
module pbox_base_screws(type, thickness = 0) //! Place the screws and feet
translate_z(pbox_height(type) + pbox_top(type) + pbox_base(type))
pbox_screw_positions(type) {
foot = pbox_foot(type);
if(foot)
color(pp4_colour)
foot(foot);
translate_z(foot ? foot_thickness(foot) : thickness)
screw_and_washer(pbox_screw(type), pbox_screw_length(type, thickness));
}

View File

@@ -22,8 +22,7 @@
//! The stl and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../vitamins/wire.scad>
use <../vitamins/psu.scad>

View File

@@ -21,8 +21,7 @@
//! Clamp for ribbon cable and polypropylene strip.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../vitamins/cable_strip.scad>
wall = 2;

View File

@@ -21,7 +21,6 @@
//! Knob with embedded hex head screw.
//
include <../core.scad>
include <../vitamins/screws.scad>
use <../utils/hanging_hole.scad>
knob_wall = 2;
@@ -34,7 +33,7 @@ knob_waves = 5;
knob_height = knob_stem_h + knob_thickness;
function knob_height() = knob_height;
module screw_knob(screw) { //! Generate the STL foe a knob to fit the specified hex screw
module screw_knob(screw) { //! Generate the STL for a knob to fit the specified hex screw
stl(str("screw_knob_M", screw_radius(screw) * 20));
knob_stem_r = nut_trap_radius(screw_nut(screw)) + knob_wall;

View File

@@ -22,9 +22,8 @@
//
include <../core.scad>
include <../vitamins/mains_sockets.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
include <../vitamins/ring_terminals.scad>
use <../vitamins/insert.scad>
box_height = 19;
base_thickness = 2;
@@ -93,7 +92,7 @@ assembly(str("socket_box_", type[0])) {
screw = mains_socket_screw(type);
insert = screw_insert(screw);
color("lime") render() socket_box(type);
color(pp1_colour) render() socket_box(type);
mains_socket_hole_positions(type)
translate_z(height)

View File

@@ -19,11 +19,10 @@
//
//! A cover to go over the mains end of an SSR to make it safe to be touched.
//! The stl and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
//! The STL and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../vitamins/wire.scad>
use <../vitamins/ssr.scad>

View File

@@ -22,8 +22,7 @@
//! be fully customised by passing a list of properties.
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
strap = [18, 2, M3_pan_screw, 3, 25];
function strap() = strap;

718
readme.md

File diff suppressed because it is too large Load Diff

View File

@@ -184,6 +184,9 @@ def parse_bom(file = "openscad.log", name = None):
main.add_part(s)
if stack:
main.assemblies[stack[-1]].add_part(s)
else:
if 'ERROR:' in line or 'WARNING:' in line:
print(line[:-1])
return main
def boms(target = None, assembly = None):

View File

@@ -40,7 +40,7 @@ These are located in the ```scripts``` subdirectory, which needs to be added to
They should work with both Python 2 and Python 3.
| Script | Function |
|:--|:--|''', file = doc_file)
|:---|:---|''', file = doc_file)
for file in os.listdir('scripts'):
if file.endswith('.py'):
blurb = ''

View File

@@ -83,50 +83,50 @@ def make_parts(target, part_type, parts = None):
#
# Find all the scad files
#
lib_dir = os.environ['OPENSCADPATH'] + '/NopSCADlib/printed'
lib_dirs = [path + '/' + lib + '/printed' for path in os.environ['OPENSCADPATH'].split(os.pathsep) for lib in sorted(os.listdir(path))]
module_suffix = '_dxf' if part_type == 'svg' else '_' + part_type
for dir in [source_dir, lib_dir]:
for filename in os.listdir(dir):
if filename[-5:] == ".scad":
#
# find any modules ending in _<part_type>
#
with open(dir + "/" + filename, "r") as f:
for line in f.readlines():
words = line.split()
if(len(words) and words[0] == "module"):
module = words[1].split('(')[0]
if module.endswith(module_suffix):
base_name = module[:-4]
part = base_name + '.' + part_type
if part in targets:
#
# make a file to use the module
#
part_maker_name = part_type + ".scad"
with open(part_maker_name, "w") as f:
f.write("use <%s/%s>\n" % (dir, filename))
f.write("%s();\n" % module);
#
# Run openscad on the created file
#
part_file = target_dir + "/" + part
dname = deps_name(deps_dir, filename)
changed = check_deps(part_file, dname)
changed = times.check_have_time(changed, part)
if part_type == 'stl' and not changed and not part in bounds_map:
changed = "No bounds"
if changed:
print(changed)
t = time.time()
openscad.run("-D$bom=1", "-d", dname, "-o", part_file, part_maker_name)
times.add_time(part, t)
if part_type == 'stl':
bounds = c14n_stl.canonicalise(part_file)
bounds_map[part] = bounds
targets.remove(part)
os.remove(part_maker_name)
for dir in [source_dir, source_dir + '/printed'] + lib_dirs:
if os.path.isdir(dir):
for filename in os.listdir(dir):
if filename[-5:] == ".scad":
#
# find any modules ending in _<part_type>
#
with open(dir + "/" + filename, "r") as f:
for line in f.readlines():
words = line.split()
if(len(words) and words[0] == "module"):
module = words[1].split('(')[0]
if module.endswith(module_suffix):
base_name = module[:-4]
part = base_name + '.' + part_type
if part in targets:
#
# Run openscad on the created file
#
part_file = target_dir + "/" + part
dname = deps_name(deps_dir, filename)
changed = check_deps(part_file, dname)
changed = times.check_have_time(changed, part)
if part_type == 'stl' and not changed and not part in bounds_map:
changed = "No bounds"
if changed:
print(changed)
#
# make a file to use the module
#
part_maker_name = part_type + ".scad"
with open(part_maker_name, "w") as f:
f.write("use <%s/%s>\n" % (dir, filename))
f.write("%s();\n" % module);
t = time.time()
openscad.run("-D$bom=1", "-d", dname, "-o", part_file, part_maker_name)
times.add_time(part, t)
if part_type == 'stl':
bounds = c14n_stl.canonicalise(part_file)
bounds_map[part] = bounds
os.remove(part_maker_name)
targets.remove(part)
#
# Write new bounds file
#

View File

@@ -24,7 +24,7 @@ from __future__ import print_function
import subprocess, sys
def _run(args, silent):
def run_list(args, silent = False):
cmd = ["openscad"] + args
if not silent:
for arg in cmd:
@@ -39,7 +39,7 @@ def _run(args, silent):
sys.exit(rc)
def run(*args):
_run(list(args), False)
run_list(list(args), False)
def run_silent(*args):
_run(list(args), True);
run_list(list(args), True);

49
scripts/options.py Normal file
View File

@@ -0,0 +1,49 @@
#
# NopSCADlib Copyright Chris Palmer 2020
# 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/>.
#
# Set command line options from enviroment variables and check if they have changed
import json, os, deps
def check_options(dir = '.'):
global options, options_mtime
options = { "show_threads": str(os.getenv("NOPSCADLIB_SHOW_THREADS")) }
options_fname = dir + '/options.json'
try:
with open(options_fname) as json_file:
last_options = json.load(json_file)
except:
last_options = {}
if last_options != options:
with open(options_fname, 'w') as outfile:
json.dump(options, outfile, indent = 4)
options_mtime = deps.mtime(options_fname)
def have_changed(changed, target):
if not changed and deps.mtime(target) < options_mtime:
return "command line options changed"
return changed
def list():
result = []
for name in options.keys():
value = options[name]
if value != 'None':
result.append('-D$' + name + '=' + value)
return result

View File

@@ -5,7 +5,7 @@ These are located in the ```scripts``` subdirectory, which needs to be added to
They should work with both Python 2 and Python 3.
| Script | Function |
|:--|:--|
|:---|:---|
| ```bom.py``` | Generates BOM files for the project. |
| ```c14n_stl.py``` | OpenSCAD produces randomly ordered STL files. This script re-orders them consistently so that GIT can tell if they have changed or not. |
| ```doc_scripts.py``` | Makes this document and doc/usage.md. |

View File

@@ -59,7 +59,7 @@ def render(target, type):
if mtime(part_file) > mtime(png_name):
png_maker_name = "png.scad"
with open(png_maker_name, "w") as f:
f.write('color("lime") import("%s");\n' % part_file)
f.write('color([0, 146/255, 0]) import("%s");\n' % part_file)
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' else "--render"
tmp_name = 'tmp.png'

View File

@@ -27,6 +27,7 @@ import openscad
import subprocess
import bom
import times
import options
import time
import json
import shutil
@@ -96,6 +97,7 @@ def tests(tests):
index = {}
bodies = {}
times.read_times()
options.check_options(deps_dir)
#
# Make cover pic if does not exist as very slow. Delete it to force an update.
#
@@ -190,11 +192,12 @@ def tests(tests):
oldest = png_name if mtime(png_name) < mtime(bom_name) else bom_name
changed = check_deps(oldest, dname)
changed = times.check_have_time(changed, scad_name)
changed = options.have_changed(changed, oldest)
if changed:
print(changed)
t = time.time()
tmp_name = 'tmp.png'
openscad.run("-D", "$bom=2", colour_scheme, "--projection=p", "--imgsize=%d,%d" % (w, h), "--camera=0,0,0,70,0,315,500", "--autocenter", "--viewall", "-d", dname, "-o", tmp_name, scad_name);
openscad.run_list(options.list() + ["-D$bom=2", colour_scheme, "--projection=p", "--imgsize=%d,%d" % (w, h), "--camera=0,0,0,70,0,315,500", "--autocenter", "--viewall", "-d", dname, "-o", tmp_name, scad_name]);
times.add_time(scad_name, t)
do_cmd(["magick", tmp_name, "-trim", "-resize", "1000x600", "-bordercolor", background, "-border", "10", tmp_name])
update_image(tmp_name, png_name)

View File

@@ -28,6 +28,7 @@ import openscad
from tests import do_cmd, update_image, colour_scheme, background
import time
import times
import options
from deps import *
import os
import json
@@ -70,9 +71,10 @@ def bom_to_assemblies(bom_dir, bounds_map):
#
# Remove the main assembly if it is a shell
#
ass = flat_bom[-1]
if len(ass["assemblies"]) < 2 and not ass["vitamins"] and not ass["printed"] and not ass["routed"]:
flat_bom = flat_bom[:-1]
if flat_bom:
ass = flat_bom[-1]
if len(ass["assemblies"]) < 2 and not ass["vitamins"] and not ass["printed"] and not ass["routed"]:
flat_bom = flat_bom[:-1]
return [assembly["name"] for assembly in flat_bom]
def eop(print_mode, doc_file, last = False, first = False):
@@ -102,6 +104,7 @@ def views(target, do_assemblies = None):
os.makedirs(deps_dir)
times.read_times(target_dir)
options.check_options(deps_dir)
bounds_fname = top_dir + 'stls/bounds.json'
with open(bounds_fname) as json_file:
bounds_map = json.load(json_file)
@@ -121,66 +124,68 @@ def views(target, do_assemblies = None):
# Find all the scad files
#
main_blurb = None
lib_dir = os.environ['OPENSCADPATH'] + '/NopSCADlib/printed'
for dir in [source_dir, lib_dir]:
for filename in os.listdir(dir):
if filename.endswith('.scad'):
#
# find any modules with names ending in _assembly
#
with open(dir + "/" + filename, "r") as f:
lines = f.readlines()
line_no = 0
for line in lines:
words = line.split()
if len(words) and words[0] == "module":
module = words[1].split('(')[0]
if is_assembly(module):
if module in assemblies:
#
# Scrape the assembly instructions
#
for ass in flat_bom:
if ass["name"] == module:
if not "blurb" in ass:
ass["blurb"] = blurb.scrape_module_blurb(lines[:line_no])
break
if not do_assemblies or module in do_assemblies:
lib_dirs = [path + '/' + lib + '/printed' for path in os.environ['OPENSCADPATH'].split(os.pathsep) for lib in sorted(os.listdir(path))]
for dir in [source_dir, source_dir + '/printed'] + lib_dirs:
if os.path.isdir(dir):
for filename in os.listdir(dir):
if filename.endswith('.scad'):
#
# find any modules with names ending in _assembly
#
with open(dir + "/" + filename, "r") as f:
lines = f.readlines()
line_no = 0
for line in lines:
words = line.split()
if len(words) and words[0] == "module":
module = words[1].split('(')[0]
if is_assembly(module):
if module in assemblies:
#
# make a file to use the module
# Scrape the assembly instructions
#
png_maker_name = 'png.scad'
with open(png_maker_name, "w") as f:
f.write("use <%s/%s>\n" % (dir, filename))
f.write("%s();\n" % module);
#
# Run openscad on th created file
#
dname = deps_name(deps_dir, filename)
for explode in [0, 1]:
png_name = target_dir + '/' + module + '.png'
if not explode:
png_name = png_name.replace('_assembly', '_assembled')
changed = check_deps(png_name, dname)
changed = times.check_have_time(changed, png_name)
tmp_name = 'tmp.png'
if changed:
print(changed)
t = time.time()
openscad.run("-D$pose=1", "-D$explode=%d" % explode, colour_scheme, "--projection=p", "--imgsize=4096,4096", "--autocenter", "--viewall", "-d", dname, "-o", tmp_name, png_maker_name);
times.add_time(png_name, t)
do_cmd(["magick", tmp_name, "-trim", "-resize", "1004x1004", "-bordercolor", background, "-border", "10", tmp_name])
update_image(tmp_name, png_name)
tn_name = png_name.replace('.png', '_tn.png')
if mtime(png_name) > mtime(tn_name):
do_cmd(("magick "+ png_name + " -trim -resize 280x280 -background " + background + " -gravity Center -extent 280x280 -bordercolor " + background + " -border 10 " + tmp_name).split())
update_image(tmp_name, tn_name)
os.remove(png_maker_name)
done_assemblies.append(module)
else:
if module == 'main_assembly':
main_blurb = blurb.scrape_module_blurb(lines[:line_no])
line_no += 1
for ass in flat_bom:
if ass["name"] == module:
if not "blurb" in ass:
ass["blurb"] = blurb.scrape_module_blurb(lines[:line_no])
break
if not do_assemblies or module in do_assemblies:
#
# Run openscad on the created file
#
dname = deps_name(deps_dir, filename)
for explode in [0, 1]:
png_name = target_dir + '/' + module + '.png'
if not explode:
png_name = png_name.replace('_assembly', '_assembled')
changed = check_deps(png_name, dname)
changed = times.check_have_time(changed, png_name)
changed = options.have_changed(changed, png_name)
tmp_name = 'tmp.png'
if changed:
print(changed)
#
# make a file to use the module
#
png_maker_name = 'png.scad'
with open(png_maker_name, "w") as f:
f.write("use <%s/%s>\n" % (dir, filename))
f.write("%s();\n" % module);
t = time.time()
openscad.run_list(options.list() + ["-D$pose=1", "-D$explode=%d" % explode, colour_scheme, "--projection=p", "--imgsize=4096,4096", "--autocenter", "--viewall", "-d", dname, "-o", tmp_name, png_maker_name]);
times.add_time(png_name, t)
do_cmd(["magick", tmp_name, "-trim", "-resize", "1004x1004", "-bordercolor", background, "-border", "10", tmp_name])
update_image(tmp_name, png_name)
os.remove(png_maker_name)
tn_name = png_name.replace('.png', '_tn.png')
if mtime(png_name) > mtime(tn_name):
do_cmd(("magick "+ png_name + " -trim -resize 280x280 -background " + background + " -gravity Center -extent 280x280 -bordercolor " + background + " -border 10 " + tmp_name).split())
update_image(tmp_name, tn_name)
done_assemblies.append(module)
else:
if module == 'main_assembly':
main_blurb = blurb.scrape_module_blurb(lines[:line_no])
line_no += 1
times.print_times()
#
# Build the document
@@ -236,7 +241,7 @@ def views(target, do_assemblies = None):
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">%s</span> ' % name, file = doc_file, end = '')
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |', file = doc_file)
print(('|--:' * len(flat_bom) + '|--:|:--|'), file = doc_file)
print(('|---:' * len(flat_bom) + '|---:|:---|'), file = doc_file)
for t in types:
if things[t]:
@@ -279,7 +284,7 @@ def views(target, do_assemblies = None):
if vitamins:
print("### Vitamins", file = doc_file)
print("|Qty|Description|", file = doc_file)
print("|--:|:----------|", file = doc_file)
print("|---:|:----------|", file = doc_file)
for v in sorted(vitamins, key = lambda s: s.split(":")[-1]):
print("|%d|%s|" % (vitamins[v], v.split(":")[1]), file = doc_file)
print("\n", file = doc_file)
@@ -293,7 +298,7 @@ def views(target, do_assemblies = None):
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', printed[p], p), file = doc_file, end = '')
if (i % 3) == 2 or i == len(printed) - 1:
n = (i % 3) + 1
print('\n|%s' % ('--|' * n), file = doc_file)
print('\n|%s' % ('---|' * n), file = doc_file)
for j in range(n):
part = keys[i - n + j + 1]
print('| ![%s](stls/%s) %s' % (part, part.replace('.stl','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
@@ -309,7 +314,7 @@ def views(target, do_assemblies = None):
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', routed[r], r), file = doc_file, end = '')
if (i % 3) == 2 or i == len(routed) - 1:
n = (i % 3) + 1
print('\n|%s' % ('--|' * n), file = doc_file)
print('\n|%s' % ('---|' * n), file = doc_file)
for j in range(n):
part = keys[i - n + j + 1]
print('| ![%s](dxfs/%s) %s' % (part, part.replace('.dxf','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
@@ -325,7 +330,7 @@ def views(target, do_assemblies = None):
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', sub_assemblies[a], a), file = doc_file, end = '')
if (i % 3) == 2 or i == len(keys) - 1:
n = (i % 3) + 1
print('\n|%s' % ('--|' * n), file = doc_file)
print('\n|%s' % ('---|' * n), file = doc_file)
for j in range(n):
a = keys[i - n + j + 1].replace('_assembly', '_assembled')
print('| ![%s](assemblies/%s) %s' % (a, a + '_tn.png', '|\n' if j == j - 1 else ''), end = '', file = doc_file)

View File

@@ -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/annotation.scad>
module annotations() {

View File

@@ -16,10 +16,9 @@
// 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/springs.scad>
include <../vitamins/batteries.scad>
module batteries()

View File

@@ -18,10 +18,8 @@
//
include <../core.scad>
include <../vitamins/belts.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
include <../vitamins/pulleys.scad>
use <../vitamins/insert.scad>
use <../utils/layout.scad>
module belt_test() {
@@ -67,7 +65,7 @@ module belt_test() {
translate([-25, 0])
layout([for(b = belts) belt_width(b)], 10)
rotate([0, 90, 0])
belt(belts[$i], [[0, 0, 20], [0, 1, 20]]);
belt(belts[$i], [[0, 0, 20], [0, 1, 20]], belt_colour = $i%2==0 ? grey90 : grey20, tooth_colour = $i%2==0 ? grey70 : grey50);
}
if($preview)

View File

@@ -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/bezier.scad>
use <../utils/sweep.scad>
use <../utils/annotation.scad>

View File

@@ -19,7 +19,6 @@
include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
include <../vitamins/blowers.scad>
module blowers()

View File

@@ -21,9 +21,8 @@
//! BOM and assembly demonstration
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/inserts.scad>
include <../vitamins/sheets.scad>
use <../vitamins/insert.scad>
$explode = 1; // Normally set on the command line when generating assembly views with views.py
screw = M3_cap_screw;

View File

@@ -18,9 +18,8 @@
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/sheets.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
use <../printed/box.scad>

View File

@@ -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/bulldogs.scad>

View File

@@ -18,9 +18,8 @@
//
include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/sheets.scad>
include <../vitamins/inserts.scad>
use <../vitamins/insert.scad>
include <../printed/butt_box.scad>

View File

@@ -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/buttons.scad>

View File

@@ -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 <../printed/cable_grommets.scad>

View File

@@ -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/cable_strip.scad>

View File

@@ -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 <../printed/carriers.scad>
module carriers()

View File

@@ -17,7 +17,7 @@
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
include <../utils/core/core.scad>
module clips() {
clip(xmin = 0, ymin = 0, zmin = 0, zmax = 40) sphere(50);

View File

@@ -19,7 +19,6 @@
include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
include <../vitamins/components.scad>
module resistors()

View File

@@ -19,8 +19,6 @@
include <../core.scad>
use <../printed/corner_block.scad>
include <../vitamins/screws.scad>
screws = [M2_cap_screw, M2p5_pan_screw, M3_dome_screw, M4_dome_screw];
module do_corner_block(screw)

View File

@@ -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/d_connectors.scad>
@@ -35,4 +35,5 @@ module d_connectors()
}
if($preview)
d_connectors();
let($show_threads = true)
d_connectors();

View File

@@ -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 <../printed/door_hinge.scad>
include <../vitamins/sheets.scad>

View File

@@ -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 <../printed/door_latch.scad>
module door_latches()

View File

@@ -0,0 +1,65 @@
//
// NopSCADlib Copyright Chris Palmer 2020
// 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>
include <../vitamins/extrusion_brackets.scad>
include <../vitamins/extrusions.scad>
include <../vitamins/washers.scad>
include <../vitamins/nuts.scad>
module extrusion_brackets(examples = false) {
extrusion_inner_corner_bracket(E20_inner_corner_bracket);
translate([30, 0])
extrusion_inner_corner_bracket(E20_inner_corner_bracket, grub_screws = false);
translate([60, 0])
extrusion_corner_bracket_assembly(E20_corner_bracket);
eWidth = extrusion_width(E2020);
if(examples) {
translate([20, 60, 10]) rotate([90, 0, 180]) {
extrusion_inner_corner_bracket(E20_inner_corner_bracket);
translate([-eWidth / 2, 0, 0])
rotate([-90, 0, 0])
extrusion(E2020, 20, false);
translate([-eWidth, -eWidth / 2, 0])
rotate([0, 90, 0])
extrusion(E2020, 40, false);
}
translate([100, 60, 10]) rotate([90, 0, 180]) {
extrusion_corner_bracket_assembly(E20_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);
}
}
}
if($preview)
extrusion_brackets(true);

29
tests/extrusions.scad Normal file
View File

@@ -0,0 +1,29 @@
//
// NopSCADlib Copyright Chris Palmer 2020
// 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/extrusions.scad>
module extrusions()
layout([for(e = extrusions) extrusion_width(e)], 10)
extrusion(extrusions[$i], 80);
if ($preview)
extrusions();

View File

@@ -17,11 +17,11 @@
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
use <../utils/layout.scad>
include <../printed/fan_guard.scad>
include <../vitamins/fans.scad>
use <../utils/layout.scad>
module fan_guards()
layout([for(f = fans) fan_width(f)], 10)
color(pp1_colour) fan_guard(fans[$i], spokes = fan_width(fans[$i]) > 60 ? 8 : 4);

View File

@@ -17,11 +17,11 @@
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/fans.scad>
include <../printed/fan_guard.scad>
include <../vitamins/fans.scad>
use <../utils/layout.scad>
module fans()
layout([for(f = fans) fan_width(f)], 10)

View File

@@ -20,8 +20,6 @@ include <../core.scad>
use <../printed/fixing_block.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
screws = [M2_cap_screw, M2p5_pan_screw, M3_dome_screw, M4_dome_screw];
module fixing_block_test(screw)

View File

@@ -17,7 +17,6 @@
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
include <../vitamins/screws.scad>
use <../utils/layout.scad>
use <../printed/flat_hinge.scad>

View File

@@ -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 <../printed/foot.scad>
module feet()

View File

@@ -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/fuseholder.scad>

View File

@@ -17,7 +17,7 @@
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
include <../utils/core/core.scad>
module globals() {
linear_extrude(height = eps) {

View File

@@ -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 <../printed/handle.scad>
module handle()

View File

@@ -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/hot_ends.scad>

View File

@@ -17,10 +17,10 @@
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/iecs.scad>
use <../utils/layout.scad>
module iecs()
layout([for(i = iecs) iec_flange_h(i)], 10)
rotate(90)

View File

@@ -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/inserts.scad>
@@ -37,4 +37,5 @@ module inserts() {
}
if($preview)
inserts();
let($show_threads = true)
inserts();

View File

@@ -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/jack.scad>

View File

@@ -0,0 +1,33 @@
//
// NopSCADlib Copyright Chris Palmer 2018
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// This file is part of NopSCADlib.
//
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
// GNU General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
include <../vitamins/kp_pillow_blocks.scad>
use <../utils/layout.scad>
module kp_pillow_blocks() {
screws = [M4_cap_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw];
nuts = [M4_sliding_t_nut, M4_hammer_nut, M5_sliding_t_nut, M5_nut];
assert(len(screws) == len(kp_pillow_blocks) && len(nuts) == len(kp_pillow_blocks));
layout([for(k = kp_pillow_blocks) 2 * kp_size(k)[1]])
kp_pillow_block_assembly(kp_pillow_blocks[$i], screw_type = screws[$i], nut_type = nuts[$i]);
}
if($preview)
kp_pillow_blocks();

Some files were not shown because too many files have changed in this diff Show More