Removed the height parameter from linear_extrude

This commit is contained in:
Chris Palmer 2020-03-29 20:18:57 +01:00
parent 390957fdd0
commit e8abcde52f
81 changed files with 245 additions and 245 deletions

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); length = box_height(type) - 2 * box_margin(type);
difference() { difference() {
linear_extrude(height = length, center = true, convexity = 5) linear_extrude(length, center = true, convexity = 5)
box_corner_profile_2D(type); box_corner_profile_2D(type);
for(z = [-1, 1]) for(z = [-1, 1])
@ -148,24 +148,24 @@ module box_corner_profile_section(type, section, sections) { //! Generates inter
difference() { difference() {
union() { union() {
linear_extrude(height = h, convexity = 5) linear_extrude(h, convexity = 5)
box_corner_profile_2D(type); box_corner_profile_2D(type);
if(!last_section) // male end always at the top if(!last_section) // male end always at the top
translate_z(section_length - 1) translate_z(section_length - 1)
for(i = [0 : 1], offset = i * layer_height) 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(1 + offset - layer_height)
offset(-overlap_wall - 1) offset(-overlap_wall - 1)
box_corner_profile_2D(type); box_corner_profile_2D(type);
} }
if(section > 0) if(section > 0)
translate_z(last_section ? h : 0) { // female at bottom unless last section 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) offset(-overlap_wall)
box_corner_profile_2D(type); 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) offset(-overlap_wall + layer_height)
box_corner_profile_2D(type); box_corner_profile_2D(type);
} }
@ -223,7 +223,7 @@ module box_bezel(type, bottom) { //! Generates top and bottom bezel STLs
// slots for side panels // slots for side panels
// //
translate_z(-box_profile_overlap(type)) 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]) { for(i = [-1, 1]) {
translate([i * (box_width(type) / 2 + t / 2 - sheet_slot_clearance / 2), 0]) 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); 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 // leave plastic over the corner profiles
// //
translate_z(-box_profile_overlap(type) - 1) 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() { union() {
difference() { difference() {
square([box_width(type) - 2 * box_inset(type), 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; end_clearance = 0.5;
module male() { module male() {
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = dowel_length - 2 * end_clearance, center = true) linear_extrude(dowel_length - 2 * end_clearance, center = true)
difference() { difference() {
union() { union() {
h = dh - layer_height; h = dh - layer_height;

View File

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

View File

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

View File

@ -81,7 +81,7 @@ module fixing_block(screw = def_screw) { //! Generate the STL
difference() { difference() {
union() { union() {
linear_extrude(height = fb_height, convexity = 5) linear_extrude(fb_height, convexity = 5)
difference() { difference() {
hull() { hull() {
for(side = [-1, 1]) { 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 teardrop_r = kr / cos(22.5); // The corner on the teardrop
inset = sqrt(sqr(teardrop_r + gap) - sqr(kr - t)) - kr; inset = sqrt(sqr(teardrop_r + gap) - sqr(kr - t)) - kr;
linear_extrude(height =t) linear_extrude(t)
difference() { difference() {
hull() { hull() {
for(side = [-1, 1]) for(side = [-1, 1])
@ -102,7 +102,7 @@ module hinge_male(type, female = false) { //! The half with the stationary
rotate([90, 0, -90]) rotate([90, 0, -90])
for(z = [0 : (female ? fn : mn) - 1]) for(z = [0 : (female ? fn : mn) - 1])
translate_z(-dir * w / 2 + z * dir * pitch + (female ? -fw - mw - gap : 0)) 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() { difference() {
hull() { hull() {
rotate(180) rotate(180)

View File

@ -56,7 +56,7 @@ module foot(type = foot) { //! Generate STL
circle4n(r); circle4n(r);
} }
} }
linear_extrude(height = t) linear_extrude(t)
difference() { difference() {
circle(r1 + eps); 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() { difference() {
circle(r5 + eps); 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 module pcb_mount_washer_stl() //! A plastic washer to clamp a PCB
linear_extrude(height = washer_thickness) linear_extrude(washer_thickness)
pcb_mount_ring(); pcb_mount_ring();
module pcb_mount(pcb, height = 5, washers = true) { //! Make the STL of a pcb mount for the specified PCB. 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); cube([pillar_x_pitch(pcb) - 2 * wall, frame_w, frame_t], center = true);
pcb_mount_screw_positions(pcb) pcb_mount_screw_positions(pcb)
linear_extrude(height = height) linear_extrude(height)
pcb_mount_ring(); pcb_mount_ring();
linear_extrude(height = height + pcb_thickness(pcb) - layer_height) linear_extrude(height + pcb_thickness(pcb) - layer_height)
difference() { difference() {
pcb_mount_screw_positions(pcb) pcb_mount_screw_positions(pcb)
pcb_mount_ring(); pcb_mount_ring();

View File

@ -129,7 +129,7 @@ module pbox_base(type) { //! Generate the STL for the base
t = pbox_base(type); t = pbox_base(type);
difference() { difference() {
union() { union() {
linear_extrude(height = t) linear_extrude(t)
offset(base_outset - 0.2) offset(base_outset - 0.2)
pbox_inner_shape(type); pbox_inner_shape(type);
@ -157,7 +157,7 @@ module pbox(type) { //! Generate the STL for the main case
difference() { difference() {
union() { union() {
linear_extrude(height = total_height) linear_extrude(total_height)
offset(wall / 2) pbox_mid_shape(type); offset(wall / 2) pbox_mid_shape(type);
if($children > 2) if($children > 2)
@ -166,11 +166,11 @@ module pbox(type) { //! Generate the STL for the main case
difference() { difference() {
translate_z(top_thickness) translate_z(top_thickness)
union() { union() {
linear_extrude(height = height + eps) linear_extrude(height + eps)
offset(-wall / 2) pbox_mid_shape(type); offset(-wall / 2) pbox_mid_shape(type);
translate_z(height) // Recess for the base translate_z(height) // Recess for the base
linear_extrude(height = total_height - height) linear_extrude(total_height - height)
offset(base_outset) offset(base_outset)
pbox_inner_shape(type); 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); rounded_rectangle([pbox_width(type) + 2 * outset, pbox_depth(type) + 2 * outset, ledge_h], 1, center = false);
hull() { hull() {
linear_extrude(height = ledge_h + eps) linear_extrude(ledge_h + eps)
offset(ledge_inset) offset(ledge_inset)
pbox_inner_shape(type); pbox_inner_shape(type);
linear_extrude(height = eps) linear_extrude(eps)
offset(ledge_outset) offset(ledge_outset)
pbox_inner_shape(type); 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]) { translate([centre_x, -centre_y]) {
rounded_rectangle([depth - eps, width - eps, top], rad, center = false); rounded_rectangle([depth - eps, width - eps, top], rad, center = false);
linear_extrude(height = height) linear_extrude(height)
difference() { difference() {
shape(); shape();
translate([depth / 2, width / 2 - 5]) translate([depth / 2, width / 2 - 5])
square([2 * (depth - extent + terminal_clearance), 10], center = true); 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(); shape();
} }
// cable slots // cable slots
for(i = [0 : 1 : cables - 1]) 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]) 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]) rotate([90, 0, 90])
linear_extrude(height = wall, center = true) linear_extrude(wall, center = true)
difference() { difference() {
square([cable_d + eps, height], center = true); 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) rotate(45)
circle(r = nut_trap_radius(screw_nut(screw)), $fn = 6); circle(r = nut_trap_radius(screw_nut(screw)), $fn = 6);
} }
linear_extrude(height = knob_thickness, convexity = 3) linear_extrude(knob_thickness, convexity = 3)
difference() { difference() {
polygon(points = [for(a = [0 : 359]) [wave(a) * sin(a), wave(a) * cos(a)]]); 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); insert_hole_radius = insert_hole_radius(insert);
difference() { difference() {
linear_extrude(height = height, convexity = 5) linear_extrude(height, convexity = 5)
face_plate(type); face_plate(type);
difference() { difference() {
translate_z(base_thickness) translate_z(base_thickness)
linear_extrude(height = height, convexity = 5) linear_extrude(height, convexity = 5)
offset(-wall) offset(1) face_plate(type); offset(-wall) offset(1) face_plate(type);
for(side = [-1, 1]) 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]) { translate([center_x, 0]) {
rounded_rectangle([depth - eps, width - eps, top], rad, center = false); 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() { round(or = wall / 2 - eps, ir = 0) difference() {
rounded_square([depth, width], rad); 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]) for(side = [-1, 1])
translate([cable_x, side * (width / 2 - wall / 2), height / 2]) translate([cable_x, side * (width / 2 - wall / 2), height / 2])
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = wall, center = true) linear_extrude(wall, center = true)
difference() { difference() {
square([cable_d + eps, height], center = true); 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); len = length - 2 * (wall + clearance);
w = strap_width(type); w = strap_width(type);
linear_extrude(height = strap_thickness(type), convexity = 3) linear_extrude(strap_thickness(type), convexity = 3)
difference() { difference() {
rounded_square([len, w], w / 2 - eps); rounded_square([len, w], w / 2 - eps);
@ -119,12 +119,12 @@ module strap_end(type = strap) { //! Generate the STL for end piece
} }
union() { union() {
linear_extrude(height = z1) linear_extrude(z1)
with_hole() with_hole()
outer(); outer();
translate_z(z1) translate_z(z1)
linear_extrude(height = strap_height(type) - z1) linear_extrude(strap_height(type) - z1)
difference() { difference() {
outer(); 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() with_hole()
strap_boss_shape(type); strap_boss_shape(type);
linear_extrude(height = z2) linear_extrude(z2)
with_hole() with_hole()
offset(cnc_bit_r) offset(cnc_bit_r)
offset(-step - cnc_bit_r) offset(-step - cnc_bit_r)

View File

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

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -56,7 +56,7 @@ module wires() {
color(pp1_colour) { color(pp1_colour) {
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = thickness) linear_extrude(thickness)
difference() { difference() {
translate([-w / 2, 0]) translate([-w / 2, 0])
square([w, h]); square([w, h]);
@ -65,7 +65,7 @@ module wires() {
} }
translate_z(-thickness) translate_z(-thickness)
linear_extrude(height = thickness) linear_extrude(thickness)
difference() { difference() {
translate([thickness -d, -w / 2]) translate([thickness -d, -w / 2])
square([d, w]); 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 module label(str, scale = 0.25, valign = "baseline", halign = "left") //! Draw text that always faces the camera
color("black") color("black")
%rotate($vpr != [0, 0, 0] ? $vpr : [70, 0, 315]) %rotate($vpr != [0, 0, 0] ? $vpr : [70, 0, 315])
linear_extrude(height = eps) linear_extrude(eps)
scale(scale) scale(scale)
text(str, valign = valign, halign = halign); text(str, valign = valign, halign = halign);

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 module extrude_if(h, center = true) //! Extrudes 2D object to 3D when ```h``` is nonzero, otherwise leaves it 2D
if(h) if(h)
linear_extrude(height = h, center = center, convexity = 2) // 3D linear_extrude(h, center = center, convexity = 2) // 3D
children(); children();
else else
children(); // 2D 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. 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); 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() { difference() {
translate_z(-below) translate_z(-below)
linear_extrude(height = below + 2 * layer_height) linear_extrude(below + 2 * layer_height)
children(); children();
rotate(infill_angle) 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``` 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); ring(or, ir);

View File

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

View File

@ -75,7 +75,7 @@ module battery(type) { //! Draw a battery
if(battery_usb_offset(type)) if(battery_usb_offset(type))
translate([battery_diameter(type) / 2, 0, len / 2 - battery_usb_offset(type) + h / 2]) translate([battery_diameter(type) / 2, 0, len / 2 - battery_usb_offset(type) + h / 2])
rotate([-90, 0, 90]) rotate([-90, 0, 90])
linear_extrude(height = l + 1) linear_extrude(l + 1)
offset(delta = t) offset(delta = t)
D(); D();
} }
@ -87,14 +87,14 @@ module battery(type) { //! Draw a battery
if(battery_usb_offset(type)) if(battery_usb_offset(type))
translate([battery_diameter(type) / 2 - 1, 0, len / 2 - battery_usb_offset(type) + h / 2]) translate([battery_diameter(type) / 2 - 1, 0, len / 2 - battery_usb_offset(type) + h / 2])
rotate([-90, 0, 90]) { rotate([-90, 0, 90]) {
linear_extrude(height = l) linear_extrude(l)
difference() { difference() {
offset(t) D(); offset(t) D();
D(); D();
} }
translate_z(l - 1) translate_z(l - 1)
linear_extrude(height = 1) linear_extrude(1)
D(); D();
} }
@ -132,7 +132,7 @@ module battery_contact(type, pos = true) { //! Draw a positive or negative batte
translate([0, -h / 2, t]) translate([0, -h / 2, t])
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = t) linear_extrude(t)
difference() { difference() {
hull() { hull() {
translate([-tw / 2, -1]) 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); square([gap, thickness + eps], center = true);
color(belt_colour) color(belt_colour)
linear_extrude(height = width, center = true) linear_extrude(width, center = true)
difference() { difference() {
offset(thickness - belt_pitch_height(type)) shape(); offset(thickness - belt_pitch_height(type)) shape();
offset(-belt_pitch_height(type) + belt_tooth_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) color(tooth_colour)
linear_extrude(height = width, center = true) linear_extrude(width, center = true)
difference() { difference() {
offset(-belt_pitch_height(type) + belt_tooth_height(type)) shape(); offset(-belt_pitch_height(type) + belt_tooth_height(type)) shape();
offset(-belt_pitch_height(type)) shape(); offset(-belt_pitch_height(type)) shape();

View File

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

View File

@ -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")); 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_color) linear_extrude(w, center = true, convexity = 4)
difference() { difference() {
union() { union() {
translate([-bottom, radius]) 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], [delta[2] / delta[0], 0, 1, delta[2] / 2],
[0, 0, 0, 1] ]) [0, 0, 0, 1] ])
color(cable_strip_color) linear_extrude(height = w, center = true, convexity = 4) color(cable_strip_color) linear_extrude(w, center = true, convexity = 4)
difference() { difference() {
union() { union() {
square([(a + thickness) * 2, extra * 2], center = true); 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; y_offset = (sqr(p.x) + sqr(p.y) - sqr(or - b)) / (or - b - p.y) / 2;
ir = or - b + y_offset; ir = or - b + y_offset;
color(circlip_colour) color(circlip_colour)
linear_extrude(height = circlip_thickness(type), center = true) linear_extrude(circlip_thickness(type), center = true)
round((a - d5) / 5) round((a - d5) / 5)
union() { union() {
difference() { difference() {

View File

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

View File

@ -62,7 +62,7 @@ module d_pillar() { //! Draw a pillar for a D-connector
cylinder(d = screw, h = screw_length + 1); cylinder(d = screw, h = screw_length + 1);
color(d_pillar_color) { color(d_pillar_color) {
linear_extrude(height = height) linear_extrude(height)
difference() { difference() {
circle(r = rad, $fn = 6); circle(r = rad, $fn = 6);
circle(d = screw); circle(d = screw);
@ -107,7 +107,7 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
// Shell // Shell
// //
color(d_plug_shell_color) { color(d_plug_shell_color) {
linear_extrude(height = d_flange_thickness(type)) linear_extrude( d_flange_thickness(type))
difference() { difference() {
rounded_square([flange_length, flange_width], 2); 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); circle(hole_r);
} }
linear_extrude(height = front_height, convexity = 5) linear_extrude(front_height, convexity = 5)
difference() { difference() {
D(d_length, d_width, 2.5); D(d_length, d_width, 2.5);
D(d_length - 2 * dwall, d_width - 2 * dwall, 2.5 - dwall); D(d_length - 2 * dwall, d_width - 2 * dwall, 2.5 - dwall);
@ -123,7 +123,7 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
if(!idc) if(!idc)
rotate([0,180,0]) 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); D(d_lengths(type)[0] + 2 * dwall, d_widths(type)[0] + 2 * dwall, 2.5 + dwall);
} }
@ -133,11 +133,11 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
color(d_plug_insulator_color) { color(d_plug_insulator_color) {
translate_z(d_flange_thickness(type) + eps) translate_z(d_flange_thickness(type) + eps)
rotate([0, 180, 0]) 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); D(d_length - dwall, d_width - dwall, 2.5 - dwall/2);
if(socket) if(socket)
linear_extrude(height = front_height - eps, convexity = 5) linear_extrude(front_height - eps, convexity = 5)
difference() { difference() {
D(d_length - dwall, d_width - dwall, 2.5 - dwall/2); 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) if(pcb)
rotate([0, 180, 0]) { rotate([0, 180, 0]) {
linear_extrude(height = back_height + 1 + 4.5) linear_extrude(back_height + 1 + 4.5)
pin_positions() pin_positions()
circle(r = 0.75 / 2, $fn = 12); circle(r = 0.75 / 2, $fn = 12);
linear_extrude(height = back_height + 1 + 1) linear_extrude(back_height + 1 + 1)
pin_positions() pin_positions()
circle(r = 0.75, $fn = 12); circle(r = 0.75, $fn = 12);
} }
@ -183,7 +183,7 @@ module d_plug(type, socket = false, pcb = false, idc = false) { //! Draw specifi
pin_positions() pin_positions()
rotate(180 + ($i % 2) * 180) rotate(180 + ($i % 2) * 180)
render() difference() { render() difference() {
linear_extrude(height = 8) linear_extrude(8)
difference() { difference() {
circle(1); circle(1);

View File

@ -80,10 +80,10 @@ module fan(type) { //! Draw specified fan, origin in the centre
if(middle > 0) { if(middle > 0) {
for(z = [-1, 1]) for(z = [-1, 1])
translate_z(z * (depth - thickness) / 2) translate_z(z * (depth - thickness) / 2)
linear_extrude(height = thickness, center = true) linear_extrude(thickness, center = true)
shape(); shape();
linear_extrude(height = middle, center = true) linear_extrude(middle, center = true)
difference() { difference() {
shape(); shape();
difference() { difference() {
@ -100,13 +100,13 @@ module fan(type) { //! Draw specified fan, origin in the centre
} }
} }
else else
linear_extrude(height = depth, center = true) linear_extrude(depth, center = true)
shape(); shape();
// Blades // Blades
blade_ir = fan_hub(type) / 2 - 1; blade_ir = fan_hub(type) / 2 - 1;
blade_len = fan_bore(type) / 2 - 0.75 - blade_ir; 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]) for(i = [0 : fan_blades(type) - 1])
rotate((360 * i) / fan_blades(type)) rotate((360 * i) / fan_blades(type))
translate([blade_ir, -1.5 / 2]) 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) { color(colour) {
tube(or = nut_d / 2, ir = thread_d / 2, h = nut_flange_t, center = false); 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() { difference() {
circle(d = nut_d, $fn = 6); 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); cylinder(r = 5, h = flange_t - 1);
linear_extrude(height = flange_t) linear_extrude(flange_t)
difference() { difference() {
circle(r = 5); circle(r = 5);
@ -96,7 +96,7 @@ module fuseholder(thickness) { //! Fuseholder with nut in place for specified pa
vflip() { vflip() {
if(!show_threads) if(!show_threads)
linear_extrude(height = thread) linear_extrude(thread)
intersection() { intersection() {
circle(d = thread_d - 0.3); 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]) for(side = [-1, 1])
translate([side * contact_slot_d / 2, 0, contact_slot_z]) translate([side * contact_slot_d / 2, 0, contact_slot_z])
rotate([0, -70, 90 - side * 90]) rotate([0, -70, 90 - side * 90])
linear_extrude(height = contact_t, center = true) difference() { linear_extrude(contact_t, center = true) difference() {
hull() { hull() {
square([eps, contact_w], center = true); 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); 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() { difference() {
hull() hull()
geared_stepper_screw_positions(type) geared_stepper_screw_positions(type)
@ -78,7 +78,7 @@ module geared_stepper(type) { //! Draw the specified geared stepper
color(brass) { color(brass) {
d = gs_shaft_d(type); d = gs_shaft_d(type);
h = gs_shaft_length(type); h = gs_shaft_length(type);
linear_extrude(height = h) linear_extrude(h)
intersection() { intersection() {
circle(d = d); circle(d = d);
@ -95,7 +95,7 @@ module geared_stepper(type) { //! Draw the specified geared stepper
h2 = gs_bulge2_h(type); h2 = gs_bulge2_h(type);
translate([0, - offset, h1 + 1 - h2]) translate([0, - offset, h1 + 1 - h2])
linear_extrude(height = h2) linear_extrude(h2)
round(0.5) round(0.5)
intersection() { intersection() {
circle(gs_bulge2_d(type)); circle(gs_bulge2_d(type));

View File

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

View File

@ -69,7 +69,7 @@ module hygrometer() { //! Draw a hygrometer
cylinder(d = apperture_d, h = eps); cylinder(d = apperture_d, h = eps);
color("black") color("black")
linear_extrude(height = 0.2, center = true) { linear_extrude(0.2, center = true) {
translate([0, 3]) translate([0, 3])
text("20_4", font = "7 segment", valign = "bottom", halign = "center", size = apperture_d / 6); 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) { color(grey20) {
// Flange // Flange
flange_t = iec_flange_t(type); flange_t = iec_flange_t(type);
linear_extrude(height = flange_t) linear_extrude(flange_t)
difference() { difference() {
hull() { hull() {
rounded_square([iec_flange_w(type), iec_flange_h(type)], iec_flange_r(type)); 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 // Bezel
translate_z(iec_flange_t(type)) translate_z(iec_flange_t(type))
linear_extrude(height = iec_bezel_t(type)) linear_extrude(iec_bezel_t(type))
difference() { difference() {
rounded_square([iec_bezel_w(type), iec_bezel_h(type)], iec_bezel_r(type)); 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 // Body
h = socket_d - iec_flange_t(type) - iec_bezel_t(type); h = socket_d - iec_flange_t(type) - iec_bezel_t(type);
translate_z(-h) translate_z(-h)
linear_extrude(height = h) linear_extrude(h)
difference() { difference() {
body_shape(); body_shape();
@ -182,7 +182,7 @@ module iec(type) { //! Draw specified IEC connector
} }
// Back // Back
translate_z(-iec_depth(type)) translate_z(-iec_depth(type))
linear_extrude(height = iec_depth(type) - h) linear_extrude(iec_depth(type) - h)
body_shape(); body_shape();
} }
if(!iec_male(type)) 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() hull()
poly_ring(or, ir); poly_ring(or, ir);
linear_extrude(height = z) linear_extrude(z)
poly_ring(or, ir); poly_ring(or, ir);
linear_extrude(height = z - insert_hole_length(type)) linear_extrude(z - insert_hole_length(type))
difference() { difference() {
shape(); 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) 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(); shape();
} }
@ -143,7 +143,7 @@ module insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, f
} }
translate_z(-boss_h) translate_z(-boss_h)
linear_extrude(height = boss_h) linear_extrude(boss_h)
difference() { difference() {
shape(); shape();
@ -152,7 +152,7 @@ module insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, f
// insert boss counter_bore // insert boss counter_bore
translate_z(-boss_h2) { translate_z(-boss_h2) {
linear_extrude(height = counter_bore + eps) linear_extrude(counter_bore + eps)
difference() { difference() {
shape(); shape();
@ -162,7 +162,7 @@ module insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, f
// support cone // support cone
if(flying) if(flying)
hull() { hull() {
linear_extrude(height = eps) linear_extrude(eps)
shape(); shape();
translate([boss_r + extension - wall - eps, 0, - (2 * boss_r + extension - wall)]) 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; nut_t = 2.3;
color(silver) color(silver)
linear_extrude(height = nut_t) difference() { linear_extrude(nut_t) difference() {
circle(d = 6.3 / cos(30), $fn = 6); circle(d = 6.3 / cos(30), $fn = 6);
circle(d = thread_d); 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); cylinder(d = d, h = base_h);
translate_z(-collar_t) translate_z(-collar_t)
linear_extrude(height = base_h) { linear_extrude(base_h) {
circle(post_4mm_hole_radius - 0.1); circle(post_4mm_hole_radius - 0.1);
spigot(); spigot();
@ -284,7 +284,7 @@ module post_4mm(colour, thickness, display_colour = false) { //! Draw a 4mm bind
explode(-15) explode(-15)
color(actual_colour) { color(actual_colour) {
translate_z(-thickness - base_h) { translate_z(-thickness - base_h) {
linear_extrude(height = base_h) linear_extrude(base_h)
difference() { difference() {
circle(d = d); circle(d = d);

View File

@ -52,7 +52,7 @@ module heater_block(type, resistor, thermistor) {
color(brass) { color(brass) {
render() difference() { render() difference() {
rotate([90, 0, 0]) 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); square([heater_length(type), h], center = true);
translate([resistor_x(type), 0]) translate([resistor_x(type), 0])

View File

@ -71,17 +71,17 @@ module LDR(type, lead_length = 3) { //! Draw an LDR, can specify the lead length
t = ldr_thickness(type); t = ldr_thickness(type);
color("white") color("white")
linear_extrude(height = t - 0.4) linear_extrude(t - 0.4)
shape(); shape();
color("orange") color("orange")
translate_z(t - 0.4) translate_z(t - 0.4)
linear_extrude(height = 0.1) linear_extrude(0.1)
shape(); shape();
color([0.9, 0.9, 0.9]) color([0.9, 0.9, 0.9])
translate_z(t - 0.3) translate_z(t - 0.3)
linear_extrude(height = 0.1) linear_extrude(0.1)
difference() { difference() {
offset(-serpentine_t()) offset(-serpentine_t())
shape(); 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]) color([1, 1, 1, 0.25])
translate_z(t - 0.3 + eps) translate_z(t - 0.3 + eps)
linear_extrude(height = 0.3) linear_extrude(0.3)
shape(); 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); 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)) translate_z(leadnut_flange_offset(type))
linear_extrude(height = leadnut_flange_t(type)) linear_extrude(leadnut_flange_t(type))
difference() { difference() {
circle(d = leadnut_flange_dia(type)); 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() rotate_extrude()
rounded_corner(r = d / 2, h = led_height(type), r2 = d / 2); 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() { difference() {
circle(d = led_rim_dia(type)); 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") color("silver")
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = l, center = true) linear_extrude(l, center = true)
polygon([ polygon([
[ x1, 0], [ x1, d], [ x2, d], [ x3, y5], [ x3, y4], [ x2, y4], [ x1, 0], [ x1, d], [ x2, d], [ x3, y5], [ x3, y4], [ x2, y4],
[ x2, y3], [ x3, y3], [ x3, y2], [ x2, y2], [ x2, y1], [ 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) { translate_z(y4) {
color("white") color("white")
linear_extrude(height = 1.6) linear_extrude(1.6)
led_positions() led_positions()
square([5, 5], center = true); square([5, 5], center = true);
color("yellow") color("yellow")
linear_extrude(height = 1.6 + eps) linear_extrude(1.6 + eps)
led_positions() led_positions()
circle(d = 3.5); circle(d = 3.5);
color("silver") color("silver")
linear_extrude(height = 0.8) linear_extrude(0.8)
led_positions() led_positions()
for(side = [-1,1], end = [-1:1]) for(side = [-1,1], end = [-1:1])
translate([side * 2.2, end * 1.6]) translate([side * 2.2, end * 1.6])
square([1, 0.9], center = true); square([1, 0.9], center = true);
color("black") color("black")
linear_extrude(height = 0.1) linear_extrude(0.1)
segment_positions(segments - 1) segment_positions(segments - 1)
translate([segment_length, 0]) translate([segment_length, 0])
square([0.2, a], center = true); square([0.2, a], center = true);
color("silver") color("silver")
linear_extrude(height = 0.15) linear_extrude(0.15)
segment_positions() segment_positions()
for(end = [-1, 1], side = [-1, 1]) for(end = [-1, 1], side = [-1, 1])
translate([end * (segment_length / 2 - 1.25) + segment_length / 2, side * 2.5]) translate([end * (segment_length / 2 - 1.25) + segment_length / 2, side * 2.5])
square(2.5, center = true); square(2.5, center = true);
color("silver") color("silver")
linear_extrude(height = 0.55) linear_extrude(0.55)
resistor_positions() resistor_positions()
square([3.2, 1.5], center = true); square([3.2, 1.5], center = true);
color("black") color("black")
linear_extrude(height = 0.55 + eps) linear_extrude(0.55 + eps)
resistor_positions() resistor_positions()
square([2.1, 1.5 + 2 * eps], center = true); 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 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 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() { difference() {
translate([-light_strip_clip_length(light) / 2, -wall]) translate([-light_strip_clip_length(light) / 2, -wall])
square([light_strip_clip_length(light), light_strip_clip_width(light)]); 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() { color("white") render() difference() {
hull() { hull() {
linear_extrude(height = eps) linear_extrude(eps)
face_plate(type); face_plate(type);
linear_extrude(height = height) linear_extrude(height)
offset(-(mains_socket_width(type) - mains_socket_top_w(type)) / 2) offset(-(mains_socket_width(type) - mains_socket_top_w(type)) / 2)
face_plate(type); face_plate(type);
} }
@ -105,7 +105,7 @@ module mains_socket(type) { //! Draw specified 13A socket
} }
// Hollow out the back // Hollow out the back
difference() { difference() {
linear_extrude(height = height - mains_socket_t(type)) linear_extrude(height - mains_socket_t(type))
offset(-mains_socket_t(type)) offset(-mains_socket_t(type))
face_plate(type); face_plate(type);

View File

@ -56,7 +56,7 @@ module meter(type = led_meter, colour = "red", value = "888", display_colour = f
color("green") color("green")
translate_z(meter_height(type)) translate_z(meter_height(type))
linear_extrude(height = meter_pcb_thickness(type)) linear_extrude(meter_pcb_thickness(type))
difference() { difference() {
union() { union() {
square([meter_pcb_length(type), meter_pcb_width(type)], center = true); 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) color(display_colour ? display_colour : colour)
linear_extrude(height = 0.2, center = true) linear_extrude(0.2, center = true)
mirror([1,0,0]) mirror([1,0,0])
text(value, font = "7 segment", valign = "center", halign = "center", size = meter_width(type) - 2, spacing = 1.2); 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); h = meter_height(type);
union() { union() {
linear_extrude(height = h) linear_extrude(h)
difference() { difference() {
rounded_square([l + 2 * wall, w + 2 * wall], rad); rounded_square([l + 2 * wall, w + 2 * wall], rad);
square([l + 2 * clearance, w + 2 * clearance], center = true); square([l + 2 * clearance, w + 2 * clearance], center = true);
} }
linear_extrude(height = flange_t) linear_extrude(flange_t)
difference() { difference() {
rounded_square([l + 2 * wall + 2 * overlap, w + 2 * wall + 2 * overlap], rad + overlap); rounded_square([l + 2 * wall + 2 * overlap, w + 2 * wall + 2 * overlap], rad + overlap);

View File

@ -63,7 +63,7 @@ module microswitch(type) { //! Draw specified microswitch
d = microswitch_button_t(type); d = microswitch_button_t(type);
color(microswitch_body_clr(type)) color(microswitch_body_clr(type))
linear_extrude(height = microswitch_thickness(type), center = true) linear_extrude(microswitch_thickness(type), center = true)
difference() { // main body difference() { // main body
rounded_square([microswitch_length(type), microswitch_width(type)], microswitch_radius(type)); 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 color(microswitch_button_clr(type)) // orange button
translate(microswitch_button_pos(type) - [0, d / 2]) 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() { hull() {
circle(d = d); circle(d = d);
@ -89,7 +89,7 @@ module microswitch(type) { //! Draw specified microswitch
if(vertical) if(vertical)
rotate([0, 90, 0]) rotate([0, 90, 0])
linear_extrude(height = leg.x, center = true) linear_extrude(leg.x, center = true)
difference() { difference() {
square([leg.z, leg.y], center = true); square([leg.z, leg.y], center = true);
@ -99,7 +99,7 @@ module microswitch(type) { //! Draw specified microswitch
} }
else else
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = leg.y, center = true) linear_extrude(leg.y, center = true)
difference() { difference() {
square([leg.x, leg.z], center = true); 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 module microview(cutout = false) { //! Draw microview or generate a panel cutout for it
rotate([0, 0, -90]) rotate([0, 0, -90])
if(cutout) if(cutout)
linear_extrude(height = 100) linear_extrude(100)
offset(panel_clearance) offset(panel_clearance)
projection() projection()
hull() hull()

View File

@ -84,7 +84,7 @@ module mod(type) { //! Draw specified module
color("silver") color("silver")
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = body_l, center = true) linear_extrude(body_l, center = true)
profile(); profile();
color(grey20) color(grey20)
@ -92,18 +92,18 @@ module mod(type) { //! Draw specified module
translate([end * body_l / 2, 0, 0]) translate([end * body_l / 2, 0, 0])
rotate([90, 0, end * 90]) rotate([90, 0, end * 90])
union() { union() {
linear_extrude(height = end_t) // endcap linear_extrude(end_t) // endcap
profile(); profile();
translate_z(end_t) translate_z(end_t)
rotate([90, 0, 180]) rotate([90, 0, 180])
linear_extrude(height = lug_t) // lug linear_extrude(lug_t) // lug
lug(); lug();
for(side = [-1, 1]) { for(side = [-1, 1]) {
translate([side * vane_p / 2, lug_t, end_t]) // buttress vanes translate([side * vane_p / 2, lug_t, end_t]) // buttress vanes
rotate([0, -90, 0]) 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]]); polygon([[0, 0], [0, vane_h - lug_t], [vane_l, 0]]);
translate([side * vane_p / 2, h / 2, end_t]) // bosses 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; colour = brass ? brass_colour : nylon ? grey30: grey70;
explode(nyloc ? 10 : 0) { explode(nyloc ? 10 : 0) {
color(colour) { color(colour) {
linear_extrude(height = thickness) linear_extrude(thickness)
difference() { difference() {
circle(outer_rad, $fn = 6); circle(outer_rad, $fn = 6);
@ -120,7 +120,7 @@ module wingnut(type) { //! Draw a wingnut
[hole_rad, thickness] [hole_rad, thickness]
]); ]);
for(rot = [0, 180]) 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() { hull() {
translate([wing_span / 2 - wing_width / 2, wing_height - wing_width / 2]) translate([wing_span / 2 - wing_width / 2, wing_height - wing_width / 2])
circle(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; colour = brass ? brass_colour : nylon ? grey30 : grey70;
color(colour) color(colour)
difference() { difference() {
linear_extrude(height = thickness) { linear_extrude(thickness) {
difference() { difference() {
square([width, width], center = true); square([width, width], center = true);

View File

@ -69,7 +69,7 @@ module opengrab() { //! Draw OpenGrab module
translate_z(1) translate_z(1)
opengrab_hole_positions() { opengrab_hole_positions() {
color(brass) color(brass)
linear_extrude(height = depth - 1) linear_extrude(depth - 1)
difference() { difference() {
circle(d = 4.7 / cos(30), $fn = 6); 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"); vitamin("opengrab_target(): OpenGrab silicon steel target plate");
color(grey80) color(grey80)
linear_extrude(height = target) linear_extrude(target)
difference() { difference() {
square([width, width], center = true); 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); h + 2 * h_flange_h + 2 * panel_clearance, 100], r = cnc_bit_r, center = false);
else else
color("silver") rotate([0, 90, 0]) { color("silver") rotate([0, 90, 0]) {
linear_extrude(height = l, center = true) linear_extrude(l, center = true)
difference() { difference() {
square([h, w], center = true); square([h, w], center = true);
@ -119,7 +119,7 @@ module usb_A(h, v_flange_l, bar, cutout) {
cube([h, w, 1], center = true); cube([h, w, 1], center = true);
translate_z(l / 2 - flange_t) translate_z(l / 2 - flange_t)
linear_extrude(height = flange_t) difference() { linear_extrude(flange_t) difference() {
union() { union() {
square([h + 2 * h_flange_h, h_flange_l], center = true); 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]) { rotate([0, 90, 0]) {
mouth = plug_z + plug_h - tab_z; mouth = plug_z + plug_h - tab_z;
color("silver") { color("silver") {
linear_extrude(height = l, center = true) linear_extrude(l, center = true)
difference() { difference() {
square([h, w], center = true); square([h, w], center = true);
@ -163,7 +163,7 @@ module rj45(cutout = false) { //! Draw RJ45 Ethernet connector
} }
color(grey30) { color(grey30) {
linear_extrude(height = l - 0.2, center = true) linear_extrude(l - 0.2, center = true)
difference() { difference() {
square([h - 0.1, w - 0.1], center = true); square([h - 0.1, w - 0.1], center = true);
@ -195,7 +195,7 @@ module jack(cutout = false) { //! Draw 3.5mm jack
else else
color(grey20) color(grey20)
rotate([0, 90, 0]) { rotate([0, 90, 0]) {
linear_extrude(height = l / 2) linear_extrude(l / 2)
difference() { difference() {
square([h, w], center = true); square([h, w], center = true);
@ -271,13 +271,13 @@ module hdmi(type, cutout = false) { //! Draw HDMI socket
if(cutout) if(cutout)
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = 100) linear_extrude(100)
offset(t + panel_clearance) offset(t + panel_clearance)
D(); D();
else else
color("silver") color("silver")
rotate([90, 0, 90]) { rotate([90, 0, 90]) {
linear_extrude(height = l, center = true) linear_extrude(l, center = true)
difference() { difference() {
offset(t) offset(t)
D(); D();
@ -285,7 +285,7 @@ module hdmi(type, cutout = false) { //! Draw HDMI socket
} }
translate_z(-l / 2) translate_z(-l / 2)
linear_extrude(height = 1) linear_extrude(1)
offset(t) offset(t)
D(); D();
} }
@ -314,12 +314,12 @@ module usb_uA(cutout = false) { //! Draw USB micro A connector
if(cutout) if(cutout)
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = 100) linear_extrude(100)
offset((flange_h - ih2) / 2 + 2 * panel_clearance) offset((flange_h - ih2) / 2 + 2 * panel_clearance)
D(); D();
else else
color("silver") rotate([90, 0, 90]) { color("silver") rotate([90, 0, 90]) {
linear_extrude(height = l, center = true) linear_extrude(l, center = true)
difference() { difference() {
offset(t) offset(t)
D(); D();
@ -328,12 +328,12 @@ module usb_uA(cutout = false) { //! Draw USB micro A connector
} }
translate_z(-l / 2) translate_z(-l / 2)
linear_extrude(height = 1) linear_extrude(1)
offset(t) offset(t)
D(); D();
translate_z(l / 2 - t) translate_z(l / 2 - t)
linear_extrude(height = t) difference() { linear_extrude(t) difference() {
union() { union() {
translate([0, h - t - ih1 / 2]) translate([0, h - t - ih1 / 2])
square([flange_w, ih1], center = true); square([flange_w, ih1], center = true);
@ -375,7 +375,7 @@ module usb_B(cutout = false) { //! Draw USB B connector
else else
translate_z(h / 2) rotate([90, 0, 90]) { translate_z(h / 2) rotate([90, 0, 90]) {
color("silver") { color("silver") {
linear_extrude(height = l, center = true) linear_extrude(l, center = true)
difference() { difference() {
square([w, h], center = true); square([w, h], center = true);
@ -388,7 +388,7 @@ module usb_B(cutout = false) { //! Draw USB B connector
} }
color("white") { color("white") {
linear_extrude(height = l - 0.4, center = true) linear_extrude(l - 0.4, center = true)
difference() { difference() {
square([w - 0.2, h - 0.2], center = true); square([w - 0.2, h - 0.2], center = true);
@ -423,7 +423,7 @@ module barrel_jack(cutout = false) { //! Draw barrel power jack
; ;
else { else {
color(grey20) rotate([0, 90, 0]) { color(grey20) rotate([0, 90, 0]) {
linear_extrude(height = l, center = true) { linear_extrude(l, center = true) {
difference() { difference() {
translate([-h / 2, 0]) translate([-h / 2, 0])
rounded_square([h, w], r); rounded_square([h, w], r);
@ -437,7 +437,7 @@ module barrel_jack(cutout = false) { //! Draw barrel power jack
} }
} }
translate_z(l / 2 - front) translate_z(l / 2 - front)
linear_extrude(height = front) { linear_extrude(front) {
difference() { difference() {
translate([-h / 2, 0]) translate([-h / 2, 0])
rounded_square([h, w], r); rounded_square([h, w], r);
@ -484,7 +484,7 @@ module uSD(size, cutout = false) { //! Draw uSD socket
translate_z(size.z / 2) { translate_z(size.z / 2) {
color("silver") color("silver")
rotate([90, 0, 90]) { rotate([90, 0, 90]) {
linear_extrude(height = size.y, center = true) linear_extrude(size.y, center = true)
difference() { difference() {
square([size.x, size.z], center = true); square([size.x, size.z], center = true);
square([size.x - 2 * t, size.z - 2 * t], 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) color(grey20)
rotate([90, 0, 90]) rotate([90, 0, 90])
translate_z(t) translate_z(t)
linear_extrude(height = size.y - t, center = true) linear_extrude(size.y - t, center = true)
difference() { difference() {
square([size.x - 2 * t, size.z - 2 * t], center = true); 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) translate_z(0.5)
cube([l, w, 1], center = true); cube([l, w, 1], center = true);
linear_extrude(height = h) linear_extrude(h)
difference() { difference() {
square([l, w], center = true); square([l, w], center = true);
@ -535,7 +535,7 @@ module flex(cutout = false) { //! Draw flexistrip connector
} }
translate_z(h - top_t) translate_z(h - top_t)
linear_extrude(height = top_t) linear_extrude(top_t)
difference() { difference() {
union() { union() {
square([top_l, w], center = true); square([top_l, w], center = true);
@ -581,7 +581,7 @@ module flat_flex(cutout = false) { //! Draw flat flexistrip connector as used on
color(grey30) { color(grey30) {
translate([w / 2 - w1, 0, h1 / 2]) translate([w / 2 - w1, 0, h1 / 2])
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = w1) linear_extrude(w1)
difference() { difference() {
square([l1, h1], center = true); square([l1, h1], center = true);
@ -623,7 +623,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
screw_r = 1; screw_r = 1;
color(colour) { color(colour) {
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = pitch, center = true) linear_extrude(pitch, center = true)
polygon(points = [ polygon(points = [
[ depth / 2, 0], [ depth / 2, 0],
[ depth / 2, box_z], [ depth / 2, box_z],
@ -640,7 +640,7 @@ module terminal_35(ways, colour = "blue") { //! Draw 3.5mm terminal block
[-depth / 2, 0], [-depth / 2, 0],
]); ]);
linear_extrude(height = box_z + box_h) linear_extrude(box_z + box_h)
difference() { difference() {
square([depth, pitch], center = true); 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) translate_z(box_z + box_h)
linear_extrude(height = height - box_z - box_h) linear_extrude(height - box_z - box_h)
difference() { difference() {
square([2 * screw_r + 0.1, pitch], center = true); 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) { translate_z(screw_z) {
cylinder(r = screw_r, h = height - screw_z - 1); // screw 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() { difference() {
circle(1); 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 translate_z(box_z + box_h / 2) // terminal
rotate([0, -90, 0]) { rotate([0, -90, 0]) {
linear_extrude(height = depth - 2, center = true) linear_extrude(depth - 2, center = true)
difference() { difference() {
square([box_h, box_w], center = true); square([box_h, box_w], center = true);
@ -771,7 +771,7 @@ module trimpot10(vertical, cutout = false) { //! Draw a ten turn trimpot
screw_pos() { screw_pos() {
cylinder(d = screw_d, h = screw_h - slot_h); cylinder(d = screw_d, h = screw_h - slot_h);
linear_extrude(height = screw_h) linear_extrude(screw_h)
difference() { difference() {
circle(d = screw_d); circle(d = screw_d);
@ -881,7 +881,7 @@ module pcb(type) { //! Draw specified PCB
pcb_components(type); 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))) if(Len(pcb_polygon(type)))
polygon(pcb_polygon(type)); polygon(pcb_polygon(type));
else else
@ -901,7 +901,7 @@ module pcb(type) { //! Draw specified PCB
translate_z(t / 2) translate_z(t / 2)
pcb_hole_positions(type) pcb_hole_positions(type)
if(is_list(land)) if(is_list(land))
linear_extrude(height = t + 2 * eps, center = true) linear_extrude(t + 2 * eps, center = true)
difference() { difference() {
square(land, center = true); square(land, center = true);
@ -914,7 +914,7 @@ module pcb(type) { //! Draw specified PCB
plating = 0.15; plating = 0.15;
color(pcb_colour(type) == "green" ? "silver" : "gold") color(pcb_colour(type) == "green" ? "silver" : "gold")
translate_z(-plating) translate_z(-plating)
linear_extrude(height = fr4 ? t + 2 * plating : plating) linear_extrude(fr4 ? t + 2 * plating : plating)
if(Len(grid)) { if(Len(grid)) {
pcb_grid_positions(type) pcb_grid_positions(type)
difference() { difference() {
@ -943,11 +943,11 @@ module pcb_spacer(screw, height, wall = 1.8, taper = 0) { //! Generate STL for P
or = corrected_radius(ir) + wall; or = corrected_radius(ir) + wall;
if(height > taper) if(height > taper)
linear_extrude(height = height - taper) linear_extrude(height - taper)
poly_ring(or, ir); poly_ring(or, ir);
if(taper) if(taper)
linear_extrude(height = height) linear_extrude(height)
poly_ring(ir + 2 * extrusion_width, ir); poly_ring(ir + 2 * extrusion_width, ir);
} }
@ -957,7 +957,7 @@ module pcb_base(type, height, thickness, wall = 2) { //! Generate STL for a base
or = corrected_radius(ir) + wall; or = corrected_radius(ir) + wall;
union() { union() {
linear_extrude(height = thickness) linear_extrude(thickness)
difference() { difference() {
hull() hull()
pcb_screw_positions(type) pcb_screw_positions(type)
@ -967,7 +967,7 @@ module pcb_base(type, height, thickness, wall = 2) { //! Generate STL for a base
poly_circle(ir); poly_circle(ir);
} }
linear_extrude(height = height) linear_extrude(height)
pcb_screw_positions(type) pcb_screw_positions(type)
poly_ring(or, ir); poly_ring(or, ir);
} }

View File

@ -66,7 +66,7 @@ module pillar(type) { //! Draw specified pillar
cylinder(h = top_thread_l, d = thread_d); cylinder(h = top_thread_l, d = thread_d);
color(pillar_i_colour(type)) { color(pillar_i_colour(type)) {
linear_extrude(height = height) linear_extrude(height)
difference() { difference() {
circle(d = pillar_id(type), $fn = fn(pillar_ifn(type))); circle(d = pillar_id(type), $fn = fn(pillar_ifn(type)));
circle(d = thread_d); circle(d = thread_d);
@ -90,7 +90,7 @@ module pillar(type) { //! Draw specified pillar
} }
if(pillar_od(type) > pillar_id(type)) 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() { difference() {
circle(d = pillar_od(type), $fn = fn(pillar_ofn(type))); 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]) translate([0, right_angle ? -ra_offset - pitch / 2 : 0, right_angle ? width / 2 : 0])
rotate([right_angle ? 90 : 0, 0, 0]) rotate([right_angle ? 90 : 0, 0, 0])
color(base_colour) color(base_colour)
linear_extrude(height = h) linear_extrude(h)
for(x = [0 : cols - 1], y = [0 : rows - 1]) for(x = [0 : cols - 1], y = [0 : rows - 1])
translate([pitch * (x - (cols - 1) / 2), pitch * (y - (rows - 1) / 2), pitch / 2]) translate([pitch * (x - (cols - 1) / 2), pitch * (y - (rows - 1) / 2), pitch / 2])
hull() { 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); pin(type, hdr_pin_length(type) - pitch + base);
color(hdr_base_colour(type)) { color(hdr_base_colour(type)) {
linear_extrude(height = base) linear_extrude(base)
square([w, l], center = true); square([w, l], center = true);
linear_extrude(height = h) linear_extrude(h)
difference() { difference() {
square([w, l], center = true); 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)) color(hdr_base_colour(type))
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = width, center = true, convexity = cols * rows) linear_extrude(width, center = true, convexity = cols * rows)
difference() { difference() {
translate([0, height / 2]) translate([0, height / 2])
square([length, height], center = true); 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]) translate([0, right_angle ? -ra_offset - pitch / 2 : 0, right_angle ? width / 2 : 0])
rotate([right_angle ? 90 : 0, 0, 0]) rotate([right_angle ? 90 : 0, 0, 0])
translate_z(depth / 2) translate_z(depth / 2)
linear_extrude(height = depth, center = true) linear_extrude(depth, center = true)
difference() { difference() {
square([length, width], center = true); 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]) for(i = [0 : ways])
translate([0, i * pitch + div]) translate([0, i * pitch + div])
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = div) linear_extrude(div)
hull() { hull() {
r = 2; r = 2;
square([depth, eps]); square([depth, eps]);
@ -170,7 +170,7 @@ module psu(type) { //! Draw a power supply
multmatrix(psu_face_transform(type, i)) multmatrix(psu_face_transform(type, i))
translate([xo, 0, -t]) { translate([xo, 0, -t]) {
color("silver") linear_extrude(height = t) color("silver") linear_extrude(t)
union() { union() {
difference() { difference() {
square([xw, yw], center = true); square([xw, yw], center = true);
@ -260,7 +260,7 @@ module psu(type) { //! Draw a power supply
heatsink_offset = 13.5; heatsink_offset = 13.5;
color("#FCD67E") color("#FCD67E")
translate([(-right - rt) / 2, (ft - bt) / 2, z - pcb_thickness]) translate([(-right - rt) / 2, (ft - bt) / 2, z - pcb_thickness])
linear_extrude(height = pcb_thickness) linear_extrude(pcb_thickness)
difference() { difference() {
square([pl, pw], center = true); square([pl, pw], center = true);
@ -306,7 +306,7 @@ module psu(type) { //! Draw a power supply
color("silver") color("silver")
translate([l / 2, -w / 2]) translate([l / 2, -w / 2])
rotate([90, 0, 180]) rotate([90, 0, 180])
linear_extrude(height = length) { linear_extrude(length) {
translate([right + rt, z_top]) translate([right + rt, z_top])
rotate(135) rotate(135)
square([rt, right * sqrt(2)]); 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]); holes = psu_face_holes(psu_faces(type)[f_front]);
translate([holes[0].x, -psu_width(type) / 2, psu_height(type) / 2 + holes[0].y]) translate([holes[0].x, -psu_width(type) / 2, psu_height(type) / 2 + holes[0].y])
rotate([90, 0, 0]) rotate([90, 0, 0])
linear_extrude(height = 100, center = true) linear_extrude(100, center = true)
round(5) round(5)
polygon([ // https://www.techpowerup.com/forums/threads/pc-component-dimensions.157239, tweaked polygon([ // https://www.techpowerup.com/forums/threads/pc-component-dimensions.157239, tweaked
[18.7, -13], [18.7, -13],

View File

@ -69,7 +69,7 @@ module pulley(type) { //! Draw a pulley
ir = pulley_ir(type); ir = pulley_ir(type);
module core() { module core() {
translate_z(pulley_hub_length(type) + ft) 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() { difference() {
circle(or); circle(or);

View File

@ -84,7 +84,7 @@ module carriage(type, rail, end_color = grey20, wiper_color = grey20) { //! Draw
color(grey90) { color(grey90) {
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = block_l, center = true) linear_extrude(block_l, center = true)
difference() { difference() {
translate([-block_w / 2, carriage_clearance(type)]) translate([-block_w / 2, carriage_clearance(type)])
square([block_w, block_h - screw_depth]); 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) translate_z(carriage_height(type) - screw_depth)
linear_extrude(height = screw_depth) linear_extrude(screw_depth)
difference() { difference() {
square([block_l, block_w], center = true); square([block_l, block_w], center = true);

View File

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

View File

@ -54,7 +54,7 @@ module rocker(type, colour) { //! Draw the specified rocker switch
explode(30) { explode(30) {
color(grey20) { color(grey20) {
linear_extrude(height = rocker_flange_t(type)) linear_extrude(rocker_flange_t(type))
difference() { difference() {
rounded_square([rocker_flange_w(type), rocker_flange_h(type)], 0.5); 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) color(colour ? colour : grey30)
translate_z(rocker_pivot(type)) translate_z(rocker_pivot(type))
rotate([90, 0, 90]) rotate([90, 0, 90])
linear_extrude(height = rocker_w, center = true) linear_extrude(rocker_w, center = true)
difference() { difference() {
circle(rocker_r, $fa = 1); 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); cylinder(r = head_rad, h = head_height - socket_depth);
translate_z(head_height - socket_depth) translate_z(head_height - socket_depth)
linear_extrude(height = socket_depth) linear_extrude(socket_depth)
difference() { difference() {
circle(head_rad); circle(head_rad);
@ -128,7 +128,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
color(colour) { color(colour) {
r = show_threads ? rad - pitch / 2 : rad; r = show_threads ? rad - pitch / 2 : rad;
translate_z(-socket_depth) translate_z(-socket_depth)
linear_extrude(height = socket_depth) linear_extrude(socket_depth)
difference() { difference() {
circle(r); circle(r);
@ -161,7 +161,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
square([socket_rad, 10]); square([socket_rad, 10]);
} }
linear_extrude(height = head_height) linear_extrude(head_height)
difference() { difference() {
circle(socket_rad + eps); circle(socket_rad + eps);
@ -187,7 +187,7 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
square([socket_rad, 10]); square([socket_rad, 10]);
} }
} }
linear_extrude(height = head_height) linear_extrude(head_height)
difference() { difference() {
circle(socket_rad + eps); circle(socket_rad + eps);
circle(socket_rad, $fn = 6); 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) translate_z(-socket_depth)
linear_extrude(height = socket_depth) linear_extrude(socket_depth)
difference() { difference() {
circle(socket_rad + 0.1); 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) translate_z(-socket_depth)
linear_extrude(height = socket_depth) linear_extrude(socket_depth)
difference() { difference() {
circle(socket_rad + 0.1); circle(socket_rad + 0.1);

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")); vitamin(str("sealing_strip(", length, "): Sealing strip 10mm x 4mm x ", length, "mm"));
rotate([90, 0, 90]) rotate([90, 0, 90])
color("Sienna") color("Sienna")
linear_extrude(height = length, center = true) linear_extrude(length, center = true)
rounded_polygon(profile); rounded_polygon(profile);
} }

View File

@ -75,7 +75,7 @@ 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 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); sheet_2D(type, w, d, corners);
module render_sheet(type, color = false) //! Render a sheet in the correct colour after holes have been subtracted module render_sheet(type, color = false) //! Render a sheet in the correct colour after holes have been subtracted
@ -84,5 +84,5 @@ module render_sheet(type, color = false) //! Render a sheet in the correct colou
module render_2D_sheet(type, color = false) //! Extrude a 2D sheet template and give it the correct colour module render_2D_sheet(type, color = false) //! Extrude a 2D sheet template and give it the correct colour
color(color ? color : sheet_colour(type)) color(color ? color : sheet_colour(type))
linear_extrude(height = sheet_thickness(type), center = true) linear_extrude(sheet_thickness(type), center = true)
children(); children();

View File

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

View File

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

View File

@ -65,7 +65,7 @@ module NEMA(type, shaft_angle = 0) { //! Draw specified NEMA stepper motor
union() { union() {
color(stepper_body_colour) // black laminations color(stepper_body_colour) // black laminations
translate_z(-length / 2) translate_z(-length / 2)
linear_extrude(height = length - cap * 2, center = true) linear_extrude(length - cap * 2, center = true)
intersection() { intersection() {
square([side, side], center = true); square([side, side], center = true);
@ -77,7 +77,7 @@ module NEMA(type, shaft_angle = 0) { //! Draw specified NEMA stepper motor
for(end = [-1, 1]) for(end = [-1, 1])
translate_z(-length / 2 + end * (length - cap) / 2) { translate_z(-length / 2 + end * (length - cap) / 2) {
linear_extrude(height = cap, center = true) linear_extrude(cap, center = true)
difference() { difference() {
intersection() { intersection() {
square([side, side], center = true); square([side, side], center = true);

View File

@ -130,7 +130,7 @@ module toggle(type, thickness) { //! Draw specified toggle switch with the nuts
rotate([max(angle, 0), 0, 0]) rotate([max(angle, 0), 0, 0])
if(toggle_paddle_w(type)) if(toggle_paddle_w(type))
translate_z(l) translate_z(l)
linear_extrude(height = eps, center = true) linear_extrude(eps, center = true)
intersection() { intersection() {
circle(d = d1); circle(d = d1);
@ -151,7 +151,7 @@ module toggle(type, thickness) { //! Draw specified toggle switch with the nuts
rows = pins > 3 ? 2 : 1; rows = pins > 3 ? 2 : 1;
color("gold") color("gold")
translate_z(-toggle_depth(type) - toggle_pin_l(type) / 2) 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]) { for(i = [0 : pins - 1]) {
x = rows < 2 ? 0 : (i % 2) - 0.5; x = rows < 2 ? 0 : (i % 2) - 0.5;
y = rows < 2 ? i - 1 : floor(i / 2) - 1; 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))); vitamin(str("transformer(", type[0], "): Transformer ", tx_part(type)));
color("silver") { color("silver") {
linear_extrude(height = tx_foot_thickness(type)) linear_extrude(tx_foot_thickness(type))
difference() { difference() {
rounded_square([tx_foot_width(type), tx_foot_depth(type)], r = 2); 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 else
vitamin(str("tubing(", type[0], arg(length, 15), "): ", tubing_material(type), " OD ", original_od, "mm ID ", original_id,"mm x ",length, "mm")); 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)) color(tubing_colour(type))
linear_extrude(height = length, center = true, convexity = 4) linear_extrude(length, center = true, convexity = 4)
difference() { difference() {
circle(d = od); circle(d = od);
circle(d = id); 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 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() { difference() {
circle(d = variac_dial_dia(type)); circle(d = variac_dial_dia(type));
@ -81,7 +81,7 @@ module variac(type, thickness = 3, dial = true) { //! Draw the specified varia
translate_z(-h) { translate_z(-h) {
color("#A66955") { color("#A66955") {
linear_extrude(height = h) linear_extrude(h)
difference() { difference() {
shape(); shape();
@ -89,7 +89,7 @@ module variac(type, thickness = 3, dial = true) { //! Draw the specified varia
circle(screw_radius(variac_screw(type))); circle(screw_radius(variac_screw(type)));
} }
linear_extrude(height = h - 10) linear_extrude(h - 10)
shape(); shape();
} }
color("silver") 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")); 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() { difference() {
rounded_square([length, width], r = 0.5, center = true); 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))); 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() { difference() {
vflip() vflip()
for(y = [0 : strips -1]) for(y = [0 : strips -1])

View File

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

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")); vitamin(str("ziptie(", type[0], ", ", r, "): Ziptie ", width, "mm x ", len, "mm min length"));
color(ziptie_colour(type)){ color(ziptie_colour(type)){
linear_extrude(height = width, center = true) linear_extrude(width, center = true)
difference() { difference() {
rounded_polygon(outside_path, tangents); rounded_polygon(outside_path, tangents);
rounded_polygon(inside_path); rounded_polygon(inside_path);