mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-20 04:01:31 +02:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d0513c7299 | ||
|
d1429a3b7d | ||
|
70513993bd | ||
|
9eb35accfd | ||
|
7276f18566 | ||
|
d944198dc4 | ||
|
04f2499a9e |
@@ -85,6 +85,7 @@ Axial components for PCBs.
|
||||
| 1 | ```ax_res(res1_4, 47000)``` | Resistor 47000 Ohms 5% 0.25W |
|
||||
| 1 | ```ax_res(res1_2, 8200)``` | Resistor 8200 Ohms 5% 0.5W |
|
||||
| 1 | ```ax_res(res1_2, 8250, tol = 1)``` | Resistor 8250 Ohms 1% 0.5W |
|
||||
| 1 | ```wire_link(0.8, 10.16)``` | Wire link 0.8mm x 0.4" |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -902,7 +903,7 @@ Can draw three styles: solid, open frame and open frame with screw bosses.
|
||||
| ---:|:--- |:---|
|
||||
| 1 | ```fan(fan120x25)``` | Fan 120mm x 25mm |
|
||||
| 1 | ```fan(fan17x8)``` | Fan 17mm x 8mm |
|
||||
| 1 | ```fan(fan25x10)``` | Fan 25mm x 10mm |
|
||||
| 1 | ```fan(fan25.4x10)``` | Fan 25.4mm x 10mm |
|
||||
| 1 | ```fan(fan30x10)``` | Fan 30mm x 10mm |
|
||||
| 1 | ```fan(fan40x11)``` | Fan 40mm x 11mm |
|
||||
| 1 | ```fan(fan50x15)``` | Fan 50mm x 15mm |
|
||||
@@ -2223,6 +2224,8 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 2 | ```green_terminal(gt_3p5, 4)``` | Terminal block 4 way 3.5mm |
|
||||
| 1 | ```terminal_35(4)``` | Terminal block 4 way 3.5mm |
|
||||
| 1 | ```pcb(TestPCB)``` | Test PCB |
|
||||
| 1 | ```wire_link(0.8, 5.08, h = 10.16)``` | Wire link 0.8mm x 0.2" |
|
||||
| 1 | ```wire_link(0.8, 10.16)``` | Wire link 0.8mm x 0.4" |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -4448,7 +4451,7 @@ The ring spacing as well as the number of spokes can be specified, if zero a gas
|
||||
| ---:|:--- |
|
||||
| 1 | fan_guard_120.stl |
|
||||
| 1 | fan_guard_17.stl |
|
||||
| 1 | fan_guard_25.stl |
|
||||
| 1 | fan_guard_25.4.stl |
|
||||
| 1 | fan_guard_30.stl |
|
||||
| 1 | fan_guard_40.stl |
|
||||
| 1 | fan_guard_50.stl |
|
||||
@@ -5798,6 +5801,7 @@ Global constants, functions and modules. This file is used directly or indirectl
|
||||
| ```inch(x)``` | Inch to mm conversion (For fractional inches, 'inch(1 + 7/8)' will work as expected.) |
|
||||
| ```m(x)``` | m to mm conversion |
|
||||
| ```mm(x)``` | Explicit mm specified |
|
||||
| ```no_point(str)``` | Replace decimal point in string with 'p' |
|
||||
| ```r2sides(r)``` | Replicates the OpenSCAD logic to calculate the number of sides from the radius |
|
||||
| ```r2sides4n(r)``` | Round up the number of sides to a multiple of 4 to ensure points land on all axes |
|
||||
| ```sqr(x)``` | Returns the square of ```x``` |
|
||||
|
@@ -86,10 +86,13 @@ test_pcb = ["TestPCB", "Test PCB",
|
||||
[ 5, 218, 180, "hdmi"],
|
||||
[ 3, 235, 180, "mini_hdmi"],
|
||||
[ 6, 175, 180, "uSD", [12, 11.5, 1.4]],
|
||||
|
||||
[ 65, 9, 0, "link", inch(0.4)],
|
||||
[ 65, 12, 0, "ax_res", res1_8, 1000],
|
||||
[ 65, 17, 0, "ax_res", res1_4, 10000],
|
||||
[ 65, 22, 0, "ax_res", res1_2, 100000],
|
||||
|
||||
[ 80, 9, 0, "link", inch(0.2), inch(0.4)],
|
||||
[ 80, 12, 0, "ax_res", res1_8, 1000000, 1, inch(0.1)],
|
||||
[ 80, 17, 0, "ax_res", res1_4, 100, 2, inch(0.1)],
|
||||
[ 80, 22, 0, "ax_res", res1_2, 10, 10, inch(0.2)],
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 119 KiB |
Binary file not shown.
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Binary file not shown.
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 173 KiB |
@@ -31,6 +31,7 @@ function m(x) = x * 1000.0;
|
||||
|
||||
function sqr(x) = x * x; //! Returns the square of ```x```
|
||||
function echoit(x) = echo(x) x; //! Echo expression and return it, useful for debugging
|
||||
function no_point(str) = chr([for(c = str(str)) if(c == ".") ord("p") else ord(c)]);//! Replace decimal point in string with 'p'
|
||||
function in(list, x) = !!len([for(v = list) if(v == x) true]); //! Returns true if ```x``` is an element in the ```list```
|
||||
function Len(x) = is_list(x) ? len(x) : 0; //! Returns the length of a list or 0 if ```x``` is not a list
|
||||
function r2sides(r) = $fn ? $fn : ceil(max(min(360/ $fa, r * 2 * PI / $fs), 5)); //! Replicates the OpenSCAD logic to calculate the number of sides from the radius
|
||||
|
@@ -24,6 +24,7 @@ include <../utils/core/core.scad>
|
||||
include <../utils/round.scad>
|
||||
|
||||
module wire_link(d, l, h = 1, tail = 3) { //! Draw a wire jumper link.
|
||||
vitamin(str("wire_link(", d, ", ", l, arg(h, 1, "h"), arg(tail, 3, "tail"), "): Wire link ", d, "mm x ", l / inch(1), "\""));
|
||||
r = d;
|
||||
$fn = 32;
|
||||
|
||||
@@ -57,13 +58,16 @@ module orientate_axial(length, height, pitch, wire_d) { // Orient horizontal or
|
||||
min_pitch = ceil((length + 1) / inch(0.1)) * inch(0.1);
|
||||
lead_pitch = pitch ? pitch : min_pitch;
|
||||
if(lead_pitch >= min_pitch) {
|
||||
wire_link(wire_d, lead_pitch, height);
|
||||
not_on_bom()
|
||||
wire_link(wire_d, lead_pitch, height);
|
||||
|
||||
translate_z(height)
|
||||
rotate([0, 90, 0])
|
||||
children();
|
||||
}
|
||||
else {
|
||||
wire_link(wire_d, lead_pitch, length + 0.7 + wire_d);
|
||||
not_on_bom()
|
||||
wire_link(wire_d, lead_pitch, length + 0.7 + wire_d);
|
||||
|
||||
translate([-pitch / 2, 0, length / 2 + 0.2])
|
||||
children();
|
||||
|
@@ -39,8 +39,6 @@ function belt_tooth_height(type) = type[4]; //! Tooth height
|
||||
function belt_pitch_height(type) = type[5] + belt_tooth_height(type); //! Offset of the pitch radius from the tips of the teeth
|
||||
|
||||
function belt_pitch_to_back(type) = belt_thickness(type) - belt_pitch_height(type); //! Offset of the back from the pitch radius
|
||||
|
||||
function no_point(str) = chr([for(c = str) if(c == ".") ord("p") else ord(c)]);
|
||||
//
|
||||
// We model the belt path at the pitch radius of the pulleys and the pitch line of the belt to get an accurate length.
|
||||
// The belt is then drawn by offseting each side from the pitch line.
|
||||
|
@@ -17,28 +17,28 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
// w d b h s h t o b b a
|
||||
// i e o o c u h u l o p
|
||||
// d p r l r b i t a s p
|
||||
// t t e e e c e d s e
|
||||
// h h w d k r e r
|
||||
// p i n s d t
|
||||
// i a e d u
|
||||
// t s i r
|
||||
// c s a e
|
||||
// h
|
||||
// w d b h s h t o b b a
|
||||
// i e o o c u h u l o p
|
||||
// d p r l r b i t a s p
|
||||
// t t e e e c e d s e
|
||||
// h h w d k r e r
|
||||
// p i n s d t
|
||||
// i a e d u
|
||||
// t s i r
|
||||
// c s a e
|
||||
// h
|
||||
//
|
||||
fan120x25= [120,25, 116,52.5, M4_dome_screw, 41, 4, 140, 9, 0, 137];
|
||||
fan80x38 = [80, 38, 75, 35.75, M4_dome_screw, 40, 4.3, 84, 7, 0, 85];
|
||||
fan80x25 = [80, 25, 75, 35.75, M4_dome_screw, 40, 4.3, 84, 7, 0, 85];
|
||||
fan70x15 = [70, 15, 66, 30.75, M4_dome_screw, 29, 3.8, 70 ,7, 0, undef];
|
||||
fan60x25 = [60, 25, 57, 25, M4_dome_screw, 31.5, 3.6, 64, 7, 0, 63];
|
||||
fan60x15 = [60, 15, 57, 25, M4_dome_screw, 29, 2.4, 60, 7, 7.7, 63];
|
||||
fan50x15 = [50, 15, 48, 20, M4_dome_screw, 25, 12.5,100,7, 0, undef];
|
||||
fan40x11 = [40, 11, 37, 16, M3_dome_screw, 25, 7.5,100, 9, 0, undef];
|
||||
fan30x10 = [30, 10, 27, 12, M3_dome_screw, 17, 10, 100, 5, 0, undef];
|
||||
fan25x10 = [25, 10, 24, 10, M2p5_pan_screw, 16, 10, 100, 5, 0, undef];
|
||||
fan17x8 = [17, 8, 16, 6.75, M2_cap_screw, 12.6, 8, 100, 7, 0, undef];
|
||||
fan120x25= [120, 25, 116,52.5, M4_dome_screw, 41, 4, 140, 9, 0, 137];
|
||||
fan80x38 = [80, 38, 75, 35.75, M4_dome_screw, 40, 4.3, 84, 7, 0, 85];
|
||||
fan80x25 = [80, 25, 75, 35.75, M4_dome_screw, 40, 4.3, 84, 7, 0, 85];
|
||||
fan70x15 = [70, 15, 66, 30.75, M4_dome_screw, 29, 3.8, 70 ,7, 0, undef];
|
||||
fan60x25 = [60, 25, 57, 25, M4_dome_screw, 31.5, 3.6, 64, 7, 0, 63];
|
||||
fan60x15 = [60, 15, 57, 25, M4_dome_screw, 29, 2.4, 60, 7, 7.7, 63];
|
||||
fan50x15 = [50, 15, 48, 20, M4_dome_screw, 25, 12.5,100, 7, 0, undef];
|
||||
fan40x11 = [40, 11, 37, 16, M3_dome_screw, 25, 7.5,100, 9, 0, undef];
|
||||
fan30x10 = [30, 10, 27, 12, M3_dome_screw, 17, 10, 100, 5, 0, undef];
|
||||
fan25x10 = [25.4,10, 24, 10, M2p5_pan_screw, 16, 10, 100, 5, 0, undef];
|
||||
fan17x8 = [17, 8, 16, 6.75, M2_cap_screw, 12.6, 8, 100, 7, 0, undef];
|
||||
|
||||
fans = [fan17x8, fan25x10, fan30x10, fan40x11, fan50x15, fan60x15, fan60x25, fan70x15, fan80x25, fan80x38, fan120x25];
|
||||
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// h t s t t t
|
||||
// h
|
||||
//
|
||||
JHeadMk5 = ["JHeadMk5", jhead, "JHead MK5", 51.2, 4.75,16, 40, grey(20), 12, 4.64, 13, [0, 2.38, -5], 20, 20];
|
||||
JHeadMk5 = ["JHeadMk5", jhead, "JHead MK5", 51.2, 4.75,16, 40, grey(20), 12, 4.64, 13, [0, 2.38, -5], 20, 20];
|
||||
E3Dv5 = ["E3Dv5", e3d, "E3D V5 direct", 70, 3.7, 16, 50.1, "silver", 12, 6, 15, [1, 5, -4.5], 14.5, 28];
|
||||
E3Dv6 = ["E3Dv6", e3d, "E3D V6 direct", 62, 3.7, 16, 42.7, "silver", 12, 6, 15, [1, 5, -4.5], 14, 21];
|
||||
E3D_clone = ["E3D_clone", e3d, "E3D clone aliexpress",66, 6.8, 16, 46, "silver", 12, 5.6, 15, [1, 5, -4.5], 14.5, 21];
|
||||
|
@@ -138,7 +138,7 @@ module jhead_hot_end_assembly(type, filament, naked = false) { //! Assembly with
|
||||
//
|
||||
// silcone tape
|
||||
//
|
||||
if(!naked)
|
||||
if(is_undef(naked) || !naked)
|
||||
color("red")
|
||||
if(exploded())
|
||||
translate([0, max(hot_end_insulator_diameter(type) / 2, heater_length(heater) / 2 - nozzle_x(heater)),
|
||||
@@ -156,7 +156,7 @@ module jhead_hot_end_assembly(type, filament, naked = false) { //! Assembly with
|
||||
//
|
||||
// Zip tie and heatshrink
|
||||
//
|
||||
if(!naked)
|
||||
if(!naked && !is_undef(naked))
|
||||
rotate(10) {
|
||||
dia = hot_end_insulator_diameter(type);
|
||||
scale([1, (bundle + dia) / dia])
|
||||
|
@@ -85,7 +85,8 @@ module meter(type, colour = "red", value = "888", display_colour = false) //! Dr
|
||||
translate([0, meter_shunt_y(type), size.z])
|
||||
vflip()
|
||||
color("#b87333")
|
||||
wire_link(shunt.y, shunt.x, shunt.z, tail = 2);
|
||||
not_on_bom()
|
||||
wire_link(shunt.y, shunt.x, shunt.z, tail = 2);
|
||||
}
|
||||
|
||||
clearance = 0.1;
|
||||
|
@@ -953,6 +953,7 @@ module pcb_component(comp, cutouts = false, angle = undef) { //! Draw pcb compon
|
||||
if(show(comp, "led")) led(comp[4], comp[5], 2.6);
|
||||
if(show(comp, "pdip")) pdip(comp[4], comp[5], param(6, false), param(7, inch(0.3)));
|
||||
if(show(comp, "ax_res")) ax_res(comp[4], comp[5], param(6, 5), param(7, 0));
|
||||
if(show(comp, "link")) wire_link(l = comp[4], h = param(5, 1), d = param(6, 0.8), tail = param(7, 3));
|
||||
if(show(comp, "D_plug")) translate_z(d_pcb_offset(comp[4])) d_plug(comp[4], pcb = true);
|
||||
if(show(comp, "molex_hdr")) molex_254(comp[4]);
|
||||
if(show(comp, "jst_xh")) jst_xh_header(jst_xh_header, comp[4], param(5, false), param(6, "white"), param(7, undef));
|
||||
|
@@ -132,8 +132,12 @@ module veroboard(type) { //! Draw specified veroboard with missing tracks and tr
|
||||
module vero_components(type, cutouts = false, angle = undef)
|
||||
for(comp = vero_components(type))
|
||||
vero_grid_pos(type, comp.x, comp.y)
|
||||
translate_z(vero_thickness(type))
|
||||
pcb_component(comp, cutouts, angle);
|
||||
if(comp[3][0] == "-")
|
||||
vflip()
|
||||
pcb_component(comp, cutouts, angle);
|
||||
else
|
||||
translate_z(vero_thickness(type))
|
||||
pcb_component(comp, cutouts, angle);
|
||||
|
||||
module vero_cutouts(type, angle = undef) vero_components(type, true, angle); //! Make cutouts to clear components
|
||||
|
||||
|
Reference in New Issue
Block a user