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

Compare commits

...

8 Commits

Author SHA1 Message Date
Chris Palmer
bc4e18d788 The assembly module now has a big parameter to force large or small views. 2020-04-04 12:06:14 +01:00
Chris Palmer
f5980b4703 Made the ground surfaces of steppers lighter. 2020-04-02 19:54:30 +01:00
Chris Palmer
7b3d7fab55 Fixed some more colour spellings 2020-03-29 21:36:11 +01:00
Chris Palmer
654571a70e Colour now always spelt colour except the call to color(). 2020-03-29 20:39:17 +01:00
Chris Palmer
e8abcde52f Removed the height parameter from linear_extrude 2020-03-29 20:18:57 +01:00
Chris Palmer
390957fdd0 Added MT3608 and TP4065 PCBs.
Perfboards now have their own row in the test to shorten the picture.
2020-03-28 10:54:06 +00:00
Chris Palmer
bde8cbe7a6 Added cutout for trimpot10. 2020-03-28 10:51:43 +00:00
Chris Palmer
fbe8533a42 Added function to get the height of pcb carriers. 2020-03-27 17:30:35 +00:00
98 changed files with 469 additions and 402 deletions

View File

@@ -51,7 +51,7 @@ $fa = 6;
$fs = extrusion_width / 2;
function round_to_layer(z) = ceil(z / layer_height) * layer_height;
// Some additional named colors
// Some additional named colours
grey20 = [0.2, 0.2, 0.2];
grey30 = [0.3, 0.3, 0.3];
grey40 = [0.4, 0.4, 0.4];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 782 KiB

After

Width:  |  Height:  |  Size: 775 KiB

View File

