diff --git a/libtest.png b/libtest.png
index ce01f39..5eee585 100644
Binary files a/libtest.png and b/libtest.png differ
diff --git a/libtest.scad b/libtest.scad
index 6a8e550..5689c1e 100644
--- a/libtest.scad
+++ b/libtest.scad
@@ -157,7 +157,7 @@ cable_grommets_y = 0;
translate([x5, cable_grommets_y])
cable_grommets();
-translate([x5, cable_grommets_y + 30])
+translate([x5, cable_grommets_y + 45])
led_bezels();
translate([x5 + 50, cable_grommets_y])
@@ -366,9 +366,12 @@ components_y = toggles_y + 40;
translate([x2, leds_y])
leds();
-translate([x2 + 35, leds_y])
+translate([x2 + 55, leds_y])
ldrs();
+translate([x2 + 87, leds_y])
+ fuseholders();
+
translate([x2 + 8, carriers_y])
carriers();
@@ -378,9 +381,6 @@ translate([x2, magnets_y])
translate([x2 + 20, carriers_y])
led_meters();
-translate([x2 + 70, leds_y])
- fuseholders();
-
translate([x2, spades_y])
spades();
diff --git a/printed/led_bezel.scad b/printed/led_bezel.scad
index cd859bd..4169724 100644
--- a/printed/led_bezel.scad
+++ b/printed/led_bezel.scad
@@ -40,32 +40,72 @@ function led_bezel_hole_r(type) = //! Panel hole radius
module led_bezel(type) { //! Makes the STL for the bezel
led = led_bezel_led(type);
stl(str(led[0],"_bezel")) {
- rl = led_diameter(led) / 2;
- rr = led_rim_dia(led) / 2;
wall = led_bezel_wall(type);
- poly_tube(or = rr + wall + led_bezel_flange(type), ir = rl, h = led_bezel_flange_t(type)); // Flange
- poly_tube(or = rl + wall, ir = rl, h = led_height(led) - rl - led_rim_t(led)); // Tube up to LED flange
- poly_tube(or = corrected_radius(rr) + wall, ir = rr, h = led_bezel_height(type)); // Tube beyond the flange
+ if(is_num(led_diameter(led))) {
+ rl = led_diameter(led) / 2;
+ rr = led_rim_dia(led) / 2;
+ poly_tube(or = rr + wall + led_bezel_flange(type), ir = rl, h = led_bezel_flange_t(type)); // Flange
+ poly_tube(or = rl + wall, ir = rl, h = led_height(led) - rl - led_rim_t(led)); // Tube up to LED flange
+ poly_tube(or = corrected_radius(rr) + wall, ir = rr, h = led_bezel_height(type)); // Tube beyond the flange
+ }
+ else {
+ linear_extrude(led_bezel_flange_t(type)) // Flange
+ difference() {
+ offset(wall + led_bezel_flange(type))
+ square(led_rim_dia(led), true);
+
+ square(led_diameter(led), true);
+ }
+
+ linear_extrude(led_height(led) - led_rim_t(led)) // Tube up to the LED flange
+ difference() {
+ offset(wall)
+ square(led_diameter(led), true);
+
+ square(led_diameter(led), true);
+ }
+
+ linear_extrude(led_bezel_height(type)) // Tube beyond the LED flange
+ difference() {
+ offset(wall)
+ square(led_rim_dia(led), true);
+
+ square(led_rim_dia(led), true);
+ }
+ }
}
}
module led_bezel_retainer(type) { //! Makes the STL for the retaining ring
led = led_bezel_led(type);
stl(str(led[0],"_bezel_retainer")) {
- ir = led_bezel_r(type);
- poly_tube(or = ir + led_bezel_wall(type), ir = ir, h = 4);
+ wall = led_bezel_wall(type);
+ if(is_num(led_diameter(led))) {
+ ir = led_bezel_r(type);
+ poly_tube(or = ir + wall, ir = ir, h = 4);
+ }
+ else
+ linear_extrude(4)
+ difference() {
+ offset(2 * wall)
+ square(led_rim_dia(led), true);
+
+ offset(wall)
+ square(led_rim_dia(led), true);
+ }
}
}
module led_bezel_assembly(type, colour = "red") {//! Led bezel with LED
led = led_bezel_led(type);
+ d = led_diameter(led);
assembly(str(led[0], "_", colour, "_bezel")) {
translate_z(led_bezel_flange_t(type)) {
vflip()
stl_colour(pp1_colour)
led_bezel(type);
- translate_z(-led_height(led) + led_diameter(led) / 2)
+ translate_z(-led_height(led) + (is_num(d) ? d / 2 : 0))
explode(-20)
led(led, colour);
}
diff --git a/readme.md b/readme.md
index 248499a..1185304 100644
--- a/readme.md
+++ b/readme.md
@@ -2112,6 +2112,7 @@ Standard domed through hole LEDs. Can specify colour and lead length.
| 1 | `led(LED3mm, "green")` | LED 3 mm green |
| 1 | `led(LED5mm, "blue")` | LED 5 mm blue |
| 1 | `led(LED8mm)` | LED 8 mm red |
+| 1 | `led(LED5x2mm, "green")` | LED [5, 2] mm green |
Top
@@ -6432,6 +6433,7 @@ Printed LED bezels for panel mounting
| 1 | `led(LED3mm, "yellow")` | LED 3 mm yellow |
| 1 | `led(LED5mm, "blue")` | LED 5 mm blue |
| 1 | `led(LED8mm)` | LED 8 mm red |
+| 1 | `led(LED5x2mm, "yellow")` | LED [5, 2] mm yellow |
### Printed
| Qty | Filename |
@@ -6442,6 +6444,8 @@ Printed LED bezels for panel mounting
| 1 | LED3mm_bezel_retainer.stl |
| 1 | LED5mm_bezel.stl |
| 1 | LED5mm_bezel_retainer.stl |
+| 1 | LED5x2mm_bezel.stl |
+| 1 | LED5x2mm_bezel_retainer.stl |
| 1 | LED8mm_bezel.stl |
| 1 | LED8mm_bezel_retainer.stl |
@@ -6451,6 +6455,7 @@ Printed LED bezels for panel mounting
| 1 | LED10mm_orange_bezel_assembly |
| 1 | LED3mm_yellow_bezel_assembly |
| 1 | LED5mm_blue_bezel_assembly |
+| 1 | LED5x2mm_yellow_bezel_assembly |
| 1 | LED8mm_red_bezel_assembly |
diff --git a/tests/LED_bezel.scad b/tests/LED_bezel.scad
index 083d337..94b4ddf 100644
--- a/tests/LED_bezel.scad
+++ b/tests/LED_bezel.scad
@@ -23,7 +23,7 @@ include <../vitamins/leds.scad>
use <../printed/led_bezel.scad>
module led_bezels()
- layout([for(l = LEDs) led_diameter(l)], 6) let(l = LEDs[$i], b = led_bezel(l))
+ layout([for(l = LEDs) max(led_diameter(l))], 6) let(l = LEDs[$i], b = led_bezel(l))
if($preview)
led_bezel_fastened_assembly(b, 3, ["yellow", "blue", "red", "orange"][$i % 4]);
else {
diff --git a/tests/LEDs.scad b/tests/LEDs.scad
index 9dda4b8..57f4c41 100644
--- a/tests/LEDs.scad
+++ b/tests/LEDs.scad
@@ -22,7 +22,7 @@ use <../utils/layout.scad>
include <../vitamins/leds.scad>
module leds()
- layout([for(l = LEDs) led_diameter(l)], 5)
+ layout(echoit([for(l = LEDs) max(led_diameter(l))]), 5)
led(LEDs[$i], ["green", "blue", "red", "orange"][$i % 4]);
if($preview)
diff --git a/tests/png/led_bezel.png b/tests/png/led_bezel.png
index f801e36..882f150 100644
Binary files a/tests/png/led_bezel.png and b/tests/png/led_bezel.png differ
diff --git a/tests/png/leds.png b/tests/png/leds.png
index 3647e49..9e247af 100644
Binary files a/tests/png/leds.png and b/tests/png/leds.png differ
diff --git a/vitamins/led.scad b/vitamins/led.scad
index 9a2ed43..77d8477 100644
--- a/vitamins/led.scad
+++ b/vitamins/led.scad
@@ -41,16 +41,21 @@ module led(type, colour = "red", lead = 5, right_angle = 0) { //! Draw specified
rotate([right_angle ? 90 : 0, 0, 0])
translate_z(right_angle ? right_angle - led_rim_t(type) : 0)
color(colour) {
- rotate_extrude()
- rounded_corner(r = d / 2, h = led_height(type), r2 = d / 2);
+ if (is_num(d)) {
+ rotate_extrude()
+ rounded_corner(r = d / 2, h = led_height(type), r2 = d / 2);
- linear_extrude(led_rim_t(type))
- difference() {
- circle(d = led_rim_dia(type));
+ linear_extrude(led_rim_t(type))
+ difference() {
+ circle(d = led_rim_dia(type));
- translate([d / 2 + eps, -5])
- square(10);
- }
+ translate([d / 2 + eps, -5])
+ square(10);
+ }
+ } else {
+ translate_z(led_height(type)/2) cube([d.x, d.y, led_height(type)], center = true);
+ translate_z(led_rim_t(type)/2) cube([led_rim_dia(type).x, led_rim_dia(type).y, led_rim_t(type)], center = true);
+ }
}
t = led_lead_t(type);
len = lead - (right_angle ? t : 0);
diff --git a/vitamins/leds.scad b/vitamins/leds.scad
index 34527cf..7a3c805 100644
--- a/vitamins/leds.scad
+++ b/vitamins/leds.scad
@@ -18,18 +18,20 @@
//
//
-// d r r h p l
-// i i i e i e
-// a m m i t a
-// g c d
-// d t h h
-// t t
+// d r r h p l
+// i i i e i e
+// a m m i t a
+// g c d
+// d t h h
+// t t
//
-LED3mm = ["LED3mm", 3, 3.15, 1.15, 4.6, 2.54, 0.4];
-LED5mm = ["LED5mm", 5, 5.9, 1.1, 9.0, 2.54, 0.4];
-LED8mm = ["LED8mm", 8, 9.2, 1.95,11.0, 2.54, 0.4];
-LED10mm = ["LED10mm", 10, 11.0, 2.0, 13.5, 2.54, 0.4];
+LED3mm = ["LED3mm", 3, 3.15, 1.15, 4.6, 2.54, 0.4];
+LED5mm = ["LED5mm", 5, 5.9, 1.1, 9.0, 2.54, 0.4];
+LED8mm = ["LED8mm", 8, 9.2, 1.95, 11.0, 2.54, 0.4];
+LED10mm = ["LED10mm", 10, 11.0, 2.0, 13.5, 2.54, 0.4];
-LEDs = [LED3mm, LED5mm, LED8mm, LED10mm];
+LED5x2mm = ["LED5x2mm", [5,2], [5,2.7], 0.7, 7.0, 2.54, 0.5];
+
+LEDs = [LED3mm, LED5mm, LED8mm, LED10mm, LED5x2mm];
use