Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
f5d0bfb6c8 | ||
|
b2117fa99a | ||
|
6687a4a7c6 | ||
|
8524ddd34d | ||
|
c8869fc415 | ||
|
21c06667a3 | ||
|
d19fad3f9f | ||
|
172bfb16d8 | ||
|
491dbae13b | ||
|
99ebfffd2b | ||
|
f04486a040 | ||
|
42a7d222b5 | ||
|
598a01295f | ||
|
046c475e18 |
24
CHANGELOG.md
@@ -3,6 +3,30 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
### [v17.3.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.3.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.2.2...v17.3.0 "diff with v17.2.2")
|
||||
* 2021-10-20 [`21c0666`](https://github.com/nophead/NopSCADlib/commit/21c06667a3c5a0bc65440b990e28b8a2f93c7c32 "show commit") [C.P.](# "Chris Palmer") Added ATX300 PSU model.
|
||||
|
||||
* 2021-10-20 [`d19fad3`](https://github.com/nophead/NopSCADlib/commit/d19fad3f9f7e6eba94b2005b4798b5914fff4b69 "show commit") [C.P.](# "Chris Palmer") PSU grills can now have different holes sizes, spacing, round or heaxagonal and avoid a list of rectangular regions.
|
||||
|
||||
* 2021-10-20 [`172bfb1`](https://github.com/nophead/NopSCADlib/commit/172bfb16d8ec8ffee8b5185ef42867b37ab6bce1 "show commit") [C.P.](# "Chris Palmer") Added lugless pressfit IEC inlet.
|
||||
|
||||
* 2021-10-09 [`491dbae`](https://github.com/nophead/NopSCADlib/commit/491dbae13b9ff2736324ff084c6a6f313b4a09fc "show commit") [C.P.](# "Chris Palmer") `screw_shorter_than()` will return 4 or 3 for short grub screws.
|
||||
|
||||
#### [v17.2.2](https://github.com/nophead/NopSCADlib/releases/tag/v17.2.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v17.2.1...v17.2.2 "diff with v17.2.1")
|
||||
* 2021-10-02 [`046c475`](https://github.com/nophead/NopSCADlib/commit/046c475e1833c09a925a5310d1ccc6e4b07e7f89 "show commit") [M.B.](# "Martin Budden") Set convexity to 8 for `linear_extrude` of extrusion.
|
||||
|
||||
#### [v17.2.1](https://github.com/nophead/NopSCADlib/releases/tag/v17.2.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v17.2.0...v17.2.1 "diff with v17.2.0")
|
||||
* 2021-10-06 [`5f72a12`](https://github.com/nophead/NopSCADlib/commit/5f72a1212514ee7f8a795b53b1d1d180329660df "show commit") [C.P.](# "Chris Palmer") Nuts shown on jacks and fuseholders only shown threaded when exploded.
|
||||
|
||||
### [v17.2.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.2.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.1.0...v17.2.0 "diff with v17.1.0")
|
||||
* 2021-10-06 [`82502eb`](https://github.com/nophead/NopSCADlib/commit/82502eb470127b28e4036821077cbdbd06c17e9e "show commit") [C.P.](# "Chris Palmer") Added `pot_nut()` module to draw potentiometer nuts and washers.
|
||||
|
||||
### [v17.1.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.1.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.0.1...v17.1.0 "diff with v17.0.1")
|
||||
* 2021-10-05 [`b541298`](https://github.com/nophead/NopSCADlib/commit/b541298eae361b80df3c6c5797f3940a37fc2a38 "show commit") [C.P.](# "Chris Palmer") Printed foot assembly can now omit the top washer when space is at a premium.
|
||||
Now correctly shows the screw in the squeezed position.
|
||||
|
||||
* 2021-10-02 [`9884160`](https://github.com/nophead/NopSCADlib/commit/9884160ed5e8cd7d1f44c6fee950e3682714da9c "show commit") [C.P.](# "Chris Palmer") Updated the gallery
|
||||
|
||||
#### [v17.0.1](https://github.com/nophead/NopSCADlib/releases/tag/v17.0.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v17.0.0...v17.0.1 "diff with v17.0.0")
|
||||
* 2021-10-01 [`38c973b`](https://github.com/nophead/NopSCADlib/commit/38c973b316a853fcbef3ccb857d99404a772d9dd "show commit") [C.P.](# "Chris Palmer") FR4 veroboard made the correct colour.
|
||||
veroboard track cuts made slightly bigger.
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 932 KiB After Width: | Height: | Size: 943 KiB |
@@ -74,7 +74,8 @@ module foot_assembly(t = 0, type = foot, flip = false, no_washer = false) { //!
|
||||
screw_length = screw_length(screw, foot_thickness(type) + t - squeeze, no_washer ? 1 : 2, nyloc = true);
|
||||
|
||||
vflip() explode(15, true) {
|
||||
stl_colour(pp4_colour) foot(type);
|
||||
translate_z(-squeeze)
|
||||
stl_colour(pp4_colour) foot(type);
|
||||
|
||||
if(t)
|
||||
explode(15, true)
|
||||
|
17
readme.md
@@ -1454,6 +1454,7 @@ IEC mains inlets and outlet.
|
||||
| 1 | `iec(IEC_inlet)` | IEC inlet |
|
||||
| 1 | `iec(IEC_inlet_atx)` | IEC inlet for ATX |
|
||||
| 1 | `iec(IEC_outlet)` | IEC outlet RS 811-7193 |
|
||||
| 1 | `iec(IEC_inlet_atx2)` | IEC pressfit inlet for ATX |
|
||||
| 1 | `iec(IEC_320_C14_switched_fused_inlet)` | IEC320 C14 switched fused inlet module |
|
||||
| 12 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 4 | `screw(M3_cs_cap_screw, 10)` | Screw M3 cs cap x 10mm |
|
||||
@@ -1526,6 +1527,7 @@ E.g. a "brown" socket for mains live needs to be displayed as "sienna" to look r
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `jack_4mm_flange_radius()` | 4mm jack socket flange radius |
|
||||
| `jack_4mm_hole_radius()` | Panel hole radius for 4mm jack |
|
||||
| `jack_4mm_plastic_flange_radius()` | 4mm plastic jack socket flange radius |
|
||||
| `jack_4mm_shielded_hole_radius()` | Panel hole radius for 4mm shielded jack |
|
||||
@@ -2844,6 +2846,7 @@ Face order is bottom, top, left, right, front, back.
|
||||
|:--- |:--- |
|
||||
| `atx_psu(type)` | True if an ATX style PSU |
|
||||
| `psu_accessories(type)` | Accessories to add to BOM, e.g. mains lead |
|
||||
| `psu_face_cutout(type)` | Panel cutout to accommodate this face, e.g. for ATX |
|
||||
| `psu_face_cutouts(type)` | List of polygons to remove |
|
||||
| `psu_face_fan(type)` | Fan x,y position and type |
|
||||
| `psu_face_grill(type)` | Is this face a grill |
|
||||
@@ -2879,7 +2882,7 @@ Face order is bottom, top, left, right, front, back.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `atx_psu_cutout(type)` | Cut out for the rear of an ATX |
|
||||
| `atx_psu_cutout(type, face = f_front)` | Cut out for the rear of an ATX, which is actually f_front! |
|
||||
| `psu(type)` | Draw a power supply |
|
||||
| `psu_screw_positions(type, face = undef)` | Position children at the screw positions on the preferred mounting face, which can be overridden. |
|
||||
| `terminal_block(type, ways)` | Draw a power supply terminal block |
|
||||
@@ -2889,18 +2892,18 @@ Face order is bottom, top, left, right, front, back.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | | IEC mains lead |
|
||||
| 2 | | IEC mains lead |
|
||||
| 1 | `psu(ATX500)` | PSU ATX500 |
|
||||
| 1 | `psu(KY240W)` | PSU KY-240W-12-L |
|
||||
| 1 | `psu(ATX300)` | PSU FSP300-60GHX |
|
||||
| 1 | `psu(KY240W)` | PSU KY-240W-12-L - not shown |
|
||||
| 1 | `psu(PD_150_12)` | PSU PD-150-12 |
|
||||
| 1 | `psu(S_250_48)` | PSU S-250-48 |
|
||||
| 1 | `psu(S_300_12)` | PSU S-300-12 |
|
||||
| 4 | `screw(No632_pan_screw, 8)` | Screw 6-32 pan x 8mm |
|
||||
| 4 | `screw(M3_cap_screw, 8)` | Screw M3 cap x 8mm |
|
||||
| 9 | `screw(No632_pan_screw, 8)` | Screw 6-32 pan x 8mm |
|
||||
| 8 | `screw(M3_pan_screw, 8)` | Screw M3 pan x 8mm |
|
||||
| 4 | `screw(M4_cap_screw, 8)` | Screw M4 cap x 8mm |
|
||||
| 12 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 8 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 8 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 13 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
@@ -16,20 +16,32 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
show_cutout = false;
|
||||
|
||||
include <../core.scad>
|
||||
include <../vitamins/psus.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
|
||||
|
||||
module psus()
|
||||
layout([for(p = psus) psu_width(p)], 10) let(p = psus[$i])
|
||||
layout([for(p = psus) atx_psu(p) ? psu_length(p) : psu_width(p)], 10) let(p = psus[$i])
|
||||
rotate(atx_psu(p) ? 0 : 90) {
|
||||
psu(p);
|
||||
|
||||
psu_screw_positions(p)
|
||||
translate_z(3)
|
||||
screw_and_washer(psu_screw(p), 8);
|
||||
|
||||
if(show_cutout && atx_psu(p))
|
||||
#atx_psu_cutout(p);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
if($preview) {
|
||||
psus();
|
||||
|
||||
for(p = psus_not_shown)
|
||||
hidden()
|
||||
psu(p);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 255 KiB |
@@ -103,7 +103,7 @@ module drill(r, h = 100, center = true) //! Make a cylinder for drilling holes s
|
||||
|
||||
module poly_drill(r, h = 100, center = true) //! Make a cylinder for drilling holes suitable for CNC routing if cnc_bit_r is non zero, otherwise a poly_cylinder.
|
||||
if(cnc_bit_r)
|
||||
drill(r, h, center = true);
|
||||
drill(r, h, center = center);
|
||||
else
|
||||
poly_cylinder(r, h, center);
|
||||
|
||||
|
@@ -138,6 +138,6 @@ module extrusion(type, length, center = true, cornerHole = false) { //! Draw the
|
||||
vitamin(str("extrusion(", type[0], ", ", length, arg(cornerHole, false, "cornerHole"), "): Extrusion ", type[0], " x ", length, "mm"));
|
||||
|
||||
color(grey(90))
|
||||
linear_extrude(length, center = center)
|
||||
linear_extrude(length, center = center, convexity = 8)
|
||||
extrusion_cross_section(type, cornerHole);
|
||||
}
|
||||
|
@@ -203,9 +203,10 @@ module iec(type) { //! Draw specified IEC connector
|
||||
function iec_spade_depth(type) = iec_depth(type) + max([for(spade = iec_spades(type)) spade[1]]);
|
||||
|
||||
module iec_screw_positions(type) //! Position children at the screw holes
|
||||
for(side = [-1, 1])
|
||||
translate([side * iec_pitch(type) / 2, 0])
|
||||
children();
|
||||
if(iec_pitch(type))
|
||||
for(side = [-1, 1])
|
||||
translate([side * iec_pitch(type) / 2, 0])
|
||||
children();
|
||||
|
||||
module iec_holes(type, h = 100, poly = false, horizontal = false, insert = false) { //! Drill the required panel holes
|
||||
clearance = 0.2;
|
||||
|
@@ -59,7 +59,8 @@ IEC_320_C14_switched_fused_inlet = ["IEC_320_C14_switched_fused_inlet", "IEC320
|
||||
M3_cs_cap_screw, 40, 27, 16,46.8,3,28, 48, 2.4, 1.0, 33, 57, 4, 3.0, 48,16.5, iec320c14FusedSwitchedSpades, false ];
|
||||
IEC_inlet = ["IEC_inlet", "IEC inlet", M3_cs_cap_screw, 40, 28, 18, 20, 3, 28, 20.5, 4, 2.5, 37, 23, 1, 2.5, 48, 14, inlet_spades, false ];
|
||||
IEC_inlet_atx = ["IEC_inlet_atx", "IEC inlet for ATX", M3_cs_cap_screw, 40, 27, 18, 19, 3, 30.5, 22, 2, 2.0, 30.5, 22, 2, 4.0, 50, 15, atx_spades, false ];
|
||||
IEC_inlet_atx2 = ["IEC_inlet_atx2", "IEC pressfit inlet for ATX", M3_cs_cap_screw, 0, 27, 18, 19, 3, 30.5, 22, 1, 0, 30.5, 22, 1, 4.0, 50, 15, atx_spades, false ]; // lugless
|
||||
IEC_outlet = ["IEC_outlet", "IEC outlet RS 811-7193", M3_cs_cap_screw, 40, 32, 18, 24, 3, 28, 20.5, 2, 0.0, 29, 29, 2, 2.8, 50, 23, outlet_spades, true ];
|
||||
|
||||
iecs = [IEC_inlet, IEC_inlet_atx, IEC_fused_inlet, IEC_fused_inlet2, IEC_320_C14_switched_fused_inlet, IEC_outlet];
|
||||
iecs = [IEC_inlet_atx2, IEC_inlet, IEC_inlet_atx, IEC_fused_inlet, IEC_fused_inlet2, IEC_320_C14_switched_fused_inlet, IEC_outlet];
|
||||
use <iec.scad>
|
||||
|
@@ -29,10 +29,11 @@ use <../utils/thread.scad>
|
||||
use <ring_terminal.scad>
|
||||
|
||||
function jack_4mm_hole_radius() = 8/2; //! Panel hole radius for 4mm jack
|
||||
function jack_4mm_flange_radius() = 10.6 / 2; //! 4mm jack socket flange radius
|
||||
|
||||
module jack_4mm(colour, thickness, display_colour = false) { //! Draw a 4mm jack socket with nut positioned for specified panel thickness
|
||||
vitamin(str("jack_4mm(\"", colour, "\", 3", arg(display_colour, false), "): 4mm jack socket ", colour));
|
||||
flange_d = 10.6;
|
||||
flange_r = jack_4mm_flange_radius();
|
||||
flange_t = 3;
|
||||
flange_id = 4.6;
|
||||
length = 28.5;
|
||||
@@ -50,7 +51,7 @@ module jack_4mm(colour, thickness, display_colour = false) { //! Draw a 4mm jack
|
||||
explode(length, offset = -length + flange_t) {
|
||||
color(display_colour ? display_colour : colour) rotate_extrude() difference() {
|
||||
union() {
|
||||
square([flange_d / 2, flange_t]);
|
||||
square([flange_r, flange_t]);
|
||||
|
||||
translate([0, -sleaved])
|
||||
square([sleaved_d / 2, sleaved]);
|
||||
|
@@ -39,6 +39,7 @@ function psu_face_fan(type) = type[4]; //! Fan x,y position and typ
|
||||
function psu_face_iec(type) = type[5]; //! IEC connector x,y, rotation and type
|
||||
function psu_face_switch(type) = type[6]; //! Rocker switch x,y, rotation and type
|
||||
function psu_face_vents(type) = type[7]; //! Vents array position x,y, rotation, size and corner radius
|
||||
function psu_face_cutout(type) = type[8]; //! Panel cutout to accommodate this face, e.g. for ATX
|
||||
|
||||
function psu_name(type) = type[1]; //! The part name
|
||||
function psu_length(type) = type[2]; //! Length
|
||||
@@ -124,19 +125,23 @@ function psu_face_transform(type, face) = //! Returns a transformation
|
||||
translations = [h / 2, h / 2, l / 2 - left, l / 2 - right, w / 2, w / 2]
|
||||
) translate([0, 0, h / 2]) * rotate(rotations[face]) * translate([0, 0, translations[face]]);
|
||||
|
||||
grill_hole = 4.5;
|
||||
grill_gap = 1.5;
|
||||
module psu_grill(width, height) {
|
||||
nx = floor(width / (grill_hole + grill_gap));
|
||||
module psu_grill(width, height, grill_hole = 4.5, grill_gap = 1.5, fn = 0, avoid = []) {
|
||||
nx = floor(width / (grill_hole + grill_gap)) + 1;
|
||||
xpitch = width / nx;
|
||||
ny = floor(height / ((grill_hole + grill_gap) * cos(30)));
|
||||
ny = floor(height / ((grill_hole + grill_gap) * cos(30))) + 1;
|
||||
ypitch = height / ny;
|
||||
r = grill_hole / 2;
|
||||
avoid = avoid ? [for(p = avoid) [[p.x - p[2] / 2 - r, p.y - p[3] / 2 - r], [p.x + p[2] / 2 + r, p.y + p[3] / 2 + r]]] : false;
|
||||
|
||||
function in(regions, x, y) = [for(r = regions) if(x >= r[0].x && x <= r[1].x && y >= r[0].y && y <= r[1].y) true];
|
||||
|
||||
for(y = [0 : ny - 1], x = [0 : nx - 1 - (y % 2)]) {
|
||||
x = -width / 2 + (x + 0.5 + (y % 2) / 2) * xpitch;
|
||||
y = -height / 2 + (y + 0.5) * ypitch;
|
||||
translate([x, y])
|
||||
circle(d = grill_hole);
|
||||
if(!avoid || !in(avoid, x, y))
|
||||
translate([x, y])
|
||||
rotate(30)
|
||||
circle(r, $fn = fn);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,12 +190,20 @@ module psu(type) { //! Draw a power supply
|
||||
translate(h)
|
||||
drill(screw_pilot_hole(psu_screw(type)), 0);
|
||||
|
||||
if(psu_face_grill(f)) {
|
||||
mx = 6;
|
||||
my1 = i == f_top && psu_face_grill(faces[f_back]) ? 0 : 6;
|
||||
my2 = i == f_back && psu_face_grill(faces[f_top]) ? 0 : 6;
|
||||
translate([0, (my2 - my1) / 2])
|
||||
psu_grill(xw - 2 * mx, yw - my1 - my2);
|
||||
g = psu_face_grill(f);
|
||||
if(g) {
|
||||
list = is_list(g);
|
||||
hole = list ? g[0] : 4.5;
|
||||
gap = list ? g[1] : 1.5;
|
||||
fn = list ? g[2] : 0;
|
||||
margins = list ? g[3] : [6, 6, 6, 6];
|
||||
avoid = list ? g[4] : [];
|
||||
mx1 = margins[0];
|
||||
mx2 = margins[1];
|
||||
my1 = i == f_top && psu_face_grill(faces[f_back]) ? 0 : margins[2];
|
||||
my2 = i == f_back && psu_face_grill(faces[f_top]) ? 0 : margins[3];
|
||||
translate([(mx1 - mx2) / 2, (my2 - my1) / 2])
|
||||
psu_grill(xw - mx1 - mx2, yw - my1 - my2, grill_hole = hole, grill_gap = gap, fn = fn, avoid = avoid);
|
||||
}
|
||||
if(fan)
|
||||
translate([fan.x, fan.y]) intersection() {
|
||||
@@ -234,7 +247,7 @@ module psu(type) { //! Draw a power supply
|
||||
}
|
||||
|
||||
if(iec)
|
||||
translate([iec.x, iec.y])
|
||||
translate([iec.x, iec.y, t])
|
||||
rotate(iec.z)
|
||||
iec_assembly(iec[3], t);
|
||||
|
||||
@@ -333,22 +346,9 @@ module psu_screw_positions(type, face = undef) { //! Position children at the sc
|
||||
children();
|
||||
}
|
||||
|
||||
module atx_psu_cutout(type) { //! Cut out for the rear of an ATX
|
||||
holes = psu_face_holes(psu_faces(type)[f_front]);
|
||||
translate([holes[0].x, -psu_width(type) / 2, psu_height(type) / 2 + holes[0].y])
|
||||
rotate([90, 0, 0])
|
||||
linear_extrude(100, center = true)
|
||||
round(5)
|
||||
polygon([ // https://www.techpowerup.com/forums/threads/pc-component-dimensions.157239, tweaked
|
||||
[18.7, -13],
|
||||
[ 5.7, 0],
|
||||
[ 5.7, 54],
|
||||
[18.7, 67],
|
||||
[127, 67],
|
||||
[140, 67 - 13 / tan(52)],
|
||||
[140, -5 + 11 / tan(52)],
|
||||
[129, -5],
|
||||
[81.3, -5],
|
||||
[73.3, -13],
|
||||
]);
|
||||
module atx_psu_cutout(type, face = f_front) { //! Cut out for the rear of an ATX, which is actually f_front!
|
||||
multmatrix(psu_face_transform(type, face))
|
||||
linear_extrude(100, center = true)
|
||||
round(5)
|
||||
polygon(psu_face_cutout(psu_faces(type)[face]));
|
||||
}
|
||||
|
@@ -62,12 +62,64 @@ ATX500 =
|
||||
[[], 0.8, []],
|
||||
[[], 0.8, []],
|
||||
[[], 0.8, []],
|
||||
[[[-69, -27], [-69, 37], [69, 37], [45, -37]], 0.8, [], false, [-25, 0, fan80x25], [45, -19.6, 180, IEC_inlet_atx], [45, 23, 90, small_rocker]],
|
||||
[[[-69, -27], [-69, 37], [69, 37], [45, -37]], 0.8, [], false, [-25, 0, fan80x25], [45, -19.6, 180, IEC_inlet_atx], [45, 23, 90, small_rocker], false,
|
||||
let(h0 = [-69, -27]) [ // https://www.techpowerup.com/forums/threads/pc-component-dimensions.157239, tweaked
|
||||
[18.7, -13] + h0,
|
||||
[ 5.7, 0] + h0,
|
||||
[ 5.7, 54] + h0,
|
||||
[18.7, 67] + h0,
|
||||
[127, 67] + h0,
|
||||
[140, 67 - 13 / tan(52)] + h0,
|
||||
[140, -5 + 11 / tan(52)] + h0,
|
||||
[129, -5] + h0,
|
||||
[81.3, -5] + h0,
|
||||
[73.3, -13] + h0,
|
||||
]
|
||||
],
|
||||
[[], 0.8, [], true],
|
||||
],
|
||||
[": IEC mains lead"]
|
||||
];
|
||||
|
||||
// Single fan in the top, wires exit opposite side from mains in
|
||||
ATX300 = let(p = [113 / 2, 51.5 / 2], s = [125, 100, 64], iec = [35.5, 6], sw = [6.5, 7])
|
||||
["ATX300", "FSP300-60GHX", s.x, s.y, s.z, No632_pan_screw, No6_clearance_radius, true, 0, 0, [],
|
||||
[
|
||||
[[], 0.5, []],
|
||||
[[], 0.5, [], false, [0, 8, fan80x25]],
|
||||
[[], 0.5, []],
|
||||
[[], 0.5, []],
|
||||
[[-p, p, [-p.x, p.y], [p.x, -p.y], [p.x, 0]], 0.5, [], [3, 0.6, 6, [6.3, 7, 6.4, 5.5], [
|
||||
[-p.x, -p.y, 5, 5],
|
||||
[-p.x, p.y, 5, 5],
|
||||
[p.x, 0, 5, 100],
|
||||
[p.x, p.y, 12, 6],
|
||||
[p.x, -p.y, 12, 6],
|
||||
[iec.x, iec.y, 32, 22],
|
||||
[sw.x, sw.y, 20, 20],
|
||||
[sw.x, sw.y, 27, 12],
|
||||
]], false, [iec.x, iec.y, 180, IEC_inlet_atx2], [sw.x, sw.y, 90, small_rocker], false, [
|
||||
[-s.x / 2 + 11.5, -s.z / 2 + 4.5],
|
||||
[-s.x / 2 + 5.5, -s.z / 2 + 4.5 + 6 * tan(60)],
|
||||
|
||||
[-s.x / 2 + 5.5, s.z / 2 - 5.4 - 6 * tan(60)],
|
||||
[-s.x / 2 + 11.5, s.z / 2 - 5.4],
|
||||
|
||||
[ s.x / 2 - 14, s.z / 2 - 5.4],
|
||||
[ s.x / 2 - 10.5, s.z / 2 - 5.4 - 3.5 * tan(60)],
|
||||
[ s.x / 2 - 10.5, -6],
|
||||
[ s.x / 2 - 8, -8.5],
|
||||
|
||||
[ s.x / 2 - 8, -s.z / 2 + 4.5 + 6 * tan(60)],
|
||||
[ s.x / 2 - 14, -s.z / 2 + 4.5],
|
||||
]
|
||||
],
|
||||
[[], 0.5, []],
|
||||
],
|
||||
[": IEC mains lead"]
|
||||
];
|
||||
|
||||
|
||||
KY240W =
|
||||
["KY240W", "KY-240W-12-L", 199, 110, 50, M3_cap_screw, M3_clearance_radius, false, 0, 0, [],
|
||||
[
|
||||
@@ -75,7 +127,6 @@ KY240W =
|
||||
[ 199 / 2 - 12, 110 / 2 - 9 ],
|
||||
[ 199 / 2 - 138, 110 / 2 - 93],
|
||||
[ 199 / 2 - 138, 110 / 2 - 9 ]]]
|
||||
|
||||
],
|
||||
[]
|
||||
];
|
||||
@@ -179,6 +230,8 @@ External =
|
||||
[": IEC mains lead"]
|
||||
];
|
||||
|
||||
psus = [PD_150_12, S_250_48, S_300_12, ATX500, KY240W];
|
||||
psus = [PD_150_12, S_250_48, S_300_12, ATX300, ATX500];
|
||||
|
||||
psus_not_shown = [KY240W];
|
||||
|
||||
use <psu.scad>
|
||||
|
@@ -62,7 +62,9 @@ function screw_shorter_than(x) = x >= 20 ? floor(x / 5) * 5 : //! Returns the le
|
||||
x >= 10 ? 10 :
|
||||
x >= 8 ? 8 :
|
||||
x >= 6 ? 6 :
|
||||
5;
|
||||
x >= 5 ? 5 :
|
||||
x >= 4 ? 4 :
|
||||
3;
|
||||
|
||||
function screw_length(screw, thickness, washers, insert = false, nyloc = false, nut = false, longer = false) = //! Returns the length of the longest or shortest screw that will got through `thickness` and `washers` and possibly an `insert`, `nut` or `nyloc`
|
||||
let(washer = washers ? washers * washer_thickness(screw_washer(screw)) : 0,
|
||||
|