@@ -171,8 +171,8 @@ hot_ends_y = pulleys_y + 60;
linear_bearings_y = hot_ends_y + 50;
sheets_y = linear_bearings_y + 100;
pcbs_y = sheets_y + 40;
displays_y = pcbs_y + 150;
fans_y = displays_y + 100;
displays_y = pcbs_y + 170;
fans_y = displays_y + 80;
transformers_y = fans_y + 120;
psus_y = transformers_y + 190;
@@ -380,7 +380,7 @@ translate([x4 + 150, belts_y + 58]) {
translate([x4, rails_y + 130])
rails();
translate([800, fans_y])
translate([800, fans_y + 50])
cable_strips();
translate([x4, kp_pillow_blocks_y])

View File

@@ -129,7 +129,7 @@ module box_corner_profile(type) { //! Generates the corner profile STL for 3D pr
length = box_height(type) - 2 * box_margin(type);
difference() {
linear_extrude(height = length, center = true, convexity = 5)
linear_extrude(length, center = true, convexity = 5)
box_corner_profile_2D(type);
for(z = [-1, 1])
@@ -148,24 +148,24 @@ module box_corner_profile_section(type, section, sections) { //! Generates inter
difference() {
union() {
linear_extrude(height = h, convexity = 5)
linear_extrude(h, convexity = 5)
box_corner_profile_2D(type);
if(!last_section) // male end always at the top
translate_z(section_length - 1)
for(i = [0 : 1], offset = i * layer_height)
linear_extrude(height = overlap + 1 - offset)
linear_extrude(overlap + 1 - offset)
offset(1 + offset - layer_height)
offset(-overlap_wall - 1)
box_corner_profile_2D(type);
}
if(section > 0)
translate_z(last_section ? h : 0) { // female at bottom unless last section
linear_extrude(height = 2 * (overlap + layer_height), center = true, convexity = 5)
linear_extrude(2 * (overlap + layer_height), center = true, convexity = 5)
offset(-overlap_wall)
box_corner_profile_2D(type);
linear_extrude(height = 2 * layer_height, center = true, convexity = 5)
linear_extrude(2 * layer_height, center = true, convexity = 5)
offset(-overlap_wall + layer_height)
box_corner_profile_2D(type);
}
@@ -223,7 +223,7 @@ module box_bezel(type, bottom) { //! Generates top and bottom bezel STLs
// slots for side panels
//
translate_z(-box_profile_overlap(type))
linear_extrude(height = 2 * box_profile_overlap(type), center = true)
linear_extrude(2 * box_profile_overlap(type), center = true)
for(i = [-1, 1]) {
translate([i * (box_width(type) / 2 + t / 2 - sheet_slot_clearance / 2), 0])
square([t, box_depth(type) - 2 * box_corner_gap(type)], center = true);
@@ -240,7 +240,7 @@ module box_bezel(type, bottom) { //! Generates top and bottom bezel STLs
// leave plastic over the corner profiles
//
translate_z(-box_profile_overlap(type) - 1)
linear_extrude(height = box_profile_overlap(type) + box_corner_gap(type) + 2)
linear_extrude(box_profile_overlap(type) + box_corner_gap(type) + 2)
union() {
difference() {
square([box_width(type) - 2 * box_inset(type),
@@ -273,7 +273,7 @@ module box_bezel_section(type, bottom, rows, cols, x, y) { //! Generates interlo
end_clearance = 0.5;
module male() {
rotate([90, 0, 90])
linear_extrude(height = dowel_length - 2 * end_clearance, center = true)
linear_extrude(dowel_length - 2 * end_clearance, center = true)
difference() {
union() {
h = dh - layer_height;

View File

@@ -59,7 +59,7 @@ module ribbon_grommet(ways, thickness) { //! Generate the STL for a printed ribb
union() {
for(side = [-1, 1])
translate_z(side * (width - wall) / 2)
linear_extrude(height = wall, center = true, convexity = 5)
linear_extrude(wall, center = true, convexity = 5)
difference() {
hull() {
translate([-length / 2, 0])
@@ -73,7 +73,7 @@ module ribbon_grommet(ways, thickness) { //! Generate the STL for a printed ribb
square([slot_length, slot_height]);
}
linear_extrude(height = width -1, center = true)
linear_extrude(width -1, center = true)
difference() {
ribbon_grommet_hole(ways, expand = false, h = 0);
@@ -170,14 +170,14 @@ module mouse_grommet(r, thickness) { //! Make the STL for a mouse grommet
union() {
for(side = [-1, 1])
translate_z(side * (width - wall) / 2)
linear_extrude(height = wall, center = true)
linear_extrude(wall, center = true)
difference() {
mouse_grommet_hole(r, z = r + wall, h = 0, expand = wall + overlap);
translate([0, wall])
mouse_grommet_hole(r, h = 0, expand = 0);
}
linear_extrude(height = width - 1, center = true)
linear_extrude(width - 1, center = true)
difference() {
mouse_grommet_hole(r, h = 0, z = r + wall, expand = wall);

View File

@@ -24,6 +24,8 @@ $extrusion_width = 0.5;
include <../utils/core/core.scad>
function carrier_height() = 3; //! Height of PCB carrier
module ESP12F_carrier_stl() { //! Generate the STL for an ESP12 carrier
stl("ESP12F_carrier");
pins = 8;
@@ -33,7 +35,7 @@ module ESP12F_carrier_stl() { //! Generate the STL for an ESP12 carrier
hole2 = pitch2 - 3 * extrusion_width;
length1 = (pins - 1) * pitch1 + hole + squeezed_wall * 2;
length2 = (pins - 1) * pitch2 + hole + squeezed_wall * 2;
height = 3;
height = carrier_height();
wpitch1 = (pins - 1) * pitch1;
wpitch2 = ceil(wpitch1 / 2.54) * 2.54;
@@ -71,7 +73,7 @@ module TP4056_carrier_stl() { //! Generate the STL for an TP4056 carrier, two re
pins = 6;
length1 = outer_pitch + hole + squeezed_wall * 2;
length2 = (pins - 1) * pitch + hole + squeezed_wall * 2;
height = 3;
height = carrier_height();
width = hole + squeezed_wall * 2;
spacing = inch(0.9);
@@ -106,7 +108,7 @@ module MT3608_carrier_stl() { //! Generate the STL for an MT3608 carrier, two re
l_pitch_top = 30.855;
l_pitch_bot = inch(1.2);
hole = 1;
height = 3;
height = carrier_height();
wall = 2 * extrusion_width;
width = hole + 2 * wall;
offset = (l_pitch_top - l_pitch_bot) / 2;

View File

@@ -60,7 +60,7 @@ module door_hinge(door_thickness) { //! Generates STL fo
union() {
rotate([90, 0, 0])
linear_extrude(height = width, center = true)
linear_extrude(width, center = true)
difference() {
hull() {
translate([dia / 2, thickness + door_thickness / 2])
@@ -76,7 +76,7 @@ module door_hinge(door_thickness) { //! Generates STL fo
translate([dia / 2, thickness + door_thickness / 2])
teardrop(r = screw_clearance_radius(pin_screw), h = 0);
}
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
hull() {
translate([0, -width / 2])
@@ -108,7 +108,7 @@ module door_hinge_stat_stl() { //! Generates the STL for the stationary part
stl("door_hinge_stat");
union() {
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
rounded_square([stat_length, stat_width], rad);
@@ -117,7 +117,7 @@ module door_hinge_stat_stl() { //! Generates the STL for the stationary part
}
rotate([90, 0, 0])
linear_extrude(height = stat_width, center = true)
linear_extrude(stat_width, center = true)
difference() {
hull() {
translate([0, dia / 2 + stat_clearance])

View File

@@ -81,7 +81,7 @@ module fixing_block(screw = def_screw) { //! Generate the STL
difference() {
union() {
linear_extrude(height = fb_height, convexity = 5)
linear_extrude(fb_height, convexity = 5)
difference() {
hull() {
for(side = [-1, 1]) {

View File

@@ -82,7 +82,7 @@ module hinge_male(type, female = false) { //! The half with the stationary
teardrop_r = kr / cos(22.5); // The corner on the teardrop
inset = sqrt(sqr(teardrop_r + gap) - sqr(kr - t)) - kr;
linear_extrude(height =t)
linear_extrude(t)
difference() {
hull() {
for(side = [-1, 1])
@@ -102,7 +102,7 @@ module hinge_male(type, female = false) { //! The half with the stationary
rotate([90, 0, -90])
for(z = [0 : (female ? fn : mn) - 1])
translate_z(-dir * w / 2 + z * dir * pitch + (female ? -fw - mw - gap : 0))
linear_extrude(height = female ? fw : mw)
linear_extrude(female ? fw : mw)
difference() {
hull() {
rotate(180)

View File

@@ -56,7 +56,7 @@ module foot(type = foot) { //! Generate STL
circle4n(r);
}
}
linear_extrude(height = t)
linear_extrude(t)
difference() {
circle(r1 + eps);
@@ -116,7 +116,7 @@ module insert_foot(type = insert_foot) { //! Generate STL for foot with insert
}
}
}
linear_extrude(height = h2 + eps)
linear_extrude(h2 + eps)
difference() {
circle(r5 + eps);

View File

@@ -62,7 +62,7 @@ module pcb_mount_ring()
}
module pcb_mount_washer_stl() //! A plastic washer to clamp a PCB
linear_extrude(height = washer_thickness)
linear_extrude(washer_thickness)
pcb_mount_ring();
module pcb_mount(pcb, height = 5, washers = true) { //! Make the STL of a pcb mount for the specified PCB.
@@ -85,10 +85,10 @@ module pcb_mount(pcb, height = 5, washers = true) { //! Make the STL of a pcb mo
cube([pillar_x_pitch(pcb) - 2 * wall, frame_w, frame_t], center = true);
pcb_mount_screw_positions(pcb)
linear_extrude(height = height)
linear_extrude(height)
pcb_mount_ring();
linear_extrude(height = height + pcb_thickness(pcb) - layer_height)
linear_extrude(height + pcb_thickness(pcb) - layer_height)
difference() {
pcb_mount_screw_positions(pcb)
pcb_mount_ring();

View File

@@ -129,7 +129,7 @@ module pbox_base(type) { //! Generate the STL for the base
t = pbox_base(type);
difference() {
union() {
linear_extrude(height = t)
linear_extrude(t)
offset(base_outset - 0.2)
pbox_inner_shape(type);
@@ -157,7 +157,7 @@ module pbox(type) { //! Generate the STL for the main case
difference() {
union() {
linear_extrude(height = total_height)
linear_extrude(total_height)
offset(wall / 2) pbox_mid_shape(type);
if($children > 2)
@@ -166,11 +166,11 @@ module pbox(type) { //! Generate the STL for the main case
difference() {
translate_z(top_thickness)
union() {
linear_extrude(height = height + eps)
linear_extrude(height + eps)
offset(-wall / 2) pbox_mid_shape(type);
translate_z(height) // Recess for the base
linear_extrude(height = total_height - height)
linear_extrude(total_height - height)
offset(base_outset)
pbox_inner_shape(type);
}
@@ -181,11 +181,11 @@ module pbox(type) { //! Generate the STL for the main case
rounded_rectangle([pbox_width(type) + 2 * outset, pbox_depth(type) + 2 * outset, ledge_h], 1, center = false);
hull() {
linear_extrude(height = ledge_h + eps)
linear_extrude(ledge_h + eps)
offset(ledge_inset)
pbox_inner_shape(type);
linear_extrude(height = eps)
linear_extrude(eps)
offset(ledge_outset)
pbox_inner_shape(type);
}

View File

@@ -113,21 +113,21 @@ module psu_shroud(type, cable_d, name, cables = 1) { //! Generate the STL file f
translate([centre_x, -centre_y]) {
rounded_rectangle([depth - eps, width - eps, top], rad, center = false);
linear_extrude(height = height)
linear_extrude(height)
difference() {
shape();
translate([depth / 2, width / 2 - 5])
square([2 * (depth - extent + terminal_clearance), 10], center = true);
}
linear_extrude(height = height - terminal_block_height(tb) - psu_terminal_block_z(type) - terminal_clearance)
linear_extrude(height - terminal_block_height(tb) - psu_terminal_block_z(type) - terminal_clearance)
shape();
}
// cable slots
for(i = [0 : 1 : cables - 1])
translate([centre_x - depth / 2 + wall / 2, -centre_y + (i - cables / 2 + 0.5) * psu_shroud_cable_pitch(cable_d), height / 2])
rotate([90, 0, 90])
linear_extrude(height = wall, center = true)
linear_extrude(wall, center = true)
difference() {
square([cable_d + eps, height], center = true);

View File

@@ -48,7 +48,7 @@ module screw_knob(screw) { //! Generate the STL for a knob to fit the specified
rotate(45)
circle(r = nut_trap_radius(screw_nut(screw)), $fn = 6);
}
linear_extrude(height = knob_thickness, convexity = 3)
linear_extrude(knob_thickness, convexity = 3)
difference() {
polygon(points = [for(a = [0 : 359]) [wave(a) * sin(a), wave(a) * cos(a)]]);

View File

@@ -52,12 +52,12 @@ module socket_box(type) { //! Generate STL of the backbox for the specified sock
insert_hole_radius = insert_hole_radius(insert);
difference() {
linear_extrude(height = height, convexity = 5)
linear_extrude(height, convexity = 5)
face_plate(type);
difference() {
translate_z(base_thickness)
linear_extrude(height = height, convexity = 5)
linear_extrude(height, convexity = 5)
offset(-wall) offset(1) face_plate(type);
for(side = [-1, 1])

View File

@@ -73,7 +73,7 @@ module ssr_shroud(type, cable_d, name) { //! Generate the STL file for a spec
translate([center_x, 0]) {
rounded_rectangle([depth - eps, width - eps, top], rad, center = false);
linear_extrude(height = height) difference() {
linear_extrude(height) difference() {
round(or = wall / 2 - eps, ir = 0) difference() {
rounded_square([depth, width], rad);
@@ -91,7 +91,7 @@ module ssr_shroud(type, cable_d, name) { //! Generate the STL file for a spec
for(side = [-1, 1])
translate([cable_x, side * (width / 2 - wall / 2), height / 2])
rotate([90, 0, 0])
linear_extrude(height = wall, center = true)
linear_extrude(wall, center = true)
difference() {
square([cable_d + eps, height], center = true);

View File

@@ -77,7 +77,7 @@ module strap(length, type = strap) { //! Generate the STL for the rubber strap
len = length - 2 * (wall + clearance);
w = strap_width(type);
linear_extrude(height = strap_thickness(type), convexity = 3)
linear_extrude(strap_thickness(type), convexity = 3)
difference() {
rounded_square([len, w], w / 2 - eps);
@@ -119,12 +119,12 @@ module strap_end(type = strap) { //! Generate the STL for end piece
}
union() {
linear_extrude(height = z1)
linear_extrude(z1)
with_hole()
outer();
translate_z(z1)
linear_extrude(height = strap_height(type) - z1)
linear_extrude(strap_height(type) - z1)
difference() {
outer();
@@ -137,11 +137,11 @@ module strap_end(type = strap) { //! Generate the STL for end piece
}
}
linear_extrude(height = strap_height(type) - layer_height)
linear_extrude(strap_height(type) - layer_height)
with_hole()
strap_boss_shape(type);
linear_extrude(height = z2)
linear_extrude(z2)
with_hole()
offset(cnc_bit_r)
offset(-step - cnc_bit_r)

View File

@@ -1905,7 +1905,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| Module | Description |
|:--- |:--- |
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and color |
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
| ```flat_flex(cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
| ```flex(cutout = false)``` | Draw flexistrip connector |
@@ -1925,7 +1925,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| ```rj45(cutout = false)``` | Draw RJ45 Ethernet connector |
| ```standoff(h, d, h2, d2)``` | Draw a standoff |
| ```terminal_35(ways, colour = "blue")``` | Draw 3.5mm terminal block |
| ```trimpot10(vertical, coutout = false)``` | Draw a ten turn trimpot |
| ```trimpot10(vertical, cutout = false)``` | Draw a ten turn trimpot |
| ```uSD(size, cutout = false)``` | Draw uSD socket |
| ```usb_Ax1(cutout = false)``` | Draw USB type A single socket |
| ```usb_Ax2(cutout = false)``` | Draw USB type A dual socket |
@@ -1991,7 +1991,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| Module | Description |
|:--- |:--- |
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and color |
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
| ```flat_flex(cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
| ```flex(cutout = false)``` | Draw flexistrip connector |
@@ -2011,7 +2011,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| ```rj45(cutout = false)``` | Draw RJ45 Ethernet connector |
| ```standoff(h, d, h2, d2)``` | Draw a standoff |
| ```terminal_35(ways, colour = "blue")``` | Draw 3.5mm terminal block |
| ```trimpot10(vertical, coutout = false)``` | Draw a ten turn trimpot |
| ```trimpot10(vertical, cutout = false)``` | Draw a ten turn trimpot |
| ```uSD(size, cutout = false)``` | Draw uSD socket |
| ```usb_Ax1(cutout = false)``` | Draw USB type A single socket |
| ```usb_Ax2(cutout = false)``` | Draw USB type A dual socket |
@@ -2033,6 +2033,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 1 | ```pcb(EnviroPlus)``` | Enviro+ |
| 1 | ```pcb(ExtruderPCB)``` | Extruder connection PCB |
| 1 | ```pcb(Keyes5p1)``` | Keyes5.1 Arduino Uno expansion board |
| 1 | ```pcb(MT3608)``` | MT3608 boost converter module |
| 1 | ```pcb(Melzi)``` | Melzi electronics |
| 4 | | Micro SD card |
| 1 | ```molex_254(2)``` | Molex KK header 2 way |
@@ -2052,15 +2053,20 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 1 | ```pcb(RAMPSEndstop)``` | RAMPS Endstop Switch |
| 1 | ```pcb(RPI3)``` | Raspberry Pi 3 |
| 1 | ```pcb(RPI0)``` | Raspberry Pi Zero |
| 16 | ```screw(M2_cap_screw, 25)``` | Screw M2 cap x 25mm |
| 12 | ```screw(M2_cap_screw, 16)``` | Screw M2 cap x 16mm |
| 4 | ```screw(M2_cap_screw, 20)``` | Screw M2 cap x 20mm |
| 2 | ```screw(M2p5_cap_screw, 16)``` | Screw M2.5 cap x 16mm |
| 12 | ```screw(M2p5_cap_screw, 20)``` | Screw M2.5 cap x 20mm |
| 4 | ```screw(M2p5_cap_screw, 20)``` | Screw M2.5 cap x 20mm |
| 4 | ```screw(M2p5_cap_screw, 25)``` | Screw M2.5 cap x 25mm |
| 4 | ```screw(M2p5_cap_screw, 30)``` | Screw M2.5 cap x 30mm |
| 4 | ```screw(M2p5_pan_screw, 20)``` | Screw M2.5 pan x 20mm |
| 8 | ```screw(M2p5_pan_screw, 25)``` | Screw M2.5 pan x 25mm |
| 4 | ```screw(M2p5_pan_screw, 35)``` | Screw M2.5 pan x 35mm |
| 8 | ```screw(M3_cap_screw, 30)``` | Screw M3 cap x 30mm |
| 12 | ```screw(M2p5_pan_screw, 25)``` | Screw M2.5 pan x 25mm |
| 4 | ```screw(M3_cap_screw, 16)``` | Screw M3 cap x 16mm |
| 4 | ```screw(M3_cap_screw, 30)``` | Screw M3 cap x 30mm |
| 4 | ```screw(M3_cap_screw, 35)``` | Screw M3 cap x 35mm |
| 12 | ```screw(M4_cap_screw, 35)``` | Screw M4 cap x 35mm |
| 8 | ```screw(M4_cap_screw, 30)``` | Screw M4 cap x 30mm |
| 4 | ```screw(M4_cap_screw, 35)``` | Screw M4 cap x 35mm |
| 1 | ```pcb(TP4056)``` | TP4056 Li-lon Battery charger module |
| 3 | ```terminal_35(2)``` | Terminal block 2 way 3.5mm |
| 2 | ```green_terminal(gt_2p54, 4)``` | Terminal block 4 way 0.1" |
| 1 | | USB A to Mini B lead |
@@ -2073,24 +2079,24 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
### Printed
| Qty | Filename |
| ---:|:--- |
| 4 | pcb_spacer20140.stl |
| 4 | pcb_spacer20150.stl |
| 4 | pcb_spacer20160.stl |
| 4 | pcb_spacer20170.stl |
| 4 | pcb_spacer2060.stl |
| 4 | pcb_spacer2070.stl |
| 4 | pcb_spacer2080.stl |
| 4 | pcb_spacer2090.stl |
| 4 | pcb_spacer25100.stl |
| 4 | pcb_spacer25110_2.stl |
| 4 | pcb_spacer25120_2.stl |
| 4 | pcb_spacer25110.stl |
| 4 | pcb_spacer25120.stl |
| 4 | pcb_spacer25130_2.stl |
| 4 | pcb_spacer25240.stl |
| 2 | pcb_spacer2550.stl |
| 4 | pcb_spacer2580.stl |
| 4 | pcb_spacer2590.stl |
| 4 | pcb_spacer30180.stl |
| 4 | pcb_spacer30190.stl |
| 4 | pcb_spacer30230.stl |
| 4 | pcb_spacer25140_2.stl |
| 4 | pcb_spacer25150_2.stl |
| 4 | pcb_spacer25170.stl |
| 2 | pcb_spacer2570.stl |
| 4 | pcb_spacer30160.stl |
| 4 | pcb_spacer30210.stl |
| 4 | pcb_spacer3050.stl |
| 4 | pcb_spacer40180.stl |
| 4 | pcb_spacer40190.stl |
| 4 | pcb_spacer40200.stl |
| 4 | pcb_spacer40210.stl |
| 4 | pcb_spacer40220.stl |
<a href="#top">Top</a>
@@ -2381,10 +2387,10 @@ Linear rails with carriages.
### Modules
| Module | Description |
|:--- |:--- |
| ```carriage(type, rail, end_color = grey20, wiper_color = grey20)``` | Draw the specified carriage |
| ```carriage(type, rail, end_colour = grey20, wiper_colour = grey20)``` | Draw the specified carriage |
| ```carriage_hole_positions(type)``` | Position children over screw holes |
| ```rail(type, length)``` | Draw the specified rail |
| ```rail_assembly(type, length, pos, carriage_end_color = grey20, carriage_wiper_color = grey20)``` | Rail and carriage assembly |
| ```rail_assembly(type, length, pos, carriage_end_colour = grey20, carriage_wiper_colour = grey20)``` | Rail and carriage assembly |
| ```rail_hole_positions(type, length, first = 0, screws = 100, both_ends = true)``` | Position children over screw holes |
| ```rail_screws(type, length, thickness, screws = 100)``` | Place screws in the rail |
@@ -2743,7 +2749,7 @@ The "Soft" parameter can be used to determinesif the sheet material needs machin
* If soft, wood screws will be used, with a pilot hole.
* If not soft, either tapped holes or a clearance hole and nuts will be used to retain screws.
The "Color" parameter is a quad-array: [R, G, B, Alpha], or can be a named color, see [OpenSCAD_User_Manual](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#color).
The "Colour" parameter is a quad-array: [R, G, B, Alpha], or can be a named colour, see [OpenSCAD_User_Manual](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#color).
For speed sheets should be modelled in 2D by subtracting holes from 2D templates made by ```sheet_2D()``` and then extruded to 3D with ```render_2D_sheet()```.
Note that modules that drill holes will return a 2D object if ```h``` is set to 0 to facilitate this.
@@ -2765,8 +2771,8 @@ Note that modules that drill holes will return a 2D object if ```h``` is set to
### Modules
| Module | Description |
|:--- |:--- |
| ```render_2D_sheet(type, color = false)``` | Extrude a 2D sheet template and give it the correct colour |
| ```render_sheet(type, color = false)``` | Render a sheet in the correct colour after holes have been subtracted |
| ```render_2D_sheet(type, colour = false)``` | Extrude a 2D sheet template and give it the correct colour |
| ```render_sheet(type, colour = false)``` | Render a sheet in the correct colour after holes have been subtracted |
| ```sheet(type, w, d, corners = [0, 0, 0, 0])``` | Draw specified sheet |
| ```sheet_2D(type, w, d, corners = [0, 0, 0, 0])``` | 2D sheet template with specified size and optionally rounded corners |
@@ -3486,7 +3492,7 @@ Just a BOM entry at the moment and cable bundle size functions for holes, plus c
| ```cable_tie_holes(cable_r, h = 100)``` | Holes to thread a ziptie through a panel to make a cable tie. |
| ```mouse_hole(cable, h = 100, teardrop = false)``` | A mouse hole to allow a panel to go over a wire bundle. |
| ```ribbon_cable(ways, length)``` | Add ribbon cable to the BOM |
| ```wire(color, strands, length, strand = 0.2)``` | Add stranded wire to the BOM |
| ```wire(colour, strands, length, strand = 0.2)``` | Add stranded wire to the BOM |
![wire](tests/png/wire.png)
@@ -3800,6 +3806,11 @@ Adapts ESP12 modules and various small PCBs to 0.1" grid. See <https://hydrarapt
[tests/carriers.scad](tests/carriers.scad) Code for this example.
### Functions
| Function | Description |
|:--- |:--- |
| ```carrier_height()``` | Height of PCB carrier |
### Modules
| Module | Description |
|:--- |:--- |
@@ -5163,8 +5174,12 @@ Simple tube or ring
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.
The example below shows how to define a vitamin and incorporate it into an assembly with sub-assemblies and make an exploded view. The resulting flat BOM is shown but
heirachical BOMs are also generated for real projects.
Assembly views shown in the instructions can be large or small and this is deduced by looking at the size of the printed parts involved and if any routed
parts are used.
This heuristic isn't always correct, so the default can be overridden by setting the ```big``` parameter of ```assembly``` to ```true``` or ```false```.
The example below shows how to define a vitamin and incorporate it into an assembly with sub-assemblies and make an exploded view.
The resulting flat BOM is shown but heirachical BOMs are also generated for real projects.
[utils/core/bom.scad](utils/core/bom.scad) Implementation.
@@ -5183,7 +5198,7 @@ heirachical BOMs are also generated for real projects.
### Modules
| Module | Description |
|:--- |:--- |
| ```assembly(name)``` | Name an assembly that will appear on the BOM, there needs to a module named ```<name>_assembly``` to make it |
| ```assembly(name, big = undef)``` | Name an assembly that will appear on the BOM, there needs to a module named ```<name>_assembly``` to make it. ```big``` can force big or small assembly diagrams. |
| ```dxf(name)``` | Name a dxf that will appear on the BOM, there needs to a module named ```<name>_dxf``` to make it |
| ```explode(d, explode_children = false, offset = [0,0,0])``` | Explode children by specified Z distance or vector ```d```, option to explode grand children |
| ```hidden()``` | Make item invisible, except on the BOM |

View File

@@ -29,6 +29,7 @@ import openscad
from time import *
from set_config import *
import json
import re
def find_scad_file(mname):
for filename in os.listdir(source_dir):
@@ -48,6 +49,7 @@ def find_scad_file(mname):
class BOM:
def __init__(self, name):
self.name = name
self.big = None
self.count = 1
self.vitamins = {}
self.printed = {}
@@ -60,6 +62,7 @@ class BOM:
assemblies[ass] = self.assemblies[ass].count
return {
"name" : self.name,
"big" : self.big,
"count" : self.count,
"assemblies" : assemblies,
"vitamins" : self.vitamins,
@@ -80,11 +83,15 @@ class BOM:
else:
parts[s] = 1
def add_assembly(self, ass):
def add_assembly(self, ass, args = []):
if ass in self.assemblies:
self.assemblies[ass].count += 1
else:
self.assemblies[ass] = BOM(ass)
bom = BOM(ass)
for arg in args:
arg = arg.replace('true', 'True').replace('false', 'False').replace('undef', 'None')
exec('bom.' + arg, locals())
self.assemblies[ass] = bom
def make_name(self, ass):
if self.count == 1:
@@ -161,17 +168,22 @@ def parse_bom(file = "openscad.log", name = None):
main = BOM(name)
main.ordered_assemblies = []
stack = []
prog = re.compile(r'^(.*)\((.*)\)$')
for line in open(file):
pos = line.find('ECHO: "~')
if pos > -1:
s = line[pos + 8 : line.rfind('"')]
if s[-1] == '{':
ass = s[:-1]
args = []
match = prog.match(ass) #look for (...)
if match:
ass = match.group(1)
args = match.group(2).split(',')
if stack:
main.assemblies[stack[-1]].add_assembly(ass) #add to nested BOM
stack.append(ass)
main.add_assembly(ass) #add to flat BOM
main.add_assembly(ass, args) #add to flat BOM
if ass in main.ordered_assemblies:
main.ordered_assemblies.remove(ass)
main.ordered_assemblies.insert(0, ass)

View File

@@ -52,22 +52,23 @@ def bom_to_assemblies(bom_dir, bounds_map):
# Decide if we need big or small assembly pictures
#
for bom in flat_bom:
big = False
for ass in bom["assemblies"]:
for b in flat_bom:
if b["name"] == ass:
if b["big"]:
if bom["big"] == None:
big = False
for ass in bom["assemblies"]:
for b in flat_bom:
if b["name"] == ass:
if b["big"]:
big = True
break
if not big:
for stl in bom["printed"]:
bounds = bounds_map[stl]
width = bounds[1][0] - bounds[0][0]
depth = bounds[1][1] - bounds[0][1]
if max(width, depth) > 80:
big = True
break
if not big:
for stl in bom["printed"]:
bounds = bounds_map[stl]
width = bounds[1][0] - bounds[0][0]
depth = bounds[1][1] - bounds[0][1]
if max(width, depth) > 80:
big = True
break
bom["big"] = big or bom["routed"]
break
bom["big"] = big or bom["routed"]
#
# Remove the main assembly if it is a shell
#

View File

@@ -21,11 +21,16 @@ include <../vitamins/pcbs.scad>
use <../utils/layout.scad>
module pcbs()
module pcbs() {
layout([for(p = pcbs) pcb_width(p)], 10)
translate([0, pcb_length(pcbs[$i]) / 2])
rotate(90)
pcb_assembly(pcbs[$i], 5 + $i, 3);
translate([0, 120])
layout([for(p = perfboards) pcb_length(p)], 10)
translate([0, -pcb_width(perfboards[$i]) / 2])
pcb_assembly(perfboards[$i], 5 + $i, 3);
}
if($preview)
pcbs();

View File

@@ -20,7 +20,7 @@ include <../global_defs.scad>
use <../utils/dogbones.scad>
module dogbones() {
#linear_extrude(height = eps)
#linear_extrude(eps)
dogbone_square([10, 20]);
#translate([15, 0])

View File

@@ -20,7 +20,7 @@
include <../utils/core/core.scad>
module globals() {
linear_extrude(height = eps) {
linear_extrude(eps) {
semi_circle(r = 10);
translate([30, 0])

View File

@@ -22,7 +22,7 @@ use <../utils/layout.scad>
diams = [3, 7, 5, 11];
module layouts() {
linear_extrude(height = eps)
linear_extrude(eps)
layout(diams, gap = 1)
circle(d = diams[$i]);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -34,7 +34,7 @@ module polyholes() {
children();
}
color(pp1_colour) linear_extrude(height = 3, center = true)
color(pp1_colour) linear_extrude(3, center = true)
difference() {
square([100, 27]);

View File

@@ -22,7 +22,7 @@ use <../utils/quadrant.scad>
module quadrants() {
linear_extrude(height = eps)
linear_extrude(eps)
quadrant(10, 4);
}

View File

@@ -28,14 +28,14 @@ module shape()
}
module rounds() {
linear_extrude(height = eps)
linear_extrude(eps)
round(or = 4, ir = 2)
shape();
translate([50, 0])
round_3D(or = 4, ir = 2, chamfer_base = true, $fn = 16)
linear_extrude(height = 40, center = true)
linear_extrude(40, center = true)
shape();
}

View File

@@ -22,7 +22,7 @@ use <../utils/rounded_cylinder.scad>
module rounded_cylinders() {
linear_extrude(height = eps)
linear_extrude(eps)
rounded_corner(10, 20, 3, 5);
translate([30, 10])

View File

@@ -46,7 +46,7 @@ module rounded_polygons() {
length = rounded_polygon_length(profile, tangents);
rotate([70, 0, 315])
linear_extrude(height = eps)
linear_extrude(eps)
rounded_polygon(profile, tangents);
translate([0, -10])

View File

@@ -20,7 +20,7 @@
include <../utils/core/core.scad>
module rounded_rectangles() {
linear_extrude(height = eps)
linear_extrude(eps)
rounded_square([30, 20], 3);
translate([40, 0])

View File

@@ -22,7 +22,7 @@ use <../utils/sector.scad>
module sectors() {
linear_extrude(height = eps)
linear_extrude(eps)
sector(50, 45, 180);
}

View File

@@ -23,7 +23,7 @@ module teardrops() {
color(pp1_colour)
rotate([90, 0, -45])
difference() {
linear_extrude(height = 3) {
linear_extrude(3) {
difference() {
square([80, 40]);

View File

@@ -22,7 +22,7 @@ use <../utils/tube.scad>
module tubes() {
linear_extrude(height = eps)
linear_extrude(eps)
ring(10, 8);
translate([50, 10])

View File

@@ -56,7 +56,7 @@ module wires() {
color(pp1_colour) {
rotate([90, 0, 90])
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
translate([-w / 2, 0])
square([w, h]);
@@ -65,7 +65,7 @@ module wires() {
}
translate_z(-thickness)
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
translate([thickness -d, -w / 2])
square([d, w]);

View File

@@ -26,7 +26,7 @@ include <../utils/core/core.scad>
module label(str, scale = 0.25, valign = "baseline", halign = "left") //! Draw text that always faces the camera
color("black")
%rotate($vpr != [0, 0, 0] ? $vpr : [70, 0, 315])
linear_extrude(height = eps)
linear_extrude(eps)
scale(scale)
text(str, valign = valign, halign = halign);

View File

@@ -21,8 +21,12 @@
//! 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.
//!
//! The example below shows how to define a vitamin and incorporate it into an assembly with sub-assemblies and make an exploded view. The resulting flat BOM is shown but
//! heirachical BOMs are also generated for real projects.
//! Assembly views shown in the instructions can be large or small and this is deduced by looking at the size of the printed parts involved and if any routed
//! parts are used.
//! This heuristic isn't always correct, so the default can be overridden by setting the ```big``` parameter of ```assembly``` to ```true``` or ```false```.
//!
//! The example below shows how to define a vitamin and incorporate it into an assembly with sub-assemblies and make an exploded view.
//! The resulting flat BOM is shown but heirachical BOMs are also generated for real projects.
//
function bom_mode(n = 1) = $_bom >= n && (is_undef($on_bom) || $on_bom); //! Current BOM mode, 0 = none, 1 = printed and routed parts and assemblies, 2 includes vitamins as well
function exploded() = is_undef($exploded_parent) ? $exploded : 0; //! Returns the value of ```$exploded``` if it is defined, else ```0```
@@ -80,10 +84,11 @@ module pose_vflip(exploded = undef) //! Pose an STL or assembly for render
children();
module assembly(name) { //! Name an assembly that will appear on the BOM, there needs to a module named ```<name>_assembly``` to make it
if(bom_mode())
echo(str("~", name, "_assembly{"));
module assembly(name, big = undef) { //! Name an assembly that will appear on the BOM, there needs to a module named ```<name>_assembly``` to make it. ```big``` can force big or small assembly diagrams.
if(bom_mode()) {
args = is_undef(big) ? "" : str("(big=", big, ")");
echo(str("~", name, "_assembly", args, "{"));
}
no_pose()
if(is_undef($child_assembly))
let($child_assembly = true)

View File

@@ -43,7 +43,7 @@ module ellipse(xr, yr) scale([1, yr / xr]) circle4n(xr);
module extrude_if(h, center = true) //! Extrudes 2D object to 3D when ```h``` is nonzero, otherwise leaves it 2D
if(h)
linear_extrude(height = h, center = center, convexity = 2) // 3D
linear_extrude(h, center = center, convexity = 2) // 3D
children();
else
children(); // 2D

View File

@@ -28,6 +28,6 @@ module rounded_square(size, r, center = true) //! Like ```square()``` but with w
module rounded_rectangle(size, r, center = true, xy_center = true) //! Like ```cube()``` but corners rounded in XY plane and separate centre options for xy and z.
{
linear_extrude(height = size[2], center = center)
linear_extrude(size[2], center = center)
rounded_square([size[0], size[1]], r, xy_center);
}

View File

@@ -47,7 +47,7 @@ module hanging_hole(z, ir, h = 100, h2 = 100) { //! Hole radius ```ir``` hanging
difference() {
translate_z(-below)
linear_extrude(height = below + 2 * layer_height)
linear_extrude(below + 2 * layer_height)
children();
rotate(infill_angle)

View File

@@ -29,5 +29,5 @@ module ring(or, ir) //! Create a ring with specified external and internal radii
}
module tube(or, ir, h, center = true) //! Create a tube with specified external and internal radii and height ```h```
linear_extrude(height = h, center = center, convexity = 5)
linear_extrude(h, center = center, convexity = 5)
ring(or, ir);

View File

@@ -44,7 +44,7 @@ module ball_bearing(type) { //! Draw a ball bearing
id = bb_bore(type);
module tube(od, id, h)
linear_extrude(height = h, center = true, convexity = 5)
linear_extrude(h, center = true, convexity = 5)
difference() {
circle(d = od);
circle(d = id);

View File

@@ -75,7 +75,7 @@ module battery(type) { //! Draw a battery
if(battery_usb_offset(type))
translate([battery_diameter(type) / 2, 0, len / 2 - battery_usb_offset(type) + h / 2])
rotate([-90, 0, 90])
linear_extrude(height = l + 1)
linear_extrude(l + 1)
offset(delta = t)
D();
}
@@ -87,14 +87,14 @@ module battery(type) { //! Draw a battery
if(battery_usb_offset(type))
translate([battery_diameter(type) / 2 - 1, 0, len / 2 - battery_usb_offset(type) + h / 2])
rotate([-90, 0, 90]) {
linear_extrude(height = l)
linear_extrude(l)
difference() {
offset(t) D();
D();
}
translate_z(l - 1)
linear_extrude(height = 1)
linear_extrude(1)
D();
}
@@ -132,7 +132,7 @@ module battery_contact(type, pos = true) { //! Draw a positive or negative batte
translate([0, -h / 2, t])
rotate([90, 0, 0])
linear_extrude(height = t)
linear_extrude(t)
difference() {
hull() {
translate([-tw / 2, -1])

View File

@@ -62,7 +62,7 @@ module belt(type, points, gap = 0, gap_pt = undef, belt_colour = grey20, tooth_c
square([gap, thickness + eps], center = true);
color(belt_colour)
linear_extrude(height = width, center = true)
linear_extrude(width, center = true)
difference() {
offset(thickness - belt_pitch_height(type)) shape();
offset(-belt_pitch_height(type) + belt_tooth_height(type)) shape();
@@ -70,7 +70,7 @@ module belt(type, points, gap = 0, gap_pt = undef, belt_colour = grey20, tooth_c
}
color(tooth_colour)
linear_extrude(height = width, center = true)
linear_extrude(width, center = true)
difference() {
offset(-belt_pitch_height(type) + belt_tooth_height(type)) shape();
offset(-belt_pitch_height(type)) shape();

View File

@@ -72,7 +72,7 @@ module blower(type) { //! Draw specified blower
color(fan_colour) {
// screw lugs
linear_extrude(height = blower_lug(type), center = false)
linear_extrude(blower_lug(type), center = false)
for(hole = blower_screw_holes(type))
difference() {
hull() {
@@ -94,7 +94,7 @@ module blower(type) { //! Draw specified blower
*%square([length, width]);
// base
linear_extrude(height = blower_base(type))
linear_extrude(blower_base(type))
difference() {
shape();
@@ -102,7 +102,7 @@ module blower(type) { //! Draw specified blower
circle(d = 2);
}
// sides
linear_extrude(height = depth)
linear_extrude(depth)
difference() {
shape();
@@ -112,7 +112,7 @@ module blower(type) { //! Draw specified blower
// top
translate_z(depth -blower_top(type))
linear_extrude(height = blower_top(type))
linear_extrude(blower_top(type))
difference() {
shape();

View File

@@ -34,7 +34,7 @@ function cable_strip_thickness() = cable_strip_thickness;
use <../utils/bezier.scad>
use <../utils/sweep.scad>
cable_strip_color = "green";
cable_strip_colour = "green";
function cable_strip_control_points(depth, min_z, pos) = let(z = min(min_z, min_z + pos))
[
@@ -62,7 +62,7 @@ module bezier_cable_strip(ways, depth, length, below, extra, pos = 0) { //! Draw
path = [v[0] + extra_v, each bezier_path(v, steps), v[3] + extra_v];
color(cable_strip_color)
color(cable_strip_colour)
translate_z(-extra)
sweep(path, rectangle_points(width, thickness));
*echo(cable_strip_lengh = length);
@@ -89,7 +89,7 @@ module cable_strip(ways, depth, travel, extra = 15, pos = 0) { //! Draw a cable
vitamin(str("cable_strip(", ways, ", ", depth, ", ", travel, arg(extra, 15), "): Polypropylene strip ", total, "mm x ", w, "mm x ", thickness, "mm"));
color(cable_strip_color) linear_extrude(height = w, center = true, convexity = 4)
color(cable_strip_colour) linear_extrude(w, center = true, convexity = 4)
difference() {
union() {
translate([-bottom, radius])
@@ -142,7 +142,7 @@ module elliptical_cable_strip(ways, p1, p2, pmax, extra = 15) {
[delta[2] / delta[0], 0, 1, delta[2] / 2],
[0, 0, 0, 1] ])
color(cable_strip_color) linear_extrude(height = w, center = true, convexity = 4)
color(cable_strip_colour) linear_extrude(w, center = true, convexity = 4)
difference() {
union() {
square([(a + thickness) * 2, extra * 2], center = true);

View File

@@ -57,7 +57,7 @@ module internal_circlip(type, open = 0) { //! Draw specified internal circlip, o
y_offset = (sqr(p.x) + sqr(p.y) - sqr(or - b)) / (or - b - p.y) / 2;
ir = or - b + y_offset;
color(circlip_colour)
linear_extrude(height = circlip_thickness(type), center = true)
linear_extrude(circlip_thickness(type), center = true)
round((a - d5) / 5)
union() {
difference() {

View File

@@ -147,7 +147,7 @@ module al_clad_resistor(type, value, leads = true) { //! Draw an aluminium clad
color("silver") {
rotate([90, 0, 90])
linear_extrude(height = length, center = true)
linear_extrude(length, center = true)
hull() {
translate([0, al_clad_height(type) / 2])
intersection() {
@@ -158,7 +158,7 @@ module al_clad_resistor(type, value, leads = true) { //! Draw an aluminium clad
translate([0, thickness / 2])
square([body, thickness], center = true);
}
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
for(end = [-1, 1])
translate([end * (length - tab) / 2, end * (width - width / 2) / 2])
@@ -176,7 +176,7 @@ module al_clad_resistor(type, value, leads = true) { //! Draw an aluminium clad
for(end = [-1, 1])
translate([end * (al_clad_wire_length(type) - terminal_l) / 2, 0, height / 2])
rotate([90, 0, 0])
linear_extrude(height = terminal_t, center = true) difference() {
linear_extrude(terminal_t, center = true) difference() {
square([terminal_l, terminal_h], center = true);
circle(r = 1);
@@ -226,7 +226,7 @@ module TO220(description, leads = 3, lead_length = 16) { //! Draw a TO220 packa
translate([0, -length + hole_y]) {
color("silver") {
linear_extrude(height = TO220_thickness())
linear_extrude(TO220_thickness())
difference() {
translate([-width / 2, inset])
square([width, length - inset]);
@@ -305,7 +305,7 @@ module panel_USBA() { //! Draw a panel mount USBA connector
vflip() {
color("dimgrey") {
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
hull()
for(side = [-1, 1])
@@ -345,14 +345,14 @@ module panel_USBA() { //! Draw a panel mount USBA connector
}
translate_z(height3)
linear_extrude(height = l - height3)
linear_extrude(l - height3)
difference() {
rounded_square([length2, width], r = r1);
square([w - flange_t, h - flange_t], center = true);
}
linear_extrude(height = height3)
linear_extrude(height3)
difference() {
rounded_square([length2, width], r = r1);
@@ -363,7 +363,7 @@ module panel_USBA() { //! Draw a panel mount USBA connector
*cube([12, 4.5, 32], center = true);
color("silver") {
linear_extrude(height = l)
linear_extrude(l)
difference() {
square([w, h], center = true);
@@ -373,7 +373,7 @@ module panel_USBA() { //! Draw a panel mount USBA connector
translate_z(l - flange_t / 2)
cube([w, h, flange_t], center = true);
linear_extrude(height = flange_t)
linear_extrude(flange_t)
difference() {
union() {
square([h_flange_l, h + 2 * h_flange_h], center = true);
@@ -418,7 +418,7 @@ module thermal_cutout(type) { //! Draw specified thermal cutout
spade = spade6p4;
color("silver") {
linear_extrude(height = tc_thickness(type))
linear_extrude(tc_thickness(type))
difference() {
hull()
for(side = [-1, 1])

View File

@@ -23,9 +23,9 @@
include <../utils/core/core.scad>
use <../utils/thread.scad>
d_pillar_color = grey90;
d_plug_shell_color = grey80;
d_plug_insulator_color = grey20;
d_pillar_colour = grey90;
d_plug_shell_colour = grey80;
d_plug_insulator_colour = grey20;
function d_flange_length(type) = type[1]; //! Length of the flange
function d_lengths(type) = type[2]; //! Lengths of the D for plug and socket
@@ -56,20 +56,20 @@ module d_pillar() { //! Draw a pillar for a D-connector
translate_z(-screw_length)
if(show_threads)
male_metric_thread(screw, pitch, screw_length, false, top = 0, colour = d_pillar_color);
male_metric_thread(screw, pitch, screw_length, false, top = 0, colour = d_pillar_colour);
else
color(d_pillar_color)
color(d_pillar_colour)
cylinder(d = screw, h = screw_length + 1);
color(d_pillar_color) {
linear_extrude(height = height)
color(d_pillar_colour) {
linear_extrude(height)
difference() {
circle(r = rad, $fn = 6);
circle(d = screw);
}
}
if(show_threads)
female_metric_thread(screw, pitch, height, false, colour = d_pillar_color);
female_metric_thread(screw, pitch, height, false, colour = d_pillar_colour);
}
module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specified D plug, which can be IDC, PCB or plain solder bucket
@@ -106,8 +106,8 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
//
// Shell
//
color(d_plug_shell_color) {
linear_extrude(height = d_flange_thickness(type))
color(d_plug_shell_colour) {
linear_extrude( d_flange_thickness(type))
difference() {
rounded_square([flange_length, flange_width], 2);
@@ -115,7 +115,7 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
circle(hole_r);
}
linear_extrude(height = front_height, convexity = 5)
linear_extrude(front_height, convexity = 5)
difference() {
D(d_length, d_width, 2.5);
D(d_length - 2 * dwall, d_width - 2 * dwall, 2.5 - dwall);
@@ -123,21 +123,21 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
if(!idc)
rotate([0,180,0])
linear_extrude(height = back_height, convexity = 5)
linear_extrude(back_height, convexity = 5)
D(d_lengths(type)[0] + 2 * dwall, d_widths(type)[0] + 2 * dwall, 2.5 + dwall);
}
//
// Insulator
//
color(d_plug_insulator_color) {
color(d_plug_insulator_colour) {
translate_z(d_flange_thickness(type) + eps)
rotate([0, 180, 0])
linear_extrude(height = back_height + 1 + d_flange_thickness(type), convexity = 5)
linear_extrude(back_height + 1 + d_flange_thickness(type), convexity = 5)
D(d_length - dwall, d_width - dwall, 2.5 - dwall/2);
if(socket)
linear_extrude(height = front_height - eps, convexity = 5)
linear_extrude(front_height - eps, convexity = 5)
difference() {
D(d_length - dwall, d_width - dwall, 2.5 - dwall/2);
@@ -169,11 +169,11 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
if(pcb)
rotate([0, 180, 0]) {
linear_extrude(height = back_height + 1 + 4.5)
linear_extrude(back_height + 1 + 4.5)
pin_positions()
circle(r = 0.75 / 2, $fn = 12);
linear_extrude(height = back_height + 1 + 1)
linear_extrude(back_height + 1 + 1)
pin_positions()
circle(r = 0.75, $fn = 12);
}
@@ -183,7 +183,7 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
pin_positions()
rotate(180 + ($i % 2) * 180)
render() difference() {
linear_extrude(height = 8)
linear_extrude(8)
difference() {
circle(1);

View File

@@ -80,10 +80,10 @@ module fan(type) { //! Draw specified fan, origin in the centre
if(middle > 0) {
for(z = [-1, 1])
translate_z(z * (depth - thickness) / 2)
linear_extrude(height = thickness, center = true)
linear_extrude(thickness, center = true)
shape();
linear_extrude(height = middle, center = true)
linear_extrude(middle, center = true)
difference() {
shape();
difference() {
@@ -100,13 +100,13 @@ module fan(type) { //! Draw specified fan, origin in the centre
}
}
else
linear_extrude(height = depth, center = true)
linear_extrude(depth, center = true)
shape();
// Blades
blade_ir = fan_hub(type) / 2 - 1;
blade_len = fan_bore(type) / 2 - 0.75 - blade_ir;
linear_extrude(height = depth - 1, center = true, convexity = 4, twist = -30, slices = round(depth / 2))
linear_extrude(depth - 1, center = true, convexity = 4, twist = -30, slices = round(depth / 2))
for(i = [0 : fan_blades(type) - 1])
rotate((360 * i) / fan_blades(type))
translate([blade_ir, -1.5 / 2])

View File

@@ -68,7 +68,7 @@ module fuseholder(thickness) { //! Fuseholder with nut in place for specified pa
color(colour) {
tube(or = nut_d / 2, ir = thread_d / 2, h = nut_flange_t, center = false);
linear_extrude(height = nut_t)
linear_extrude(nut_t)
difference() {
circle(d = nut_d, $fn = 6);
@@ -87,7 +87,7 @@ module fuseholder(thickness) { //! Fuseholder with nut in place for specified pa
cylinder(r = 5, h = flange_t - 1);
linear_extrude(height = flange_t)
linear_extrude(flange_t)
difference() {
circle(r = 5);
@@ -96,7 +96,7 @@ module fuseholder(thickness) { //! Fuseholder with nut in place for specified pa
vflip() {
if(!show_threads)
linear_extrude(height = thread)
linear_extrude(thread)
intersection() {
circle(d = thread_d - 0.3);
@@ -127,7 +127,7 @@ module fuseholder(thickness) { //! Fuseholder with nut in place for specified pa
for(side = [-1, 1])
translate([side * contact_slot_d / 2, 0, contact_slot_z])
rotate([0, -70, 90 - side * 90])
linear_extrude(height = contact_t, center = true) difference() {
linear_extrude(contact_t, center = true) difference() {
hull() {
square([eps, contact_w], center = true);

View File

@@ -61,7 +61,7 @@ module geared_stepper(type) { //! Draw the specified geared stepper
cylinder(d = gs_boss_d(type), h = 2 * gs_boss_h(type), center = true);
linear_extrude(height = gs_lug_t(type))
linear_extrude(gs_lug_t(type))
difference() {
hull()
geared_stepper_screw_positions(type)
@@ -78,7 +78,7 @@ module geared_stepper(type) { //! Draw the specified geared stepper
color(brass) {
d = gs_shaft_d(type);
h = gs_shaft_length(type);
linear_extrude(height = h)
linear_extrude(h)
intersection() {
circle(d = d);
@@ -95,7 +95,7 @@ module geared_stepper(type) { //! Draw the specified geared stepper
h2 = gs_bulge2_h(type);
translate([0, - offset, h1 + 1 - h2])
linear_extrude(height = h2)
linear_extrude(h2)
round(0.5)
intersection() {
circle(gs_bulge2_d(type));

View File

@@ -80,7 +80,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
color(colour) {
rotate([90, 0, 0])
linear_extrude(height = pitch, center = true, convexity = 5)
linear_extrude(pitch, center = true, convexity = 5)
polygon(points = [ // Vertical section
[y + depth / 2, 0],
[y + depth / 2, ledge_height / 2 - box_h1 / 2],
@@ -105,7 +105,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
]);
translate([y2, 0, ledge_height / 2 + box_h2 / 2]) // Screw socket
linear_extrude(height = height - ledge_height / 2 - box_h2 / 2)
linear_extrude(height - ledge_height / 2 - box_h2 / 2)
difference() {
square([screw_r * 2 + 0.1, pitch], center = true);
@@ -113,7 +113,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
}
linear_extrude(height = ledge_height)
linear_extrude(ledge_height)
intersection() {
horizontal_section();
@@ -121,7 +121,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
square([10, 10]);
}
linear_extrude(height = back)
linear_extrude(back)
intersection() {
horizontal_section();
@@ -131,7 +131,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
if(tube_h)
translate([y2, 0, height])
linear_extrude(height = tube_h - height)
linear_extrude(tube_h - height)
intersection() {
ring(or = top / 2, ir = screw_r);
@@ -149,7 +149,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
cylinder(r = screw_r, h = slot_depth);
translate_z(screw_top - slot_depth) // screw head
linear_extrude(height = slot_depth)
linear_extrude(slot_depth)
difference() {
circle(screw_r);
@@ -158,7 +158,7 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
}
translate([box_back, 0, ledge_height / 2]) {
rotate([0, 90, 0])
linear_extrude(height = box_front - box_back)
linear_extrude(box_front - box_back)
difference() {
square([box_h2, box_w2], center = true);

View File

@@ -69,7 +69,7 @@ module hygrometer() { //! Draw a hygrometer
cylinder(d = apperture_d, h = eps);
color("black")
linear_extrude(height = 0.2, center = true) {
linear_extrude(0.2, center = true) {
translate([0, 3])
text("20_4", font = "7 segment", valign = "bottom", halign = "center", size = apperture_d / 6);

View File

@@ -137,7 +137,7 @@ module iec(type) { //! Draw specified IEC connector
color(grey20) {
// Flange
flange_t = iec_flange_t(type);
linear_extrude(height = flange_t)
linear_extrude(flange_t)
difference() {
hull() {
rounded_square([iec_flange_w(type), iec_flange_h(type)], iec_flange_r(type));
@@ -164,7 +164,7 @@ module iec(type) { //! Draw specified IEC connector
}
// Bezel
translate_z(iec_flange_t(type))
linear_extrude(height = iec_bezel_t(type))
linear_extrude(iec_bezel_t(type))
difference() {
rounded_square([iec_bezel_w(type), iec_bezel_h(type)], iec_bezel_r(type));
@@ -174,7 +174,7 @@ module iec(type) { //! Draw specified IEC connector
// Body
h = socket_d - iec_flange_t(type) - iec_bezel_t(type);
translate_z(-h)
linear_extrude(height = h)
linear_extrude(h)
difference() {
body_shape();
@@ -182,7 +182,7 @@ module iec(type) { //! Draw specified IEC connector
}
// Back
translate_z(-iec_depth(type))
linear_extrude(height = iec_depth(type) - h)
linear_extrude(iec_depth(type) - h)
body_shape();
}
if(!iec_male(type))

View File

@@ -108,10 +108,10 @@ module insert_boss(type, z, wall = 2 * extrusion_width) { //! Make a boss to tak
hull()
poly_ring(or, ir);
linear_extrude(height = z)
linear_extrude(z)
poly_ring(or, ir);
linear_extrude(height = z - insert_hole_length(type))
linear_extrude(z - insert_hole_length(type))
difference() {
shape();
@@ -119,7 +119,7 @@ module insert_boss(type, z, wall = 2 * extrusion_width) { //! Make a boss to tak
}
if(z > insert_hole_length(type) + 2 * layer_height)
linear_extrude(height = 2 * layer_height) // cap the end if room
linear_extrude(2 * layer_height) // cap the end if room
shape();
}
@@ -143,7 +143,7 @@ module insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, f
}
translate_z(-boss_h)
linear_extrude(height = boss_h)
linear_extrude(boss_h)
difference() {
shape();
@@ -152,7 +152,7 @@ module insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, f
// insert boss counter_bore
translate_z(-boss_h2) {
linear_extrude(height = counter_bore + eps)
linear_extrude(counter_bore + eps)
difference() {
shape();
@@ -162,7 +162,7 @@ module insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, f
// support cone
if(flying)
hull() {
linear_extrude(height = eps)
linear_extrude(eps)
shape();
translate([boss_r + extension - wall - eps, 0, - (2 * boss_r + extension - wall)])

View File

@@ -206,7 +206,7 @@ module post_4mm(colour, thickness, display_colour = false) { //! Draw a 4mm bind
nut_t = 2.3;
color(silver)
linear_extrude(height = nut_t) difference() {
linear_extrude(nut_t) difference() {
circle(d = 6.3 / cos(30), $fn = 6);
circle(d = thread_d);
@@ -229,7 +229,7 @@ module post_4mm(colour, thickness, display_colour = false) { //! Draw a 4mm bind
cylinder(d = d, h = base_h);
translate_z(-collar_t)
linear_extrude(height = base_h) {
linear_extrude(base_h) {
circle(post_4mm_hole_radius - 0.1);
spigot();
@@ -284,7 +284,7 @@ module post_4mm(colour, thickness, display_colour = false) { //! Draw a 4mm bind
explode(-15)
color(actual_colour) {
translate_z(-thickness - base_h) {
linear_extrude(height = base_h)
linear_extrude(base_h)
difference() {
circle(d = d);

View File

@@ -52,7 +52,7 @@ module heater_block(type, resistor, thermistor) {
color(brass) {
render() difference() {
rotate([90, 0, 0])
linear_extrude(height = heater_width(type), center = true) difference() {
linear_extrude(heater_width(type), center = true) difference() {
square([heater_length(type), h], center = true);
translate([resistor_x(type), 0])

View File

@@ -25,7 +25,7 @@ use <../utils/tube.scad>
use <washer.scad>
use <ball_bearing.scad>
kp_pillow_block_color = grey70;
kp_pillow_block_colour = grey70;
function kp_diameter(type) = type[1]; //! Rod hole diameter
function kp_hole_offset(type) = type[2]; //! Rod hole offset
@@ -50,7 +50,7 @@ module kp_pillow_block(type) { //! Draw the KP pillow block
b = type[11];
bolthole_radius = type[12];
color(kp_pillow_block_color)
color(kp_pillow_block_colour)
translate([0, -H, 0]) {
fillet = 1;
squareSizeX = (L - H0) / 2 + fillet;

View File

@@ -71,17 +71,17 @@ module LDR(type, lead_length = 3) { //! Draw an LDR, can specify the lead length
t = ldr_thickness(type);
color("white")
linear_extrude(height = t - 0.4)
linear_extrude(t - 0.4)
shape();
color("orange")
translate_z(t - 0.4)
linear_extrude(height = 0.1)
linear_extrude(0.1)
shape();
color([0.9, 0.9, 0.9])
translate_z(t - 0.3)
linear_extrude(height = 0.1)
linear_extrude(0.1)
difference() {
offset(-serpentine_t())
shape();
@@ -100,6 +100,6 @@ module LDR(type, lead_length = 3) { //! Draw an LDR, can specify the lead length
}
color([1, 1, 1, 0.25])
translate_z(t - 0.3 + eps)
linear_extrude(height = 0.3)
linear_extrude(0.3)
shape();
}

View File

@@ -64,7 +64,7 @@ module leadnut(type) { //! Draw specified leadnut
thread(bore_d, lead, h, thread_profile(pitch / 2, pitch * 0.366, 30), false, starts = lead / pitch, female = true, solid = false);
translate_z(leadnut_flange_offset(type))
linear_extrude(height = leadnut_flange_t(type))
linear_extrude(leadnut_flange_t(type))
difference() {
circle(d = leadnut_flange_dia(type));

View File

@@ -40,7 +40,7 @@ module led(type, colour = "red", lead = 5) { //! Draw specified LED with desired
rotate_extrude()
rounded_corner(r = d / 2, h = led_height(type), r2 = d / 2);
linear_extrude(height = led_rim_t(type))
linear_extrude(led_rim_t(type))
difference() {
circle(d = led_rim_dia(type));

View File

@@ -85,7 +85,7 @@ module light_strip(type, segs = undef) { //! Draw specified light strip, segs ca
color("silver")
rotate([90, 0, 90])
linear_extrude(height = l, center = true)
linear_extrude(l, center = true)
polygon([
[ x1, 0], [ x1, d], [ x2, d], [ x3, y5], [ x3, y4], [ x2, y4],
[ x2, y3], [ x3, y3], [ x3, y2], [ x2, y2], [ x2, y1],
@@ -99,42 +99,42 @@ module light_strip(type, segs = undef) { //! Draw specified light strip, segs ca
translate_z(y4) {
color("white")
linear_extrude(height = 1.6)
linear_extrude(1.6)
led_positions()
square([5, 5], center = true);
color("yellow")
linear_extrude(height = 1.6 + eps)
linear_extrude(1.6 + eps)
led_positions()
circle(d = 3.5);
color("silver")
linear_extrude(height = 0.8)
linear_extrude(0.8)
led_positions()
for(side = [-1,1], end = [-1:1])
translate([side * 2.2, end * 1.6])
square([1, 0.9], center = true);
color("black")
linear_extrude(height = 0.1)
linear_extrude(0.1)
segment_positions(segments - 1)
translate([segment_length, 0])
square([0.2, a], center = true);
color("silver")
linear_extrude(height = 0.15)
linear_extrude(0.15)
segment_positions()
for(end = [-1, 1], side = [-1, 1])
translate([end * (segment_length / 2 - 1.25) + segment_length / 2, side * 2.5])
square(2.5, center = true);
color("silver")
linear_extrude(height = 0.55)
linear_extrude(0.55)
resistor_positions()
square([3.2, 1.5], center = true);
color("black")
linear_extrude(height = 0.55 + eps)
linear_extrude(0.55 + eps)
resistor_positions()
square([2.1, 1.5 + 2 * eps], center = true);
@@ -152,7 +152,7 @@ function light_strip_clip_length(light) = light_strip_clip_slot(light) + 2 * wal
function light_strip_clip_width(light) = light_strip_depth(light) + 2 * wall; //! Outside width
module light_strip_clip(light) { //! Make a clip to go over the strip to be incorporated into a bracket
linear_extrude(height = light_strip_clip_depth(light), convexity = 2)
linear_extrude(light_strip_clip_depth(light), convexity = 2)
difference() {
translate([-light_strip_clip_length(light) / 2, -wall])
square([light_strip_clip_length(light), light_strip_clip_width(light)]);

View File

@@ -87,10 +87,10 @@ module mains_socket(type) { //! Draw specified 13A socket
color("white") render() difference() {
hull() {
linear_extrude(height = eps)
linear_extrude(eps)
face_plate(type);
linear_extrude(height = height)
linear_extrude(height)
offset(-(mains_socket_width(type) - mains_socket_top_w(type)) / 2)
face_plate(type);
}
@@ -105,7 +105,7 @@ module mains_socket(type) { //! Draw specified 13A socket
}
// Hollow out the back
difference() {
linear_extrude(height = height - mains_socket_t(type))
linear_extrude(height - mains_socket_t(type))
offset(-mains_socket_t(type))
face_plate(type);

View File

@@ -56,7 +56,7 @@ module meter(type = led_meter, colour = "red", value = "888", display_colour = f
color("green")
translate_z(meter_height(type))
linear_extrude(height = meter_pcb_thickness(type))
linear_extrude(meter_pcb_thickness(type))
difference() {
union() {
square([meter_pcb_length(type), meter_pcb_width(type)], center = true);
@@ -68,7 +68,7 @@ module meter(type = led_meter, colour = "red", value = "888", display_colour = f
}
color(display_colour ? display_colour : colour)
linear_extrude(height = 0.2, center = true)
linear_extrude(0.2, center = true)
mirror([1,0,0])
text(value, font = "7 segment", valign = "center", halign = "center", size = meter_width(type) - 2, spacing = 1.2);
}
@@ -102,14 +102,14 @@ module meter_bezel(type = led_meter) { //! Generate the STL for the meter bezel
h = meter_height(type);
union() {
linear_extrude(height = h)
linear_extrude(h)
difference() {
rounded_square([l + 2 * wall, w + 2 * wall], rad);
square([l + 2 * clearance, w + 2 * clearance], center = true);
}
linear_extrude(height = flange_t)
linear_extrude(flange_t)
difference() {
rounded_square([l + 2 * wall + 2 * overlap, w + 2 * wall + 2 * overlap], rad + overlap);

View File

@@ -22,7 +22,7 @@
//
include <../utils/core/core.scad>
microswitch_contact_color = brass;
microswitch_contact_colour = brass;
function microswitch_thickness(type) = type[2]; //! Body thickness
function microswitch_width(type) = type[3]; //! Body width
@@ -63,7 +63,7 @@ module microswitch(type) { //! Draw specified microswitch
d = microswitch_button_t(type);
color(microswitch_body_clr(type))
linear_extrude(height = microswitch_thickness(type), center = true)
linear_extrude(microswitch_thickness(type), center = true)
difference() { // main body
rounded_square([microswitch_length(type), microswitch_width(type)], microswitch_radius(type));
@@ -73,7 +73,7 @@ module microswitch(type) { //! Draw specified microswitch
color(microswitch_button_clr(type)) // orange button
translate(microswitch_button_pos(type) - [0, d / 2])
linear_extrude(height = microswitch_button_w(type), center = true)
linear_extrude(microswitch_button_w(type), center = true)
hull() {
circle(d = d);
@@ -81,7 +81,7 @@ module microswitch(type) { //! Draw specified microswitch
circle(d = d);
}
color(microswitch_contact_color) // yellow contacts
color(microswitch_contact_colour) // yellow contacts
for(pos = microswitch_legs(type))
translate(pos) {
leg = microswitch_leg(type);
@@ -89,7 +89,7 @@ module microswitch(type) { //! Draw specified microswitch
if(vertical)
rotate([0, 90, 0])
linear_extrude(height = leg.x, center = true)
linear_extrude(leg.x, center = true)
difference() {
square([leg.z, leg.y], center = true);
@@ -99,7 +99,7 @@ module microswitch(type) { //! Draw specified microswitch
}
else
rotate([90, 0, 0])
linear_extrude(height = leg.y, center = true)
linear_extrude(leg.y, center = true)
difference() {
square([leg.x, leg.z], center = true);

View File

@@ -32,7 +32,7 @@ panel_clearance = 0.2;
module microview(cutout = false) { //! Draw microview or generate a panel cutout for it
rotate([0, 0, -90])
if(cutout)
linear_extrude(height = 100)
linear_extrude(100)
offset(panel_clearance)
projection()
hull()

View File

@@ -84,7 +84,7 @@ module mod(type) { //! Draw specified module
color("silver")
rotate([90, 0, 90])
linear_extrude(height = body_l, center = true)
linear_extrude(body_l, center = true)
profile();
color(grey20)
@@ -92,18 +92,18 @@ module mod(type) { //! Draw specified module
translate([end * body_l / 2, 0, 0])
rotate([90, 0, end * 90])
union() {
linear_extrude(height = end_t) // endcap
linear_extrude(end_t) // endcap
profile();
translate_z(end_t)
rotate([90, 0, 180])
linear_extrude(height = lug_t) // lug
linear_extrude(lug_t) // lug
lug();
for(side = [-1, 1]) {
translate([side * vane_p / 2, lug_t, end_t]) // buttress vanes
rotate([0, -90, 0])
linear_extrude(height = vane_t, center = true)
linear_extrude(vane_t, center = true)
polygon([[0, 0], [0, vane_h - lug_t], [vane_l, 0]]);
translate([side * vane_p / 2, h / 2, end_t]) // bosses

View File

@@ -58,7 +58,7 @@ module nut(type, nyloc = false, brass = false, nylon = false) { //! Draw specifi
colour = brass ? brass_colour : nylon ? grey30: grey70;
explode(nyloc ? 10 : 0) {
color(colour) {
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
circle(outer_rad, $fn = 6);
@@ -120,7 +120,7 @@ module wingnut(type) { //! Draw a wingnut
[hole_rad, thickness]
]);
for(rot = [0, 180])
rotate([90, 0, rot]) linear_extrude(height = wing_thickness, center = true)
rotate([90, 0, rot]) linear_extrude(wing_thickness, center = true)
hull() {
translate([wing_span / 2 - wing_width / 2, wing_height - wing_width / 2])
circle(wing_width / 2);
@@ -207,7 +207,7 @@ module nut_square(type, brass = false, nylon = false) { //! Draw specified squar
colour = brass ? brass_colour : nylon ? grey30 : grey70;
color(colour)
difference() {
linear_extrude(height = thickness) {
linear_extrude(thickness) {
difference() {
square([width, width], center = true);

View File

@@ -69,7 +69,7 @@ module opengrab() { //! Draw OpenGrab module
translate_z(1)
opengrab_hole_positions() {
color(brass)
linear_extrude(height = depth - 1)
linear_extrude(depth - 1)
difference() {
circle(d = 4.7 / cos(30), $fn = 6);
@@ -85,7 +85,7 @@ module opengrab_target() { //! Draw OpenGrab target
vitamin("opengrab_target(): OpenGrab silicon steel target plate");
color(grey80)
linear_extrude(height = target)
linear_extrude(target)
difference() {
square([width, width], center = true);

View File

@@ -106,7 +106,7 @@ module usb_A(h, v_flange_l, bar, cutout) {
h + 2 * h_flange_h + 2 * panel_clearance, 100], r = cnc_bit_r, center = false);
else
color("silver") rotate([0, 90, 0]) {
linear_extrude(height = l, center = true)
linear_extrude(l, center = true)
difference() {
square([h, w], center = true);
@@ -119,7 +119,7 @@ module usb_A(h, v_flange_l, bar, cutout) {
cube([h, w, 1], center = true);
translate_z(l / 2 - flange_t)
linear_extrude(height = flange_t) difference() {
linear_extrude(flange_t) difference() {
union() {
square([h + 2 * h_flange_h, h_flange_l], center = true);
@@ -150,7 +150,7 @@ module rj45(cutout = false) { //! Draw RJ45 Ethernet connector
rotate([0, 90, 0]) {
mouth = plug_z + plug_h - tab_z;
color("silver") {
linear_extrude(height = l, center = true)
linear_extrude(l, center = true)
difference() {
square([h, w], center = true);
@@ -163,7 +163,7 @@ module rj45(cutout = false) { //! Draw RJ45 Ethernet connector
}
color(grey30) {
linear_extrude(height = l - 0.2, center = true)
linear_extrude(l - 0.2, center = true)
difference() {
square([h - 0.1, w - 0.1], center = true);
@@ -195,7 +195,7 @@ module jack(cutout = false) { //! Draw 3.5mm jack
else
color(grey20)
rotate([0, 90, 0]) {
linear_extrude(height = l / 2)
linear_extrude(l / 2)
difference() {
square([h, w], center = true);
@@ -209,7 +209,7 @@ module jack(cutout = false) { //! Draw 3.5mm jack
}
}
module buzzer(height, diameter, colour) { //! Draw PCB buzzer with specified height, diameter and color
module buzzer(height, diameter, colour) { //! Draw PCB buzzer with specified height, diameter and colour
color (colour)
tube(or = diameter / 2, ir = height > 5 ? 1 : 0.75, h = height, center = false);
color("white")
@@ -271,13 +271,13 @@ module hdmi(type, cutout = false) { //! Draw HDMI socket
if(cutout)
rotate([90, 0, 90])
linear_extrude(height = 100)
linear_extrude(100)
offset(t + panel_clearance)
D();
else
color("silver")
rotate([90, 0, 90]) {
linear_extrude(height = l, center = true)
linear_extrude(l, center = true)
difference() {
offset(t)
D();
@@ -285,7 +285,7 @@ module hdmi(type, cutout = false) { //! Draw HDMI socket
}
translate_z(-l / 2)
linear_extrude(height = 1)
linear_extrude(1)
offset(t)
D();
}
@@ -314,12 +314,12 @@ module usb_uA(cutout = false) { //! Draw USB micro A connector
if(cutout)
rotate([90, 0, 90])
linear_extrude(height = 100)
linear_extrude(100)
offset((flange_h - ih2) / 2 + 2 * panel_clearance)
D();
else
color("silver") rotate([90, 0, 90]) {
linear_extrude(height = l, center = true)
linear_extrude(l, center = true)
difference() {
offset(t)
D();
@@ -328,12 +328,12 @@ module usb_uA(cutout = false) { //! Draw USB micro A connector
}
translate_z(-l / 2)
linear_extrude(height = 1)
linear_extrude(1)
offset(t)
D();
translate_z(l / 2 - t)
linear_extrude(height = t) difference() {
linear_extrude(t) difference() {
union() {
translate([0, h - t - ih1 / 2])
square([flange_w, ih1], center = true);
@@ -375,7 +375,7 @@ module usb_B(cutout = false) { //! Draw USB B connector
else
translate_z(h / 2) rotate([90, 0, 90]) {
color("silver") {
linear_extrude(height = l, center = true)
linear_extrude(l, center = true)
difference() {
square([w, h], center = true);
@@ -388,7 +388,7 @@ module usb_B(cutout = false) { //! Draw USB B connector
}
color("white") {
linear_extrude(height = l - 0.4, center = true)
linear_extrude(l - 0.4, center = true)
difference() {
square([w - 0.2, h - 0.2], center = true);
@@ -423,7 +423,7 @@ module barrel_jack(cutout = false) { //! Draw barrel power jack
;
else {
color(grey20) rotate([0, 90, 0]) {
linear_extrude(height = l, center = true) {
linear_extrude(l, center = true) {
difference() {
translate([-h / 2, 0])
rounded_square([h, w], r);
@@ -437,7 +437,7 @@ module barrel_jack(cutout = false) { //! Draw barrel power jack
}
}
translate_z(l / 2 - front)
linear_extrude(height = front) {
linear_extrude(front) {
difference() {
translate([-h / 2, 0])
rounded_square([h, w], r);
@@ -484,7 +484,7 @@ module uSD(size, cutout = false) { //! Draw uSD socket
translate_z(size.z / 2) {
color("silver")
rotate([90, 0, 90]) {
linear_extrude(height = size.y, center = true)
linear_extrude(size.y, center = true)
difference() {
square([size.x, size.z], center = true);
square([size.x - 2 * t, size.z - 2 * t], center = true);
@@ -497,7 +497,7 @@ module uSD(size, cutout = false) { //! Draw uSD socket
color(grey20)
rotate([90, 0, 90])
translate_z(t)
linear_extrude(height = size.y - t, center = true)
linear_extrude(size.y - t, center = true)
difference() {
square([size.x - 2 * t, size.z - 2 * t], center = true);
@@ -526,7 +526,7 @@ module flex(cutout = false) { //! Draw flexistrip connector
translate_z(0.5)
cube([l, w, 1], center = true);
linear_extrude(height = h)
linear_extrude(h)
difference() {
square([l, w], center = true);
@@ -535,7 +535,7 @@ module flex(cutout = false) { //! Draw flexistrip connector
}
translate_z(h - top_t)
linear_extrude(height = top_t)
linear_extrude(top_t)
difference() {
union() {
square([top_l, w], center = true);
@@ -581,7 +581,7 @@ module flat_flex(cutout = false) { //! Draw flat flexistrip connector as used on
color(grey30) {
translate([w / 2 - w1, 0, h1 / 2])
rotate([90, 0, 90])
linear_extrude(height = w1)
linear_extrude(w1)
difference() {
square([l1, h1], center = true);
@@ -623,7 +623,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
screw_r = 1;
color(colour) {
rotate([90, 0, 0])
linear_extrude(height = pitch, center = true)
linear_extrude(pitch, center = true)
polygon(points = [
[ depth / 2, 0],
[ depth / 2, box_z],
@@ -640,7 +640,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
[-depth / 2, 0],
]);
linear_extrude(height = box_z + box_h)
linear_extrude(box_z + box_h)
difference() {
square([depth, pitch], center = true);
@@ -651,7 +651,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
}
translate_z(box_z + box_h)
linear_extrude(height = height - box_z - box_h)
linear_extrude(height - box_z - box_h)
difference() {
square([2 * screw_r + 0.1, pitch], center = true);
@@ -663,7 +663,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
translate_z(screw_z) {
cylinder(r = screw_r, h = height - screw_z - 1); // screw
linear_extrude(height = height - screw_z - 0.5)
linear_extrude(height - screw_z - 0.5)
difference() {
circle(1);
@@ -678,7 +678,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
translate_z(box_z + box_h / 2) // terminal
rotate([0, -90, 0]) {
linear_extrude(height = depth - 2, center = true)
linear_extrude(depth - 2, center = true)
difference() {
square([box_h, box_w], center = true);
@@ -735,7 +735,7 @@ module standoff(h, d, h2, d2) { //! Draw a standoff
}
}
module trimpot10(vertical, coutout = false) { //! Draw a ten turn trimpot
module trimpot10(vertical, cutout = false) { //! Draw a ten turn trimpot
l = 10;
w = 9.5;
h = 4.8;
@@ -746,31 +746,39 @@ module trimpot10(vertical, coutout = false) { //! Draw a ten turn trimpot
slot_w = 0.6;
slot_h = 0.8;
module screw_pos()
translate([-w / 2 + screw_d / 2, -l / 2, h - screw_d / 2])
rotate([90, 0, 0])
children();
translate(vertical ? [0, -h / 2, l / 2] : [0, 0])
rotate([vertical ? -90 : 0, 0, 0]) {
color("#2CA1FD") {
translate([0, -foot_h / 2, foot_h / 2 + h / 2])
cube([w, l - foot_h, h - foot_h], center = true);
if(cutout)
screw_pos()
cylinder(d = screw_d + 1, h = 100);
else
color("#2CA1FD") {
translate([0, -foot_h / 2, foot_h / 2 + h / 2])
cube([w, l - foot_h, h - foot_h], center = true);
for(x = [-1, 1], y = [-1, 1])
translate([x * (w - foot_w) / 2, y * (l - foot_w) / 2, h / 2])
cube([foot_w, foot_w, h], center = true);
for(x = [-1, 1], y = [-1, 1])
translate([x * (w - foot_w) / 2, y * (l - foot_w) / 2, h / 2])
cube([foot_w, foot_w, h], center = true);
}
}
color(brass)
translate([-w / 2 + screw_d / 2, -l / 2, h - screw_d / 2])
rotate([90, 0, 0]) {
color(brass)
screw_pos() {
cylinder(d = screw_d, h = screw_h - slot_h);
linear_extrude(height = screw_h)
linear_extrude(screw_h)
difference() {
circle(d = screw_d);
square([slot_w, screw_d + 1], center = true);
}
}
}
}
}
module pcb_component(comp, cutouts = false, angle = undef) { //! Draw pcb component from description
@@ -873,7 +881,7 @@ module pcb(type) { //! Draw specified PCB
pcb_components(type);
color(pcb_colour(type)) linear_extrude(height = t) difference() {
color(pcb_colour(type)) linear_extrude(t) difference() {
if(Len(pcb_polygon(type)))
polygon(pcb_polygon(type));
else
@@ -893,7 +901,7 @@ module pcb(type) { //! Draw specified PCB
translate_z(t / 2)
pcb_hole_positions(type)
if(is_list(land))
linear_extrude(height = t + 2 * eps, center = true)
linear_extrude(t + 2 * eps, center = true)
difference() {
square(land, center = true);
@@ -906,7 +914,7 @@ module pcb(type) { //! Draw specified PCB
plating = 0.15;
color(pcb_colour(type) == "green" ? "silver" : "gold")
translate_z(-plating)
linear_extrude(height = fr4 ? t + 2 * plating : plating)
linear_extrude(fr4 ? t + 2 * plating : plating)
if(Len(grid)) {
pcb_grid_positions(type)
difference() {
@@ -935,11 +943,11 @@ module pcb_spacer(screw, height, wall = 1.8, taper = 0) { //! Generate STL for P
or = corrected_radius(ir) + wall;
if(height > taper)
linear_extrude(height = height - taper)
linear_extrude(height - taper)
poly_ring(or, ir);
if(taper)
linear_extrude(height = height)
linear_extrude(height)
poly_ring(ir + 2 * extrusion_width, ir);
}
@@ -949,7 +957,7 @@ module pcb_base(type, height, thickness, wall = 2) { //! Generate STL for a base
or = corrected_radius(ir) + wall;
union() {
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
hull()
pcb_screw_positions(type)
@@ -959,7 +967,7 @@ module pcb_base(type, height, thickness, wall = 2) { //! Generate STL for a base
poly_circle(ir);
}
linear_extrude(height = height)
linear_extrude(height)
pcb_screw_positions(type)
poly_ring(or, ir);
}

View File

@@ -327,6 +327,16 @@ ZC_A0591 = ["ZC_A0591", "ZC-A0591 ULN2003 driver PCB", 35, 32, 1.6, 0, 2.5, 0, "
[], [], [], [], M2p5_pan_screw];
MT3608 = ["MT3608", "MT3608 boost converter module", 37, 17, 1.2, 2, 1.5, [5, 3], "#2140BE", false, [[3.0725, 5.095], [3.0725, -5.095], [-3.0725, 5.095], [-3.0725, -5.095]],
[ [-12.05 , -6.8, 180, "trimpot10"]
]];
TP4056 = ["TP4056", "TP4056 Li-lon Battery charger module", 26.2, 17.5, 1.0, 0, 1.0, [2.4, 2.4], "#2140BE", false,
[[1.67, 1.8], [1.67, -1.8], [-1.67, 1.8], [-1.67, -1.8], [-1.67, -4.98], [-1.67, 4.98]],
[ [ 2, 17.5 / 2, 180, "usb_uA"],
]];
PERF80x20 = ["PERF80x20", "Perfboard 80 x 20mm", 80, 20, 1.6, 0, 2.3, 0, "green", true, [[2,2],[-2,2],[2,-2],[-2,-2]], [], [], [5.87, 3.49]];
PERF70x50 = ["PERF70x50", "Perfboard 70 x 50mm", 70, 50, 1.6, 0, 2.3, 0, "green", true, [[2,2],[-2,2],[2,-2],[-2,-2]], [], [], [5.87, 3.49]];
@@ -352,6 +362,8 @@ RAMPSEndstop = ["RAMPSEndstop", "RAMPS Endstop Switch",
[]];
pcbs = [RAMPSEndstop, ExtruderPCB, PI_IO, RPI0, EnviroPlus, RPI3, ArduinoUno3, ArduinoLeonardo, Keyes5p1, PERF80x20, PERF70x50, PERF70x30, PERF60x40, PERF74x51, PSU12V1A, DuetE, Duex2, Duex5, Melzi, ZC_A0591];
pcbs = [TP4056, MT3608, RAMPSEndstop, ExtruderPCB, PI_IO, ZC_A0591, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, Keyes5p1, PSU12V1A, RPI3, DuetE, Duex2, Duex5, Melzi];
perfboards = [PERF74x51, PERF70x50, PERF60x40, PERF70x30, PERF80x20];
use <pcb.scad>

View File

@@ -66,7 +66,7 @@ module pillar(type) { //! Draw specified pillar
cylinder(h = top_thread_l, d = thread_d);
color(pillar_i_colour(type)) {
linear_extrude(height = height)
linear_extrude(height)
difference() {
circle(d = pillar_id(type), $fn = fn(pillar_ifn(type)));
circle(d = thread_d);
@@ -90,7 +90,7 @@ module pillar(type) { //! Draw specified pillar
}
if(pillar_od(type) > pillar_id(type))
color(pillar_o_colour(type)) linear_extrude(height = height)
color(pillar_o_colour(type)) linear_extrude(height)
difference() {
circle(d = pillar_od(type), $fn = fn(pillar_ofn(type)));

View File

@@ -81,7 +81,7 @@ module pin_header(type, cols = 1, rows = 1, smt = false, right_angle = false, cu
translate([0, right_angle ? -ra_offset - pitch / 2 : 0, right_angle ? width / 2 : 0])
rotate([right_angle ? 90 : 0, 0, 0])
color(base_colour)
linear_extrude(height = h)
linear_extrude(h)
for(x = [0 : cols - 1], y = [0 : rows - 1])
translate([pitch * (x - (cols - 1) / 2), pitch * (y - (rows - 1) / 2), pitch / 2])
hull() {
@@ -111,10 +111,10 @@ module box_header(type, cols = 1, rows = 1, smt = false, cutout = false) { //! D
pin(type, hdr_pin_length(type) - pitch + base);
color(hdr_base_colour(type)) {
linear_extrude(height = base)
linear_extrude(base)
square([w, l], center = true);
linear_extrude(height = h)
linear_extrude(h)
difference() {
square([w, l], center = true);
@@ -140,7 +140,7 @@ module idc_transition(type, cols = 5, skip = [], cutout = false) { //! Draw IDC
color(hdr_base_colour(type))
rotate([90, 0, 0])
linear_extrude(height = width, center = true, convexity = cols * rows)
linear_extrude(width, center = true, convexity = cols * rows)
difference() {
translate([0, height / 2])
square([length, height], center = true);
@@ -177,7 +177,7 @@ module pin_socket(type, cols = 1, rows = 1, right_angle = false, height = 0, smt
translate([0, right_angle ? -ra_offset - pitch / 2 : 0, right_angle ? width / 2 : 0])
rotate([right_angle ? 90 : 0, 0, 0])
translate_z(depth / 2)
linear_extrude(height = depth, center = true)
linear_extrude(depth, center = true)
difference() {
square([length, width], center = true);

View File

@@ -85,7 +85,7 @@ module terminal_block(type, ways) { //! Draw a power supply terminal block
for(i = [0 : ways])
translate([0, i * pitch + div])
rotate([90, 0, 0])
linear_extrude(height = div)
linear_extrude(div)
hull() {
r = 2;
square([depth, eps]);
@@ -170,7 +170,7 @@ module psu(type) { //! Draw a power supply
multmatrix(psu_face_transform(type, i))
translate([xo, 0, -t]) {
color("silver") linear_extrude(height = t)
color("silver") linear_extrude(t)
union() {
difference() {
square([xw, yw], center = true);
@@ -260,7 +260,7 @@ module psu(type) { //! Draw a power supply
heatsink_offset = 13.5;
color("#FCD67E")
translate([(-right - rt) / 2, (ft - bt) / 2, z - pcb_thickness])
linear_extrude(height = pcb_thickness)
linear_extrude(pcb_thickness)
difference() {
square([pl, pw], center = true);
@@ -306,7 +306,7 @@ module psu(type) { //! Draw a power supply
color("silver")
translate([l / 2, -w / 2])
rotate([90, 0, 180])
linear_extrude(height = length) {
linear_extrude(length) {
translate([right + rt, z_top])
rotate(135)
square([rt, right * sqrt(2)]);
@@ -336,7 +336,7 @@ 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(height = 100, center = true)
linear_extrude(100, center = true)
round(5)
polygon([ // https://www.techpowerup.com/forums/threads/pc-component-dimensions.157239, tweaked
[18.7, -13],

View File

@@ -69,7 +69,7 @@ module pulley(type) { //! Draw a pulley
ir = pulley_ir(type);
module core() {
translate_z(pulley_hub_length(type) + ft)
linear_extrude(height = w) let($fa = 1, $fs = 0.1)
linear_extrude(w) let($fa = 1, $fs = 0.1)
difference() {
circle(or);

View File

@@ -65,7 +65,7 @@ module carriage_hole_positions(type) { //! Position children over screw holes
children();
}
module carriage(type, rail, end_color = grey20, wiper_color = grey20) { //! Draw the specified carriage
module carriage(type, rail, end_colour = grey20, wiper_colour = grey20) { //! Draw the specified carriage
total_l = carriage_length(type);
block_l = carriage_block_length(type);
block_w = carriage_width(type);
@@ -84,7 +84,7 @@ module carriage(type, rail, end_color = grey20, wiper_color = grey20) { //! Draw
color(grey90) {
rotate([90, 0, 90])
linear_extrude(height = block_l, center = true)
linear_extrude(block_l, center = true)
difference() {
translate([-block_w / 2, carriage_clearance(type)])
square([block_w, block_h - screw_depth]);
@@ -93,7 +93,7 @@ module carriage(type, rail, end_color = grey20, wiper_color = grey20) { //! Draw
}
translate_z(carriage_height(type) - screw_depth)
linear_extrude(height = screw_depth)
linear_extrude(screw_depth)
difference() {
square([block_l, block_w], center = true);
@@ -104,13 +104,13 @@ module carriage(type, rail, end_color = grey20, wiper_color = grey20) { //! Draw
module carriage_end(type, end_w, end_h, end_l) {
wiper_length = 0.5;
color(wiper_color) translate_z(-end_l/2) linear_extrude(wiper_length)
color(wiper_colour) translate_z(-end_l/2) linear_extrude(wiper_length)
difference() {
translate([-end_w/2, carriage_clearance(type)])
square([end_w, end_h]);
cutout();
}
color(end_color) translate_z(wiper_length-end_l/2) linear_extrude(end_l-wiper_length)
color(end_colour) translate_z(wiper_length-end_l/2) linear_extrude(end_l-wiper_length)
difference() {
translate([-end_w/2, carriage_clearance(type)])
square([end_w, end_h]);
@@ -166,11 +166,11 @@ module rail(type, length) { //! Draw the specified rail
}
}
module rail_assembly(type, length, pos, carriage_end_color = grey20, carriage_wiper_color = grey20) { //! Rail and carriage assembly
module rail_assembly(type, length, pos, carriage_end_colour = grey20, carriage_wiper_colour = grey20) { //! Rail and carriage assembly
rail(type, length);
translate([pos, 0])
carriage(rail_carriage(type), type, carriage_end_color, carriage_wiper_color);
carriage(rail_carriage(type), type, carriage_end_colour, carriage_wiper_colour);
}

View File

@@ -60,7 +60,7 @@ module ring_terminal(type) { //! Draw specifeid ring terminal
children();
color("silver") union() {
linear_extrude(height = t)
linear_extrude(t)
difference() {
hull_if_crimp() {
circle(d = od);
@@ -102,7 +102,7 @@ module ring_terminal(type) { //! Draw specifeid ring terminal
else
translate([0, -bend])
rotate([-angle, 0, 0])
linear_extrude(height = t)
linear_extrude(t)
difference() {
length = l - od / 2 - bend;
hull() {

View File

@@ -54,7 +54,7 @@ module rocker(type, colour) { //! Draw the specified rocker switch
explode(30) {
color(grey20) {
linear_extrude(height = rocker_flange_t(type))
linear_extrude(rocker_flange_t(type))
difference() {
rounded_square([rocker_flange_w(type), rocker_flange_h(type)], 0.5);
@@ -68,7 +68,7 @@ module rocker(type, colour) { //! Draw the specified rocker switch
color(colour ? colour : grey30)
translate_z(rocker_pivot(type))
rotate([90, 0, 90])
linear_extrude(height = rocker_w, center = true)
linear_extrude(rocker_w, center = true)
difference() {
circle(rocker_r, $fa = 1);

View File

@@ -114,7 +114,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
cylinder(r = head_rad, h = head_height - socket_depth);
translate_z(head_height - socket_depth)
linear_extrude(height = socket_depth)
linear_extrude(socket_depth)
difference() {
circle(head_rad);
@@ -128,7 +128,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
color(colour) {
r = show_threads ? rad - pitch / 2 : rad;
translate_z(-socket_depth)
linear_extrude(height = socket_depth)
linear_extrude(socket_depth)
difference() {
circle(r);
@@ -161,7 +161,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
square([socket_rad, 10]);
}
linear_extrude(height = head_height)
linear_extrude(head_height)
difference() {
circle(socket_rad + eps);
@@ -187,7 +187,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
square([socket_rad, 10]);
}
}
linear_extrude(height = head_height)
linear_extrude(head_height)
difference() {
circle(socket_rad + eps);
circle(socket_rad, $fn = 6);
@@ -211,7 +211,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
}
translate_z(-socket_depth)
linear_extrude(height = socket_depth)
linear_extrude(socket_depth)
difference() {
circle(socket_rad + 0.1);
@@ -234,7 +234,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
}
translate_z(-socket_depth)
linear_extrude(height = socket_depth)
linear_extrude(socket_depth)
difference() {
circle(socket_rad + 0.1);

View File

@@ -41,7 +41,7 @@ function scs_circlip(type) = type[15]; //! Circlip used
function scs_spacer(type) = type[16]; //! Spacer used in long bearings
sks_bearing_block_color = grey90;
sks_bearing_block_colour = grey90;
module scs_bearing_block(type) { //! Draw the specified SCS bearing block
vitamin(str("scs_bearing_block(", type[0], "): ", type[0], " bearing block"));
@@ -71,7 +71,7 @@ module scs_bearing_block(type) { //! Draw the specified SCS bearing block
boltHoleRadius = screw_clearance_radius(S1);
footHeight = min(0.75, (G - bearing_dia(bearing) - 1.5) / 2); // estimate, not specified on drawings
color(sks_bearing_block_color) {
color(sks_bearing_block_colour) {
linear_extrude(L, center = true) {
bearingRadius = bearing_dia(bearing) / 2;
// center section with bearing hole

View File

@@ -48,6 +48,6 @@ module sealing_strip(length) { //! Draw specified length of sealing strip
vitamin(str("sealing_strip(", length, "): Sealing strip 10mm x 4mm x ", length, "mm"));
rotate([90, 0, 90])
color("Sienna")
linear_extrude(height = length, center = true)
linear_extrude(length, center = true)
rounded_polygon(profile);
}

View File

@@ -25,7 +25,7 @@
//! * If soft, wood screws will be used, with a pilot hole.
//! * If not soft, either tapped holes or a clearance hole and nuts will be used to retain screws.
//!
//! The "Color" parameter is a quad-array: [R, G, B, Alpha], or can be a named color, see [OpenSCAD_User_Manual](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#color).
//! The "Colour" parameter is a quad-array: [R, G, B, Alpha], or can be a named colour, see [OpenSCAD_User_Manual](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#color).
//!
//! For speed sheets should be modelled in 2D by subtracting holes from 2D templates made by ```sheet_2D()``` and then extruded to 3D with ```render_2D_sheet()```.
//! Note that modules that drill holes will return a 2D object if ```h``` is set to 0 to facilitate this.
@@ -75,14 +75,14 @@ module sheet_2D(type, w, d, corners = [0, 0, 0, 0]) { //! 2D sheet template with
}
module sheet(type, w, d, corners = [0, 0, 0, 0]) //! Draw specified sheet
linear_extrude(height = sheet_thickness(type), center = true)
linear_extrude(sheet_thickness(type), center = true)
sheet_2D(type, w, d, corners);
module render_sheet(type, color = false) //! Render a sheet in the correct colour after holes have been subtracted
color(color ? color : sheet_colour(type))
module render_sheet(type, colour = false) //! Render a sheet in the correct colour after holes have been subtracted
color(colour ? colour : sheet_colour(type))
render() children();
module render_2D_sheet(type, color = false) //! Extrude a 2D sheet template and give it the correct colour
color(color ? color : sheet_colour(type))
linear_extrude(height = sheet_thickness(type), center = true)
module render_2D_sheet(type, colour = false) //! Extrude a 2D sheet template and give it the correct colour
color(colour ? colour : sheet_colour(type))
linear_extrude(sheet_thickness(type), center = true)
children();

View File

@@ -24,7 +24,7 @@ include <../utils/fillet.scad>
use <washer.scad>
sk_bracket_color = grey70;
sk_bracket_colour = grey70;
function sk_diameter(type) = type[1]; //! Rod hole diameter
function sk_hole_offset(type) = type[2]; //! Rod hole offset
@@ -47,7 +47,7 @@ module sk_bracket(type) { //! SK shaft support bracket
S = type[10];
bolthole_radius = type[11];
color(sk_bracket_color) {
color(sk_bracket_colour) {
translate([0 , -h, 0]) {
fillet = 0.5;
rotate([-90, 0, 0])

View File

@@ -37,7 +37,7 @@ module spade(type, height = 14) { //! Draw a spade of the specified type and tot
color("silver")
rotate([90, 0, 0])
linear_extrude(height = spade_t(type), center = true)
linear_extrude(spade_t(type), center = true)
difference() {
union() {
if(shank_l > 0)

View File

@@ -44,7 +44,7 @@ module ssr(type) { //! Draw specified SSR
t = ssr_base_t(type);
h = ssr_height(type);
color("silver") linear_extrude(height = t) difference() {
color("silver") linear_extrude(t) difference() {
square([l, w], center = true);
ssr_hole_positions(type)
@@ -52,7 +52,7 @@ module ssr(type) { //! Draw specified SSR
}
color([242/255, 236/255, 220/255])
translate_z(t)
linear_extrude(height = h - t) difference() {
linear_extrude(h - t) difference() {
square([l, w], center = true);
for(end = [-1, 1])

View File

@@ -42,6 +42,7 @@ function NEMA_big_hole(type) = NEMA_boss_radius(type) + 0.2; //! Clearance ho
stepper_body_colour = "black";
stepper_cap_colour = grey50;
stepper_machined_colour = grey90;
module NEMA_outline(type) //! 2D outline
intersection() {
@@ -62,57 +63,63 @@ module NEMA(type, shaft_angle = 0) { //! Draw specified NEMA stepper motor
vitamin(str("NEMA(", type[0], "): Stepper motor NEMA", round(NEMA_width(type) / 2.54), " x ", length, "mm"));
thread_d = 3; // Is this always the case?
union() {
color(stepper_body_colour) // black laminations
translate_z(-length / 2)
linear_extrude(height = length - cap * 2, center = true)
intersection() {
square([side, side], center = true);
module cap_shape(end)
difference() {
intersection() {
square([side, side], center = true);
circle(body_rad);
}
color(stepper_cap_colour) { // aluminium end caps
tube(or = boss_rad, ir = shaft_rad + 2, h = boss_height * 2); // raised boss
for(end = [-1, 1])
translate_z(-length / 2 + end * (length - cap) / 2) {
linear_extrude(height = cap, center = true)
difference() {
intersection() {
square([side, side], center = true);
circle(NEMA_radius(type));
}
if(end > 0)
for(x = NEMA_holes(type), y = NEMA_holes(type))
translate([x, y])
circle(d = thread_d);
}
}
circle(NEMA_radius(type), $fn = 360);
}
if(end > 0)
for(x = NEMA_holes(type), y = NEMA_holes(type))
translate([x, y])
circle(d = thread_d);
}
if(show_threads)
for(x = NEMA_holes(type), y = NEMA_holes(type))
translate([x, y, -cap / 2])
female_metric_thread(thread_d, metric_coarse_pitch(thread_d), cap, colour = stepper_cap_colour);
shaft = NEMA_shaft_length(type);
translate_z(-5)
rotate(shaft_angle)
if(!is_list(shaft))
color(stepper_cap_colour)
cylinder(r = shaft_rad, h = shaft + 5); // shaft
else
not_on_bom()
leadscrew(shaft_rad * 2, shaft.x + 5, shaft.y, shaft.z, center = false)
color(stepper_body_colour) // black laminations
translate_z(-length / 2)
linear_extrude(length - cap * 2, center = true)
intersection() {
square([side, side], center = true);
translate([0, side / 2, -length + cap / 2])
rotate([90, 0, 0])
for(i = [0 : 3])
rotate(225 + i * 90)
color(["red", "blue","green","black"][i])
translate([1, 0, 0])
cylinder(r = 1.5 / 2, h = 12, center = true);
circle(body_rad);
}
color(stepper_machined_colour) {
tube(or = boss_rad, ir = shaft_rad + 2, h = boss_height * 2); // raised boss
linear_extrude(eps)
cap_shape(true);
}
color(stepper_cap_colour) // aluminium end caps
for(end = [-1, 1])
translate_z(-length / 2 + end * (length - cap) / 2)
linear_extrude(cap, center = true)
cap_shape(end);
if(show_threads)
for(x = NEMA_holes(type), y = NEMA_holes(type))
translate([x, y, -cap / 2])
female_metric_thread(thread_d, metric_coarse_pitch(thread_d), cap, colour = stepper_cap_colour);
shaft = NEMA_shaft_length(type);
translate_z(-5)
rotate(shaft_angle)
if(!is_list(shaft))
color(stepper_machined_colour)
cylinder(r = shaft_rad, h = shaft + 5); // shaft
else
not_on_bom()
leadscrew(shaft_rad * 2, shaft.x + 5, shaft.y, shaft.z, center = false)
translate([0, side / 2, -length + cap / 2])
rotate([90, 0, 0])
for(i = [0 : 3])
rotate(225 + i * 90)
color(["red", "blue","green","black"][i])
translate([1, 0, 0])
cylinder(r = 1.5 / 2, h = 12, center = true);
}
module NEMA_screw_positions(type, n = 4) { //! Positions children at the screw holes

View File

@@ -130,7 +130,7 @@ module toggle(type, thickness) { //! Draw specified toggle switch with the nuts
rotate([max(angle, 0), 0, 0])
if(toggle_paddle_w(type))
translate_z(l)
linear_extrude(height = eps, center = true)
linear_extrude(eps, center = true)
intersection() {
circle(d = d1);
@@ -151,7 +151,7 @@ module toggle(type, thickness) { //! Draw specified toggle switch with the nuts
rows = pins > 3 ? 2 : 1;
color("gold")
translate_z(-toggle_depth(type) - toggle_pin_l(type) / 2)
linear_extrude(height = toggle_pin_l(type), center = true)
linear_extrude(toggle_pin_l(type), center = true)
for(i = [0 : pins - 1]) {
x = rows < 2 ? 0 : (i % 2) - 0.5;
y = rows < 2 ? i - 1 : floor(i / 2) - 1;

View File

@@ -44,7 +44,7 @@ module transformer(type) { //! Draw specified transformer
vitamin(str("transformer(", type[0], "): Transformer ", tx_part(type)));
color("silver") {
linear_extrude(height = tx_foot_thickness(type))
linear_extrude(tx_foot_thickness(type))
difference() {
rounded_square([tx_foot_width(type), tx_foot_depth(type)], r = 2);

View File

@@ -37,7 +37,7 @@ module tubing(type, length = 15, forced_id = 0) { //! Draw specified tubing with
else
vitamin(str("tubing(", type[0], arg(length, 15), "): ", tubing_material(type), " OD ", original_od, "mm ID ", original_id,"mm x ",length, "mm"));
color(tubing_colour(type))
linear_extrude(height = length, center = true, convexity = 4)
linear_extrude(length, center = true, convexity = 4)
difference() {
circle(d = od);
circle(d = id);

View File

@@ -54,7 +54,7 @@ module variac_holes(type, h = 100) { //! Drill panel holes for specified vari
}
module variac_dial(type) //! Draw the dial for the specified variac
color("silver") linear_extrude(height = variac_dial_thickness(type))
color("silver") linear_extrude(variac_dial_thickness(type))
difference() {
circle(d = variac_dial_dia(type));
@@ -81,7 +81,7 @@ module variac(type, thickness = 3, dial = true) { //! Draw the specified varia
translate_z(-h) {
color("#A66955") {
linear_extrude(height = h)
linear_extrude(h)
difference() {
shape();
@@ -89,7 +89,7 @@ module variac(type, thickness = 3, dial = true) { //! Draw the specified varia
circle(screw_radius(variac_screw(type)));
}
linear_extrude(height = h - 10)
linear_extrude(h - 10)
shape();
}
color("silver")

View File

@@ -86,7 +86,7 @@ module veroboard(type) { //! Draw specified veroboard with missing tracks and tr
vitamin(str("veroboard(", type[0], "): Veroboard ", holes, " holes x ", strips, "strips"));
color(colour) linear_extrude(height = vero_thickness(type))
color(colour) linear_extrude(vero_thickness(type))
difference() {
rounded_square([length, width], r = 0.5, center = true);
@@ -98,7 +98,7 @@ module veroboard(type) { //! Draw specified veroboard with missing tracks and tr
circle(r = screw_radius(vero_screw(type)));
}
color(tc) vflip() linear_extrude(height = vero_track_thickness(type))
color(tc) vflip() linear_extrude(vero_track_thickness(type))
difference() {
vflip()
for(y = [0 : strips -1])

View File

@@ -53,7 +53,7 @@ module washer(type) { //! Draw specified washer
else
vitamin(str("washer(", type[0], "_washer): Washer ", penny ? "penny " : "", " M", hole, " x ", diameter, "mm x ", thickness, "mm"));
color(washer_colour(type))
linear_extrude(height = thickness - 0.05)
linear_extrude( thickness - 0.05)
difference() {
circle(d = diameter);
circle(d = washer_id(type));
@@ -80,7 +80,7 @@ module star_washer(type) { //! Draw star version of washer
spoke = rad - hole / 2;
vitamin(str("star_washer(", type[0], "_washer): Washer star M", hole, " x ", thickness, "mm"));
color(star_washer_colour)
linear_extrude(height = thickness)
linear_extrude(thickness)
difference() {
circle(rad);
@@ -123,7 +123,7 @@ module printed_washer(type, name = false) { //! Create printed washer
or = washer_radius(type);
ir = washer_id(type) / 2;
color(pp1_colour)
linear_extrude(height = t, center = false, convexity = 2)
linear_extrude(t, center = false, convexity = 2)
poly_ring(or, ir);
if($children)

View File

@@ -23,8 +23,8 @@
include <../utils/core/core.scad>
include <zipties.scad>
module wire(color, strands, length, strand = 0.2) //! Add stranded wire to the BOM
vitamin(str(": Wire ", color, " ", strands, "/", strand, "mm strands, length ",length, "mm"));
module wire(colour, strands, length, strand = 0.2) //! Add stranded wire to the BOM
vitamin(str(": Wire ", colour, " ", strands, "/", strand, "mm strands, length ",length, "mm"));
module ribbon_cable(ways, length) //! Add ribbon cable to the BOM
vitamin(str(": Ribbon cable ", ways, " way ", length, "mm"));

View File

@@ -53,7 +53,7 @@ module ziptie(type, r, t = 0) //! Draw specified ziptie wrapped around radius ``
vitamin(str("ziptie(", type[0], ", ", r, "): Ziptie ", width, "mm x ", len, "mm min length"));
color(ziptie_colour(type)){
linear_extrude(height = width, center = true)
linear_extrude(width, center = true)
difference() {
rounded_polygon(outside_path, tangents);
rounded_polygon(inside_path);

View File

@@ -17,7 +17,7 @@
// If not, see <https://www.gnu.org/licenses/>.
//
// [width, thickness, [latch_x, latch_y, latch_z], color, tail]
// [width, thickness, [latch_x, latch_y, latch_z], colour, tail]
small_ziptie = ["small_ziptie", 2.5, 1.0, [4.7, 4.25, 3.0], "white", 25];
ziptie_3mm = ["ziptie_3mm", 3.0, 1.0, [5.4, 5.44, 4.5], "white", 25];
ziptie_3p6mm = ["ziptie_3p6mm", 3.6, 1.2, [6.4, 6.62, 4.7], "white", 25];