1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-09 22:51:16 +02:00

Compare commits

..

28 Commits

Author SHA1 Message Date
Chris Palmer
c16a1c3804 Moved cable strips nearer the back of the libtest picture. 2020-03-05 20:55:57 +00:00
Chris Palmer
245b158f1d Added threads to fuseholder. 2020-03-05 10:15:42 +00:00
Chris Palmer
60628dfec0 Added threads to 4mm jack sockets. 2020-03-04 17:42:03 +00:00
Chris Palmer
f7db793c74 Assembly module search in views.py now case insensitive
allowing the module name string to specify the capitalisaing used in the
build instructions.
2020-03-04 12:15:48 +00:00
Chris Palmer
53292c9f89 Filenames of tests can now be capitalised to get the correct titles.
The implementation files are still lower case for backwards compatibility.
2020-03-03 20:33:53 +00:00
Chris Palmer
bd60b50b09 Removed lower case tests 2020-03-03 20:28:18 +00:00
Chris Palmer
4d51cb73f3 Table of contents now has three vitamin coloumns 2020-03-03 09:32:08 +00:00
Chris Palmer
3b77c97532 Example now include core.scad instead of lib.scad. 2020-03-02 21:04:19 +00:00
Chris Palmer
4442042197 Include of wire.scad changed to use. 2020-03-02 21:03:41 +00:00
Chris Palmer
4e233e5e9d Updated readme and images 2020-03-02 19:45:28 +00:00
Martin Budden
675953d334 Allow no center hole in extrusion. 2020-03-02 19:06:53 +00:00
Martin Budden
9527fa1c1f Added E1515 extrusion. 2020-03-02 18:51:27 +00:00
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
255 changed files with 520 additions and 503 deletions

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> include <vitamins/screws.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"));
}

View File

@@ -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. 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. 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. 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.
One can copy the include or use line from [NopSCADlib/lib.scad](../lib.scad). 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. ### Parametric parts.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -35,7 +35,14 @@ $extrusion_width = 0.5;
$pp1_colour = "dimgrey"; $pp1_colour = "dimgrey";
$pp2_colour = [0.9, 0.9, 0.9]; $pp2_colour = [0.9, 0.9, 0.9];
include <NopSCADlib/lib.scad> include <NopSCADlib/core.scad>
include <NopSCADlib/vitamins/iecs.scad>
include <NopSCADlib/vitamins/mains_sockets.scad>
include <NopSCADlib/vitamins/tubings.scad>
use <NopSCADlib/vitamins/insert.scad>
use <NopSCADlib/vitamins/wire.scad>
use <NopSCADlib/vitamins/jack.scad>
use <NopSCADlib/printed/foot.scad> use <NopSCADlib/printed/foot.scad>
echo(extrusion_width = extrusion_width, layer_height = layer_height); echo(extrusion_width = extrusion_width, layer_height = layer_height);

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) ![](ArduinoThermostat.png)
<a name="TOP"></a>
## EnviroPlus
Environmental monitor using Enviro+ sensor board and a Raspberry Pi Zero.
![](EnviroPlus.png)
<a name="TOP"></a> <a name="TOP"></a>
## FilamentDryBox ## FilamentDryBox
A small fan oven with a spool holder to keep the filament warm and dry. A small fan oven with a spool holder to keep the filament warm and dry.

View File

@@ -34,7 +34,7 @@ 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 extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle 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 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 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 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 pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4

View File

@@ -23,43 +23,44 @@
include <core.scad> include <core.scad>
include <vitamins/psus.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/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/ring_terminals.scad>
include <vitamins/rails.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/scs_bearing_blocks.scad>
include <vitamins/rod.scad> include <vitamins/rod.scad>
include <vitamins/leadnuts.scad> include <vitamins/scs_bearing_blocks.scad>
include <vitamins/bulldogs.scad> include <vitamins/sheets.scad>
include <vitamins/pillars.scad> include <vitamins/sk_brackets.scad>
include <vitamins/spools.scad>
include <vitamins/ssrs.scad> include <vitamins/ssrs.scad>
include <vitamins/d_connectors.scad> include <vitamins/stepper_motors.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/toggles.scad> include <vitamins/toggles.scad>
include <vitamins/transformers.scad> include <vitamins/transformers.scad>
include <vitamins/tubings.scad>
include <vitamins/variacs.scad> include <vitamins/variacs.scad>
include <vitamins/springs.scad> include <vitamins/zipties.scad>
include <vitamins/batteries.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/extrusions.scad>
include <vitamins/sk_brackets.scad>
use <vitamins/jack.scad> use <vitamins/jack.scad>
use <vitamins/meter.scad> use <vitamins/meter.scad>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 784 KiB

After

Width:  |  Height:  |  Size: 784 KiB

View File

@@ -38,13 +38,13 @@ use <tests/fans.scad>
use <tests/fuseholder.scad> use <tests/fuseholder.scad>
use <tests/geared_steppers.scad> use <tests/geared_steppers.scad>
use <tests/hot_ends.scad> use <tests/hot_ends.scad>
use <tests/iecs.scad> use <tests/IECs.scad>
use <tests/inserts.scad> use <tests/inserts.scad>
use <tests/jack.scad> use <tests/jack.scad>
use <tests/kp_pillow_blocks.scad> use <tests/KP_pillow_blocks.scad>
use <tests/leadnuts.scad> use <tests/leadnuts.scad>
use <tests/leds.scad> use <tests/LDRs.scad>
use <tests/ldrs.scad> use <tests/LEDs.scad>
use <tests/light_strips.scad> use <tests/light_strips.scad>
use <tests/linear_bearings.scad> use <tests/linear_bearings.scad>
use <tests/meter.scad> use <tests/meter.scad>
@@ -53,22 +53,22 @@ use <tests/modules.scad>
use <tests/nuts.scad> use <tests/nuts.scad>
use <tests/o_ring.scad> use <tests/o_ring.scad>
use <tests/opengrab.scad> use <tests/opengrab.scad>
use <tests/pcbs.scad> use <tests/PCBs.scad>
use <tests/pillars.scad> use <tests/pillars.scad>
use <tests/psus.scad> use <tests/PSUs.scad>
use <tests/pulleys.scad> use <tests/pulleys.scad>
use <tests/rails.scad> use <tests/rails.scad>
use <tests/ring_terminals.scad> use <tests/ring_terminals.scad>
use <tests/rockers.scad> use <tests/rockers.scad>
use <tests/rod.scad> use <tests/rod.scad>
use <tests/screws.scad> use <tests/screws.scad>
use <tests/scs_bearing_blocks.scad> use <tests/SCS_bearing_blocks.scad>
use <tests/sealing_strip.scad> use <tests/sealing_strip.scad>
use <tests/sheets.scad> use <tests/sheets.scad>
use <tests/sk_brackets.scad> use <tests/SK_brackets.scad>
use <tests/spades.scad> use <tests/spades.scad>
use <tests/springs.scad> use <tests/springs.scad>
use <tests/ssrs.scad> use <tests/SSRs.scad>
use <tests/stepper_motors.scad> use <tests/stepper_motors.scad>
use <tests/toggles.scad> use <tests/toggles.scad>
use <tests/transformers.scad> use <tests/transformers.scad>
@@ -90,14 +90,14 @@ use <tests/fixing_block.scad>
use <tests/flat_hinge.scad> use <tests/flat_hinge.scad>
use <tests/foot.scad> use <tests/foot.scad>
use <tests/handle.scad> use <tests/handle.scad>
use <tests/pcb_mount.scad> use <tests/PCB_mount.scad>
use <tests/printed_box.scad> use <tests/printed_box.scad>
use <tests/ribbon_clamp.scad> use <tests/ribbon_clamp.scad>
use <tests/screw_knob.scad> use <tests/screw_knob.scad>
use <tests/socket_box.scad> use <tests/socket_box.scad>
use <tests/strap_handle.scad> use <tests/strap_handle.scad>
use <tests/ssr_shroud.scad> use <tests/SSR_shroud.scad>
use <tests/psu_shroud.scad> use <tests/PSU_shroud.scad>
x0 = 0; x0 = 0;
x1 = x0 + 100; x1 = x0 + 100;
@@ -366,7 +366,7 @@ sk_brackets_y = extrusion_brackets_y + 80;
kp_pillow_blocks_y = sk_brackets_y + 50; kp_pillow_blocks_y = sk_brackets_y + 50;
scs_bearing_blocks_y = kp_pillow_blocks_y + 60; scs_bearing_blocks_y = kp_pillow_blocks_y + 60;
translate([x4 + 130, belts_y + 58]) { translate([x4 + 150, belts_y + 58]) {
belt_test(); belt_test();
translate([0, 60]) translate([0, 60])
@@ -376,9 +376,8 @@ translate([x4 + 130, belts_y + 58]) {
translate([x4, rails_y + 130]) translate([x4, rails_y + 130])
rails(); rails();
translate([780, 0]) translate([900, fans_y + 50])
rotate(90) cable_strips();
cable_strips();
translate([x4, kp_pillow_blocks_y]) translate([x4, kp_pillow_blocks_y])
kp_pillow_blocks(); kp_pillow_blocks();

View File

@@ -31,7 +31,7 @@
//! //!
//! Normally the side sheets are the same type but they can be overridden individually as long as the substitute has the same thickness. //! 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/sheet.scad>
use <../vitamins/screw.scad> use <../vitamins/screw.scad>
use <../vitamins/washer.scad> use <../vitamins/washer.scad>

View File

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

View File

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

View File

@@ -31,7 +31,6 @@
//! Star washers can be omitted by setting ```star_washers``` to false. //! Star washers can be omitted by setting ```star_washers``` to false.
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>
use <../utils/rounded_cylinder.scad> use <../utils/rounded_cylinder.scad>
use <../utils/maths.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. //! 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 <../core.scad>
include <../vitamins/screws.scad>
width = 18; width = 18;
thickness = 4; 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]) { translate([0, pin_y - (thickness + door_thickness / 2), dir * width / 2]) {
rotate([90, 0, 180]) rotate([90, 0, 180])
color("red") door_hinge(door_thickness); color(pp2_colour) door_hinge(door_thickness);
rotate([90, 0, 0]) rotate([90, 0, 0])
door_hinge_hole_positions() 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)))]) translate([pin_x, 0, -dir * (stat_width / 2 + washer_thickness(screw_washer(pin_screw)))])
rotate([90, 0, 0]) { rotate([90, 0, 0]) {
color("lime") door_hinge_stat_stl(); color(pp1_colour) door_hinge_stat_stl();
door_hinge_stat_hole_positions() { door_hinge_stat_hole_positions() {
screw_and_washer(stat_screw, stat_screw_length); screw_and_washer(stat_screw, stat_screw_length);

View File

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

View File

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

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. //! 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 <../core.scad>
include <../vitamins/screws.scad>
function hinge_width(type) = type[1]; //! Width function hinge_width(type) = type[1]; //! Width
function hinge_depth(type) = type[2]; //! Depth of each leaf function hinge_depth(type) = type[2]; //! Depth of each leaf

View File

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

View File

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

View File

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

View File

@@ -27,7 +27,6 @@
//! It can also have printed feet on the base with the screws doubling up to hold the base on. //! It can also have printed feet on the base with the screws doubling up to hold the base on.
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>
use <foot.scad> use <foot.scad>

View File

@@ -22,7 +22,6 @@
//! 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 <../core.scad>
include <../vitamins/screws.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>
use <../vitamins/wire.scad> use <../vitamins/wire.scad>
@@ -144,7 +143,7 @@ module psu_shroud(type, cable_d, name, cables = 1) { //! Generate the STL file f
} }
module psu_shroud_assembly(type, cable_d, name, cables = 1) //! The printed parts with inserts fitted module psu_shroud_assembly(type, cable_d, name, cables = 1) //! The printed parts with inserts fitted
assembly(str("psu_shroud_", name)) { assembly(str("PSU_shroud_", name)) {
translate_z(psu_shroud_height(type)) translate_z(psu_shroud_height(type))
vflip() vflip()

View File

@@ -21,7 +21,6 @@
//! Clamp for ribbon cable and polypropylene strip. //! Clamp for ribbon cable and polypropylene strip.
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>
use <../vitamins/cable_strip.scad> use <../vitamins/cable_strip.scad>

View File

@@ -21,7 +21,6 @@
//! Knob with embedded hex head screw. //! Knob with embedded hex head screw.
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
use <../utils/hanging_hole.scad> use <../utils/hanging_hole.scad>
knob_wall = 2; knob_wall = 2;

View File

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

View File

@@ -19,10 +19,9 @@
// //
//! A cover to go over the mains end of an SSR to make it safe to be touched. //! 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 <../core.scad>
include <../vitamins/screws.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>
use <../vitamins/wire.scad> use <../vitamins/wire.scad>
@@ -108,7 +107,7 @@ module ssr_shroud(type, cable_d, name) { //! Generate the STL file for a spec
} }
module ssr_shroud_assembly(type, cable_d, name) //! The printed parts with inserts fitted module ssr_shroud_assembly(type, cable_d, name) //! The printed parts with inserts fitted
assembly(str("ssr_shroud_", name)) { assembly(str("SSR_shroud_", name)) {
translate_z(ssr_shroud_height(type)) translate_z(ssr_shroud_height(type))
vflip() vflip()

View File

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

164
readme.md
View File

@@ -17,39 +17,29 @@ See [usage](docs/usage.md) for requirements, installation instructions and a usa
## Table of Contents<a name="top"/> ## Table of Contents<a name="top"/>
<table><tr> <table><tr>
<th align="left"> Vitamins A-M </th><th align="left"> Vitamins N-Z </th><th align="left"> Printed </th><th align="left"> Utilities </th><th align="left"> Core Utilities </th></tr> <th align="left"> Vitamins A-J </th><th align="left"> Vitamins K-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 = "#Ball_bearings">Ball_bearings</a> </td><td> <a href = "#Nuts">Nuts</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 = "#Ball_bearings">Ball_bearings</a> </td><td> <a href = "#KP_pillow_blocks">KP_pillow_blocks</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 = "#Batteries">Batteries</a> </td><td> <a href = "#O_ring">O_ring</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 = "#Batteries">Batteries</a> </td><td> <a href = "#LDRs">LDRs</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 = "#Belts">Belts</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Cable_grommets">Cable_grommets</a> </td><td> <a href = "#Dogbones">Dogbones</a> </td><td> <a href = "#Global">Global</a> </td></tr> <tr><td> <a href = "#Belts">Belts</a> </td><td> <a href = "#LEDs">LEDs</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Cable_grommets">Cable_grommets</a> </td><td> <a href = "#Dogbones">Dogbones</a> </td><td> <a href = "#Global">Global</a> </td></tr>
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Pcb">Pcb</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Polyholes">Polyholes</a> </td></tr> <tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Polyholes">Polyholes</a> </td></tr>
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Pcbs">Pcbs</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td> <a href = "#Rounded_rectangle">Rounded_rectangle</a> </td></tr> <tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#SCS_bearing_blocks">SCS_bearing_blocks</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td> <a href = "#Rounded_rectangle">Rounded_rectangle</a> </td></tr>
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Layout">Layout</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr> <tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#SK_brackets">SK_brackets</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Layout">Layout</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr>
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Maths">Maths</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr> <tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Maths">Maths</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Psus">Psus</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr> <tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Meter">Meter</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr> <tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Rails">Rails</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr> <tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#Ring_terminals">Ring_terminals</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr> <tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr> <tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Pcb_mount">Pcb_mount</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr> <tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Screws">Screws</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 = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Scs_bearing_blocks">Scs_bearing_blocks</a> </td><td> <a href = "#Psu_shroud">Psu_shroud</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr> <tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Toggles">Toggles</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 = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</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 = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Transformers">Transformers</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 = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Sheets">Sheets</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 = "#PSUs">PSUs</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Sk_brackets">Sk_brackets</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 = "#Pillars">Pillars</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#Iecs">Iecs</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Ssr_shroud">Ssr_shroud</a> </td><td></td><td></td></tr> <tr><td> <a href = "#IECs">IECs</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr> <tr><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Springs">Springs</a> </td><td></td><td></td><td></td></tr> <tr><td> <a href = "#Jack">Jack</a> </td><td></td><td> <a href = "#Wire">Wire</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Kp_pillow_blocks">Kp_pillow_blocks</a> </td><td> <a href = "#Ssrs">Ssrs</a> </td><td></td><td></td><td></td></tr> <tr><td></td><td></td><td> <a href = "#Zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Ldrs">Ldrs</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Leds">Leds</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Meter">Meter</a> </td><td> <a href = "#Washers">Washers</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Wire">Wire</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Modules">Modules</a> </td><td></td><td></td><td></td><td></td></tr>
</table> </table>
--- ---
@@ -676,14 +666,15 @@ Aluminium extrusion.
### Vitamins ### Vitamins
| Qty | Module call | BOM entry | | Qty | Module call | BOM entry |
| ---:|:--- |:---| | ---:|:--- |:---|
| 1 | ```extrusion(E1515, 80)``` | Extrusion E1515 x 80mm |
| 1 | ```extrusion(E2020, 80)``` | Extrusion E2020 x 80mm | | 1 | ```extrusion(E2020, 80)``` | Extrusion E2020 x 80mm |
| 1 | ```extrusion(E2040, 80)``` | Extrusion E2040 x 80mm | | 1 | ```extrusion(E2040, 80)``` | Extrusion E2040 x 80mm |
| 1 | ```extrusion(E2060, 80)``` | Extrusion E2060 x 80mm | | 1 | ```extrusion(E2060, 80)``` | Extrusion E2060 x 80mm |
| 1 | ```extrusion(E2080, 80)``` | Extrusion E2080 x 80mm | | 1 | ```extrusion(E2080, 80)``` | Extrusion E2080 x 80mm |
| 1 | ```extrusion(E3030, 80)``` | Extrusion E3030 x 80mm | | 1 | ```extrusion(E3030, 80, cornerHole = true)``` | Extrusion E3030 x 80mm |
| 1 | ```extrusion(E3060, 80)``` | Extrusion E3060 x 80mm | | 1 | ```extrusion(E3060, 80, cornerHole = true)``` | Extrusion E3060 x 80mm |
| 1 | ```extrusion(E4040, 80)``` | Extrusion E4040 x 80mm | | 1 | ```extrusion(E4040, 80, cornerHole = true)``` | Extrusion E4040 x 80mm |
| 1 | ```extrusion(E4080, 80)``` | Extrusion E4080 x 80mm | | 1 | ```extrusion(E4080, 80, cornerHole = true)``` | Extrusion E4080 x 80mm |
<a href="#top">Top</a> <a href="#top">Top</a>
@@ -876,7 +867,6 @@ Parametric green terminal blocks
| Module | Description | | Module | Description |
|:--- |:--- | |:--- |:--- |
| ```green_terminal(type, ways, skip = [], colour = "lime")``` | Draw green terminal blocks, skip can be used to remove pins. | | ```green_terminal(type, ways, skip = [], colour = "lime")``` | Draw green terminal blocks, skip can be used to remove pins. |
| ```terminal_254(ways, skip = [])``` | Draw 0.1" terminal block |
![green_terminals](tests/png/green_terminals.png) ![green_terminals](tests/png/green_terminals.png)
@@ -986,8 +976,8 @@ Mini LCD Celsius Digital Thermometer Hygrometer Temperature Humidity Meter Gauge
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Iecs"></a> <a name="IECs"></a>
## Iecs ## IECs
IEC mains inlets and outlet. IEC mains inlets and outlet.
@@ -995,7 +985,7 @@ IEC mains inlets and outlet.
[vitamins/iec.scad](vitamins/iec.scad) Implementation. [vitamins/iec.scad](vitamins/iec.scad) Implementation.
[tests/iecs.scad](tests/iecs.scad) Code for this example. [tests/IECs.scad](tests/IECs.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -1142,8 +1132,8 @@ E.g. a "brown" socket for mains live needs to be displayed as "sienna" to look r
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Kp_pillow_blocks"></a> <a name="KP_pillow_blocks"></a>
## Kp_pillow_blocks ## KP_pillow_blocks
KP pillow block bearings KP pillow block bearings
@@ -1151,7 +1141,7 @@ KP pillow block bearings
[vitamins/kp_pillow_block.scad](vitamins/kp_pillow_block.scad) Implementation. [vitamins/kp_pillow_block.scad](vitamins/kp_pillow_block.scad) Implementation.
[tests/kp_pillow_blocks.scad](tests/kp_pillow_blocks.scad) Code for this example. [tests/KP_pillow_blocks.scad](tests/KP_pillow_blocks.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -1195,8 +1185,8 @@ KP pillow block bearings
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Ldrs"></a> <a name="LDRs"></a>
## Ldrs ## LDRs
Light dependent resistors. Light dependent resistors.
Larger ones seem to have both a higher dark resistance and a lower bright light resistance. Larger ones seem to have both a higher dark resistance and a lower bright light resistance.
@@ -1206,7 +1196,7 @@ Larger ones seem to have both a higher dark resistance and a lower bright light
[vitamins/ldr.scad](vitamins/ldr.scad) Implementation. [vitamins/ldr.scad](vitamins/ldr.scad) Implementation.
[tests/ldrs.scad](tests/ldrs.scad) Code for this example. [tests/LDRs.scad](tests/LDRs.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -1286,8 +1276,8 @@ Nuts for leadscrews.
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Leds"></a> <a name="LEDs"></a>
## Leds ## LEDs
Standard domed through hole LEDs. Can specify colour and lead length. Standard domed through hole LEDs. Can specify colour and lead length.
@@ -1295,7 +1285,7 @@ Standard domed through hole LEDs. Can specify colour and lead length.
[vitamins/led.scad](vitamins/led.scad) Implementation. [vitamins/led.scad](vitamins/led.scad) Implementation.
[tests/leds.scad](tests/leds.scad) Code for this example. [tests/LEDs.scad](tests/LEDs.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -1817,14 +1807,14 @@ A permanent magnet that can be magnatized and de-magnatized electronically.
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Pcb"></a> <a name="PCB"></a>
## Pcb ## PCB
PCBs and perfboard with optional components. The shape can be a rectangle with optionally rounded corners or a polygon for odd shapes like Arduino. PCBs and perfboard with optional components. The shape can be a rectangle with optionally rounded corners or a polygon for odd shapes like Arduino.
[vitamins/pcb.scad](vitamins/pcb.scad) Implementation. [vitamins/pcb.scad](vitamins/pcb.scad) Implementation.
[tests/pcb.scad](tests/pcb.scad) Code for this example. [tests/PCB.scad](tests/PCB.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -1899,8 +1889,8 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Pcbs"></a> <a name="PCBs"></a>
## Pcbs ## PCBs
PCBs and perfboard with optional components. The shape can be a rectangle with optionally rounded corners or a polygon for odd shapes like Arduino. PCBs and perfboard with optional components. The shape can be a rectangle with optionally rounded corners or a polygon for odd shapes like Arduino.
@@ -1908,7 +1898,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
[vitamins/pcb.scad](vitamins/pcb.scad) Implementation. [vitamins/pcb.scad](vitamins/pcb.scad) Implementation.
[tests/pcbs.scad](tests/pcbs.scad) Code for this example. [tests/PCBs.scad](tests/PCBs.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -2146,8 +2136,8 @@ Pin headers and sockets, etc.
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Psus"></a> <a name="PSUs"></a>
## Psus ## PSUs
Powersupplies. Can be a simple cube or can be defined by a list of six faces, each with thickness, holes, cutouts, etc. Powersupplies. Can be a simple cube or can be defined by a list of six faces, each with thickness, holes, cutouts, etc.
Face order is bottom, top, left, right, front, back. Face order is bottom, top, left, right, front, back.
@@ -2157,7 +2147,7 @@ Face order is bottom, top, left, right, front, back.
[vitamins/psu.scad](vitamins/psu.scad) Implementation. [vitamins/psu.scad](vitamins/psu.scad) Implementation.
[tests/psus.scad](tests/psus.scad) Code for this example. [tests/PSUs.scad](tests/PSUs.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -2600,8 +2590,8 @@ Machine screws and wood screws with various head styles.
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Scs_bearing_blocks"></a> <a name="SCS_bearing_blocks"></a>
## Scs_bearing_blocks ## SCS_bearing_blocks
SCSnUU and SCSnLUU bearing blocks SCSnUU and SCSnLUU bearing blocks
@@ -2609,7 +2599,7 @@ SCSnUU and SCSnLUU bearing blocks
[vitamins/scs_bearing_block.scad](vitamins/scs_bearing_block.scad) Implementation. [vitamins/scs_bearing_block.scad](vitamins/scs_bearing_block.scad) Implementation.
[tests/scs_bearing_blocks.scad](tests/scs_bearing_blocks.scad) Code for this example. [tests/SCS_bearing_blocks.scad](tests/SCS_bearing_blocks.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -2750,8 +2740,8 @@ Note that modules that drill holes will return a 2D object if ```h``` is set to
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Sk_brackets"></a> <a name="SK_brackets"></a>
## Sk_brackets ## SK_brackets
SK shaft support brackets SK shaft support brackets
@@ -2759,7 +2749,7 @@ SK shaft support brackets
[vitamins/sk_bracket.scad](vitamins/sk_bracket.scad) Implementation. [vitamins/sk_bracket.scad](vitamins/sk_bracket.scad) Implementation.
[tests/sk_brackets.scad](tests/sk_brackets.scad) Code for this example. [tests/SK_brackets.scad](tests/SK_brackets.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -2933,8 +2923,8 @@ By default springs have their origin at the bottom but can be centered.
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Ssrs"></a> <a name="SSRs"></a>
## Ssrs ## SSRs
Solid state relays. Solid state relays.
@@ -2942,7 +2932,7 @@ Solid state relays.
[vitamins/ssr.scad](vitamins/ssr.scad) Implementation. [vitamins/ssr.scad](vitamins/ssr.scad) Implementation.
[tests/ssrs.scad](tests/ssrs.scad) Code for this example. [tests/SSRs.scad](tests/SSRs.scad) Code for this example.
### Properties ### Properties
| Function | Description | | Function | Description |
@@ -4251,15 +4241,15 @@ Printed handle that can be printed without needing support material due to its t
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Pcb_mount"></a> <a name="PCB_mount"></a>
## Pcb_mount ## PCB_mount
A frame to mount a PCB by its corners when it has no mounting holes. A frame to mount a PCB by its corners when it has no mounting holes.
The stl must be given a parameterless wrapper in the project that uses it. The stl must be given a parameterless wrapper in the project that uses it.
[printed/pcb_mount.scad](printed/pcb_mount.scad) Implementation. [printed/pcb_mount.scad](printed/pcb_mount.scad) Implementation.
[tests/pcb_mount.scad](tests/pcb_mount.scad) Code for this example. [tests/PCB_mount.scad](tests/PCB_mount.scad) Code for this example.
### Functions ### Functions
| Function | Description | | Function | Description |
@@ -4380,15 +4370,15 @@ It can also have printed feet on the base with the screws doubling up to hold th
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Psu_shroud"></a> <a name="PSU_shroud"></a>
## Psu_shroud ## PSU_shroud
A cover to go over the mains end of a PSU terminal strip to make it safe. A cover to go over the mains end of a PSU terminal strip to make it safe.
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.
[printed/psu_shroud.scad](printed/psu_shroud.scad) Implementation. [printed/psu_shroud.scad](printed/psu_shroud.scad) Implementation.
[tests/psu_shroud.scad](tests/psu_shroud.scad) Code for this example. [tests/PSU_shroud.scad](tests/PSU_shroud.scad) Code for this example.
### Functions ### Functions
| Function | Description | | Function | Description |
@@ -4432,9 +4422,9 @@ The stl and assembly must be given a name and parameterless wrappers for the stl
### Assemblies ### Assemblies
| Qty | Name | | Qty | Name |
| ---:|:--- | | ---:|:--- |
| 1 | psu_shroud_PD_150_12_assembly | | 1 | PSU_shroud_PD_150_12_assembly |
| 1 | psu_shroud_S_250_48_assembly | | 1 | PSU_shroud_S_250_48_assembly |
| 1 | psu_shroud_S_300_12_assembly | | 1 | PSU_shroud_S_300_12_assembly |
<a href="#top">Top</a> <a href="#top">Top</a>
@@ -4582,15 +4572,15 @@ UK 13A socket and printed backbox with earth terminal for the panel it is mounte
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Ssr_shroud"></a> <a name="SSR_shroud"></a>
## Ssr_shroud ## SSR_shroud
A cover to go over the mains end of an SSR to make it safe to be touched. 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.
[printed/ssr_shroud.scad](printed/ssr_shroud.scad) Implementation. [printed/ssr_shroud.scad](printed/ssr_shroud.scad) Implementation.
[tests/ssr_shroud.scad](tests/ssr_shroud.scad) Code for this example. [tests/SSR_shroud.scad](tests/SSR_shroud.scad) Code for this example.
### Functions ### Functions
| Function | Description | | Function | Description |
@@ -4630,8 +4620,8 @@ The stl and assembly must be given a name and parameterless wrappers for the stl
### Assemblies ### Assemblies
| Qty | Name | | Qty | Name |
| ---:|:--- | | ---:|:--- |
| 1 | ssr_shroud_SSR10DA_assembly | | 1 | SSR_shroud_SSR10DA_assembly |
| 1 | ssr_shroud_SSR25DA_assembly | | 1 | SSR_shroud_SSR25DA_assembly |
<a href="#top">Top</a> <a href="#top">Top</a>
@@ -5055,7 +5045,7 @@ a cylinder. To get around this a colour can be passed to thread that is used to
Making the ends requires a CGAL intersection, which make threads relatively slow. For this reason they are generally disabled when using the GUI but can Making the ends requires a CGAL intersection, which make threads relatively slow. For this reason they are generally disabled when using the GUI but can
be enabled by setting ```$show_threads``` to ```true```. When the tests are run, by default, threads are enabled only for things that feature them like screws. be enabled by setting ```$show_threads``` to ```true```. When the tests are run, by default, threads are enabled only for things that feature them like screws.
This behaviour can be changed by setting a ```SHOW_THREADS``` environment variable to ```false``` to disable all threads and ```true``` to enable all threads. This behaviour can be changed by setting a ```NOPSCADLIB_SHOW_THREADS``` environment variable to ```false``` to disable all threads and ```true``` to enable all threads.
The same variable also affects the generation of assembly diagrams. The same variable also affects the generation of assembly diagrams.
Threads obey the $fn, $fa, $fs variables. Threads obey the $fn, $fa, $fs variables.
@@ -5105,8 +5095,8 @@ Simple tube or ring
<a href="#top">Top</a> <a href="#top">Top</a>
--- ---
<a name="Bom"></a> <a name="BOM"></a>
## Bom ## BOM
Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing. Assembly instructions can precede the module Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing. Assembly instructions can precede the module
definition that makes the assembly. definition that makes the assembly.
@@ -5116,7 +5106,7 @@ heirachical BOMs are also generated for real projects.
[utils/core/bom.scad](utils/core/bom.scad) Implementation. [utils/core/bom.scad](utils/core/bom.scad) Implementation.
[tests/bom.scad](tests/bom.scad) Code for this example. [tests/BOM.scad](tests/BOM.scad) Code for this example.
### Functions ### Functions
| Function | Description | | Function | Description |

View File

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

View File

@@ -83,9 +83,9 @@ def make_parts(target, part_type, parts = None):
# #
# Find all the scad files # 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 module_suffix = '_dxf' if part_type == 'svg' else '_' + part_type
for dir in [source_dir, source_dir + '/printed', lib_dir]: for dir in [source_dir, source_dir + '/printed'] + lib_dirs:
if os.path.isdir(dir): if os.path.isdir(dir):
for filename in os.listdir(dir): for filename in os.listdir(dir):
if filename[-5:] == ".scad": if filename[-5:] == ".scad":
@@ -102,13 +102,6 @@ def make_parts(target, part_type, parts = None):
part = base_name + '.' + part_type part = base_name + '.' + part_type
if part in targets: 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 # Run openscad on the created file
# #
part_file = target_dir + "/" + part part_file = target_dir + "/" + part
@@ -119,15 +112,21 @@ def make_parts(target, part_type, parts = None):
changed = "No bounds" changed = "No bounds"
if changed: if changed:
print(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() t = time.time()
openscad.run("-D$bom=1", "-d", dname, "-o", part_file, part_maker_name) openscad.run("-D$bom=1", "-d", dname, "-o", part_file, part_maker_name)
times.add_time(part, t) times.add_time(part, t)
if part_type == 'stl': if part_type == 'stl':
bounds = c14n_stl.canonicalise(part_file) bounds = c14n_stl.canonicalise(part_file)
bounds_map[part] = bounds bounds_map[part] = bounds
os.remove(part_maker_name)
targets.remove(part) targets.remove(part)
os.remove(part_maker_name)
# #
# Write new bounds file # Write new bounds file
# #

View File

@@ -23,7 +23,7 @@ import json, os, deps
def check_options(dir = '.'): def check_options(dir = '.'):
global options, options_mtime global options, options_mtime
options = { "show_threads": str(os.getenv("SHOW_THREADS")) } options = { "show_threads": str(os.getenv("NOPSCADLIB_SHOW_THREADS")) }
options_fname = dir + '/options.json' options_fname = dir + '/options.json'
try: try:
with open(options_fname) as json_file: with open(options_fname) as json_file:

View File

@@ -59,7 +59,7 @@ def render(target, type):
if mtime(part_file) > mtime(png_name): if mtime(part_file) > mtime(png_name):
png_maker_name = "png.scad" png_maker_name = "png.scad"
with open(png_maker_name, "w") as f: 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" 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" render = "--preview" if type == 'stl' else "--render"
tmp_name = 'tmp.png' tmp_name = 'tmp.png'

View File

@@ -109,13 +109,14 @@ def tests(tests):
# #
# List of individual part files # List of individual part files
# #
scads = [i for i in sorted(os.listdir(scad_dir)) if i[-5:] == ".scad"] scads = [i for i in sorted(os.listdir(scad_dir), key = lambda s: s.lower()) if i[-5:] == ".scad"]
for scad in scads: for scad in scads:
base_name = scad[:-5] base_name = scad[:-5]
if not tests or base_name in tests: if not tests or base_name in tests:
print(base_name) print(base_name)
cap_name = base_name[0].capitalize() + base_name[1:] cap_name = base_name[0].capitalize() + base_name[1:]
base_name = base_name.lower()
scad_name = scad_dir + '/' + scad scad_name = scad_dir + '/' + scad
png_name = png_dir + '/' + base_name + '.png' png_name = png_dir + '/' + base_name + '.png'
bom_name = bom_dir + '/' + base_name + '.json' bom_name = bom_dir + '/' + base_name + '.json'
@@ -140,11 +141,14 @@ def tests(tests):
print("Can't find implementation!") print("Can't find implementation!")
continue continue
vsplit = "M" vsplit = "AKR" + chr(ord('Z') + 1)
vtype = locations[0][1] vtype = locations[0][1]
types = [vtype + ' A-' + vsplit[0], vtype + ' ' + chr(ord(vsplit) + 1) + '-Z'] + [loc[1] for loc in locations[1 :]] types = [vtype + ' ' + vsplit[i] + '-' + chr(ord(vsplit[i + 1]) - 1) for i in range(len(vsplit) - 1)] + [loc[1] for loc in locations[1 :]]
if type == vtype: if type == vtype:
type = types[0] if cap_name[0] <= vsplit else types[1] for i in range(1, len(vsplit)):
if cap_name[0] < vsplit[i]:
type = types[i - 1]
break
for t in types: for t in types:
if not t in bodies: if not t in bodies:
@@ -188,10 +192,10 @@ def tests(tests):
body += ["![%s](%s)\n" %(base_name, png_name)] body += ["![%s](%s)\n" %(base_name, png_name)]
dname = deps_name(deps_dir, scad) dname = deps_name(deps_dir, scad.lower())
oldest = png_name if mtime(png_name) < mtime(bom_name) else bom_name oldest = png_name if mtime(png_name) < mtime(bom_name) else bom_name
changed = check_deps(oldest, dname) changed = check_deps(oldest, dname)
changed = times.check_have_time(changed, scad_name) changed = times.check_have_time(changed, scad_name.lower())
changed = options.have_changed(changed, oldest) changed = options.have_changed(changed, oldest)
if changed: if changed:
print(changed) print(changed)

View File

@@ -89,6 +89,14 @@ def eop(print_mode, doc_file, last = False, first = False):
def pad(s, before, after = 0): def pad(s, before, after = 0):
return '&nbsp;' * before + str(s) + '&nbsp;' * after return '&nbsp;' * before + str(s) + '&nbsp;' * after
def titalise(name):
cap_next = True
result = ''
for c in name.replace('_', ' '):
result = result + (c.upper() if cap_next else c);
cap_next = c == ' '
return result
def views(target, do_assemblies = None): def views(target, do_assemblies = None):
done_assemblies = [] done_assemblies = []
# #
@@ -109,9 +117,10 @@ def views(target, do_assemblies = None):
with open(bounds_fname) as json_file: with open(bounds_fname) as json_file:
bounds_map = json.load(json_file) bounds_map = json.load(json_file)
# #
# Find all the assemblies # Find all the assemblies and remove any old views
# #
assemblies = bom_to_assemblies(bom_dir, bounds_map) assemblies = bom_to_assemblies(bom_dir, bounds_map)
lc_assemblies = [ass.lower() for ass in assemblies]
for file in os.listdir(target_dir): for file in os.listdir(target_dir):
if file.endswith('.png'): if file.endswith('.png'):
assembly = file[:-4].replace('_assembled', '_assembly') assembly = file[:-4].replace('_assembled', '_assembly')
@@ -124,8 +133,8 @@ def views(target, do_assemblies = None):
# Find all the scad files # Find all the scad files
# #
main_blurb = None main_blurb = None
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))]
for dir in [source_dir, source_dir + '/printed', lib_dir]: for dir in [source_dir, source_dir + '/printed'] + lib_dirs:
if os.path.isdir(dir): if os.path.isdir(dir):
for filename in os.listdir(dir): for filename in os.listdir(dir):
if filename.endswith('.scad'): if filename.endswith('.scad'):
@@ -140,29 +149,24 @@ def views(target, do_assemblies = None):
if len(words) and words[0] == "module": if len(words) and words[0] == "module":
module = words[1].split('(')[0] module = words[1].split('(')[0]
if is_assembly(module): if is_assembly(module):
if module in assemblies: lc_module = module.lower()
if lc_module in lc_assemblies:
real_name = assemblies[lc_assemblies.index(lc_module)]
# #
# Scrape the assembly instructions # Scrape the assembly instructions
# #
for ass in flat_bom: for ass in flat_bom:
if ass["name"] == module: if ass["name"] == real_name:
if not "blurb" in ass: if not "blurb" in ass:
ass["blurb"] = blurb.scrape_module_blurb(lines[:line_no]) ass["blurb"] = blurb.scrape_module_blurb(lines[:line_no])
break break
if not do_assemblies or module in do_assemblies: if not do_assemblies or real_name in do_assemblies:
#
# 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);
# #
# Run openscad on the created file # Run openscad on the created file
# #
dname = deps_name(deps_dir, filename) dname = deps_name(deps_dir, filename)
for explode in [0, 1]: for explode in [0, 1]:
png_name = target_dir + '/' + module + '.png' png_name = target_dir + '/' + real_name + '.png'
if not explode: if not explode:
png_name = png_name.replace('_assembly', '_assembled') png_name = png_name.replace('_assembly', '_assembled')
changed = check_deps(png_name, dname) changed = check_deps(png_name, dname)
@@ -171,17 +175,24 @@ def views(target, do_assemblies = None):
tmp_name = 'tmp.png' tmp_name = 'tmp.png'
if changed: if changed:
print(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() 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]); 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) times.add_time(png_name, t)
do_cmd(["magick", tmp_name, "-trim", "-resize", "1004x1004", "-bordercolor", background, "-border", "10", tmp_name]) do_cmd(["magick", tmp_name, "-trim", "-resize", "1004x1004", "-bordercolor", background, "-border", "10", tmp_name])
update_image(tmp_name, png_name) update_image(tmp_name, png_name)
os.remove(png_maker_name)
tn_name = png_name.replace('.png', '_tn.png') tn_name = png_name.replace('.png', '_tn.png')
if mtime(png_name) > mtime(tn_name): 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()) 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) update_image(tmp_name, tn_name)
os.remove(png_maker_name) done_assemblies.append(real_name)
done_assemblies.append(module)
else: else:
if module == 'main_assembly': if module == 'main_assembly':
main_blurb = blurb.scrape_module_blurb(lines[:line_no]) main_blurb = blurb.scrape_module_blurb(lines[:line_no])
@@ -216,7 +227,7 @@ def views(target, do_assemblies = None):
print('1. [Parts list](#Parts_list)', file = doc_file) print('1. [Parts list](#Parts_list)', file = doc_file)
for ass in flat_bom: for ass in flat_bom:
name = ass["name"] name = ass["name"]
cap_name = name.replace('_', ' ').title() cap_name = titalise(name)
print('1. [%s](#%s)' % (cap_name, name), file = doc_file) print('1. [%s](#%s)' % (cap_name, name), file = doc_file)
print(file = doc_file) print(file = doc_file)
eop(print_mode, doc_file) eop(print_mode, doc_file)
@@ -237,7 +248,7 @@ def views(target, do_assemblies = None):
else: else:
things[t][thing] = ass[t][thing] things[t][thing] = ass[t][thing]
for ass in flat_bom: for ass in flat_bom:
name = ass["name"][:-9].replace('_', ' ').title().replace(' ','&nbsp;') name = titalise(ass["name"][:-9]).replace(' ','&nbsp;')
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;">%s</span> ' % name, file = doc_file, end = '')
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |', file = doc_file) print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |', file = doc_file)
@@ -274,7 +285,7 @@ def views(target, do_assemblies = None):
# #
for ass in flat_bom: for ass in flat_bom:
name = ass["name"] name = ass["name"]
cap_name = name.replace('_', ' ').title() cap_name = titalise(name)
if ass["count"] > 1: if ass["count"] > 1:
print('<a name="%s"></a>\n## %d x %s' % (name, ass["count"], cap_name), file = doc_file) print('<a name="%s"></a>\n## %d x %s' % (name, ass["count"], cap_name), file = doc_file)

View File

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

View File

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

View File

@@ -17,10 +17,9 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/kp_pillow_blocks.scad> include <../vitamins/kp_pillow_blocks.scad>
include <../vitamins/nuts.scad>
use <../utils/layout.scad>
module kp_pillow_blocks() { module kp_pillow_blocks() {
screws = [M4_cap_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw]; screws = [M4_cap_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw];

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/leds.scad> include <../vitamins/leds.scad>

View File

@@ -17,11 +17,11 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../vitamins/pcb.scad>
include <../vitamins/microswitches.scad> include <../vitamins/microswitches.scad>
include <../vitamins/d_connectors.scad> include <../vitamins/d_connectors.scad>
use <../vitamins/pcb.scad>
gt_5x17 = ["gt_5x17", 5, 10, 17, 5, 11, 0.4, 9, 2,1.5, 1, 3, 6, 0, 0, 0]; gt_5x17 = ["gt_5x17", 5, 10, 17, 5, 11, 0.4, 9, 2,1.5, 1, 3, 6, 0, 0, 0];
gt_5x11 = ["gt_5x11", 5, 8, 11, 5, 7, 0.4, 7, 1.5,1.5, 1,2.5, 6, 0, 0, 0]; gt_5x11 = ["gt_5x11", 5, 8, 11, 5, 7, 0.4, 7, 1.5,1.5, 1,2.5, 6, 0, 0, 0];

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/pcb_mount.scad> use <../printed/pcb_mount.scad>
PI_IO = ["PI_IO", "PI_IO V2", 35.56, 25.4, 1.6, 0, 0, 0, "green", true, [], PI_IO = ["PI_IO", "PI_IO V2", 35.56, 25.4, 1.6, 0, 0, 0, "green", true, [],

View File

@@ -17,11 +17,10 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/d_connectors.scad>
include <../vitamins/pcbs.scad> include <../vitamins/pcbs.scad>
use <../utils/layout.scad>
module pcbs() module pcbs()
layout([for(p = pcbs) pcb_width(p)], 10) layout([for(p = pcbs) pcb_width(p)], 10)
translate([0, pcb_length(pcbs[$i]) / 2]) translate([0, pcb_length(pcbs[$i]) / 2])

View File

@@ -17,10 +17,9 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
include <../vitamins/psus.scad> include <../vitamins/psus.scad>
use <../utils/layout.scad>
use <../printed/psu_shroud.scad> use <../printed/psu_shroud.scad>
thickness = 3; thickness = 3;

View File

@@ -17,11 +17,10 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
include <../vitamins/psus.scad> include <../vitamins/psus.scad>
use <../utils/layout.scad>
module psus() module psus()
layout([for(p = psus) psu_width(p)], 10) let(p = psus[$i]) layout([for(p = psus) psu_width(p)], 10) let(p = psus[$i])
rotate(atx_psu(p) ? 0 : 90) { rotate(atx_psu(p) ? 0 : 90) {

View File

@@ -17,10 +17,10 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/scs_bearing_blocks.scad> include <../vitamins/scs_bearing_blocks.scad>
use <../utils/layout.scad>
module scs_bearing_blocks() module scs_bearing_blocks()
layout([for(s = scs_bearing_blocks) scs_size(s).x], 10) { layout([for(s = scs_bearing_blocks) scs_size(s).x], 10) {
part_thickness = 5; part_thickness = 5;

View File

@@ -17,11 +17,11 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/sk_brackets.scad> include <../vitamins/sk_brackets.scad>
include <../vitamins/extrusions.scad> include <../vitamins/extrusions.scad>
use <../utils/layout.scad>
module sk_brackets() { module sk_brackets() {
screws = [M4_dome_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw]; 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]; nuts = [M4_hammer_nut, M4_sliding_t_nut, M5_sliding_t_nut, undef];

View File

@@ -17,10 +17,9 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
include <../vitamins/ssrs.scad> include <../vitamins/ssrs.scad>
use <../utils/layout.scad>
use <../printed/ssr_shroud.scad> use <../printed/ssr_shroud.scad>
thickness = 3; thickness = 3;

View File

@@ -17,11 +17,10 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
use <../utils/layout.scad>
include <../vitamins/screws.scad>
include <../vitamins/ssrs.scad> include <../vitamins/ssrs.scad>
use <../utils/layout.scad>
module ssrs() module ssrs()
layout([for(s = ssrs) ssr_width(s)], 15) layout([for(s = ssrs) ssr_width(s)], 15)
rotate(90) rotate(90)

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/annotation.scad> use <../utils/annotation.scad>
module annotations() { module annotations() {

View File

@@ -16,10 +16,9 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/springs.scad>
include <../vitamins/batteries.scad> include <../vitamins/batteries.scad>
module batteries() module batteries()

View File

@@ -18,8 +18,6 @@
// //
include <../core.scad> include <../core.scad>
include <../vitamins/belts.scad>
include <../vitamins/screws.scad>
include <../vitamins/pulleys.scad> include <../vitamins/pulleys.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>
use <../utils/layout.scad> use <../utils/layout.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/bezier.scad> use <../utils/bezier.scad>
use <../utils/sweep.scad> use <../utils/sweep.scad>
use <../utils/annotation.scad> use <../utils/annotation.scad>

View File

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

View File

@@ -18,7 +18,6 @@
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/sheets.scad> include <../vitamins/sheets.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/bulldogs.scad> include <../vitamins/bulldogs.scad>

View File

@@ -18,7 +18,6 @@
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
include <../vitamins/sheets.scad> include <../vitamins/sheets.scad>
use <../vitamins/insert.scad> use <../vitamins/insert.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/buttons.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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/cable_grommets.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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../vitamins/cable_strip.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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/carriers.scad> use <../printed/carriers.scad>
module carriers() module carriers()

View File

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

View File

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

View File

@@ -19,8 +19,6 @@
include <../core.scad> include <../core.scad>
use <../printed/corner_block.scad> use <../printed/corner_block.scad>
include <../vitamins/screws.scad>
screws = [M2_cap_screw, M2p5_pan_screw, M3_dome_screw, M4_dome_screw]; screws = [M2_cap_screw, M2p5_pan_screw, M3_dome_screw, M4_dome_screw];
module do_corner_block(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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/d_connectors.scad> include <../vitamins/d_connectors.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/door_hinge.scad> use <../printed/door_hinge.scad>
include <../vitamins/sheets.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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/door_latch.scad> use <../printed/door_latch.scad>
module door_latches() module door_latches()

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
include <../vitamins/extrusion_brackets.scad> include <../vitamins/extrusion_brackets.scad>
include <../vitamins/extrusions.scad> include <../vitamins/extrusions.scad>

View File

@@ -16,15 +16,14 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/extrusions.scad> include <../vitamins/extrusions.scad>
module extrusions() module extrusions()
layout([for(e = extrusions) extrusion_width(e)], 10) layout([for(e = extrusions) extrusion_width(e)], 10)
extrusion(extrusions[$i], 80); extrusion(extrusions[$i], 80, cornerHole = extrusion_width(extrusions[$i]) > 20);
if ($preview) if ($preview)
extrusions(); extrusions();

View File

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

View File

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

View File

@@ -17,7 +17,6 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../core.scad>
include <../vitamins/screws.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
use <../printed/flat_hinge.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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/foot.scad> use <../printed/foot.scad>
module feet() module feet()

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../vitamins/fuseholder.scad> use <../vitamins/fuseholder.scad>
@@ -24,4 +24,5 @@ module fuseholders()
fuseholder(6); fuseholder(6);
if($preview) if($preview)
fuseholders(); let($show_threads = 1)
fuseholders();

View File

@@ -17,7 +17,7 @@
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
module globals() { module globals() {
linear_extrude(height = eps) { 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. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../printed/handle.scad> use <../printed/handle.scad>
module handle() module handle()

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/hot_ends.scad> include <../vitamins/hot_ends.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/inserts.scad> include <../vitamins/inserts.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../vitamins/jack.scad> use <../vitamins/jack.scad>
@@ -32,4 +32,5 @@ module jacks() {
} }
if($preview) if($preview)
jacks(); let($show_threads = true)
jacks();

View File

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

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/light_strips.scad> include <../vitamins/light_strips.scad>
@@ -29,7 +29,7 @@ module light_strips()
for(end = [-1, 1]) for(end = [-1, 1])
translate([end * (light_strip_cut_length(light, segs) / 2 - d / 2), 0]) translate([end * (light_strip_cut_length(light, segs) / 2 - d / 2), 0])
rotate([90, 0, 90]) rotate([90, 0, 90])
color("lime") render() color(pp1_colour) render()
translate_z(-d / 2) translate_z(-d / 2)
light_strip_clip(light); light_strip_clip(light);
} }

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/linear_bearings.scad> include <../vitamins/linear_bearings.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/mains_sockets.scad> include <../vitamins/mains_sockets.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/maths.scad> use <../utils/maths.scad>
use <../utils/annotation.scad> use <../utils/annotation.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../vitamins/meter.scad> use <../vitamins/meter.scad>

View File

@@ -16,7 +16,7 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib. // You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>. // If not, see <https://www.gnu.org/licenses/>.
// //
include <../core.scad> include <../utils/core/core.scad>
use <../utils/layout.scad> use <../utils/layout.scad>
include <../vitamins/microswitches.scad> include <../vitamins/microswitches.scad>

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