Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c815c1592d | ||
|
e32ef88c90 | ||
|
702c450a27 | ||
|
1a197ac823 | ||
|
ab592e049c | ||
|
9b104e4fe7 | ||
|
f0b4d767e9 | ||
|
82baed4c8f | ||
|
acb2cb2a48 | ||
|
cf94972b18 | ||
|
7c0a48d0c1 | ||
|
a5a640e273 |
20
core.scad
@@ -18,22 +18,10 @@
|
||||
//
|
||||
|
||||
//
|
||||
// Include this file to use the miniumum library
|
||||
// Include this file to use the miniumum library plus screws, nuts and washers
|
||||
//
|
||||
include <global_defs.scad>
|
||||
include <utils/core/core.scad>
|
||||
//
|
||||
// Global functions and modules
|
||||
// Fasteners used by a lot of other vitamins
|
||||
//
|
||||
use <utils/core/global.scad>
|
||||
|
||||
module use_stl(name) { //! Import an STL to make a build platter
|
||||
stl(name);
|
||||
|
||||
import(str("../stls/", name, ".stl"));
|
||||
}
|
||||
|
||||
module use_dxf(name) { //! Import a DXF to make a build panel
|
||||
dxf(name);
|
||||
|
||||
import(str("../dxfs/", name, ".dxf"));
|
||||
}
|
||||
include <vitamins/screws.scad>
|
||||
|
@@ -116,8 +116,8 @@ get shared if other files in the project include ```lib.scad``` as well, or if y
|
||||
|
||||
One downside is that any change to the library will mean all the project files need regenerating.
|
||||
A more optimised approach for large projects is to include [NopSCADlib/core.scad](../core.scad) instead.
|
||||
That only has the a small set of utilities and the global settings in [global_defs.scad](../global_defs.scad). Any vitamins used need to be included explicitly.
|
||||
One can copy the include or use line from [NopSCADlib/lib.scad](../lib.scad).
|
||||
That only has the a small set of utilities and the global settings in [global_defs.scad](../global_defs.scad) plus screws, nuts and washers that are required by a lot of other vitamins.
|
||||
Any other vitamins used need to be included explicitly. One can copy the includes or use a line from [NopSCADlib/lib.scad](../lib.scad).
|
||||
|
||||
### Parametric parts.
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 15 KiB |
@@ -34,7 +34,7 @@ layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // lay
|
||||
extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
|
||||
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle
|
||||
cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // miniumum tool radius when milling 2D objects
|
||||
pp1_colour = is_undef($pp1_colour) ? "lime" : $pp1_colour; // printed part colour 1
|
||||
pp1_colour = is_undef($pp1_colour) ? [0, 146/255, 0] : $pp1_colour; // printed part colour 1, RepRap logo colour
|
||||
pp2_colour = is_undef($pp2_colour) ? "red" : $pp2_colour; // printed part colour 2
|
||||
pp3_colour = is_undef($pp3_colour) ? "blue" : $pp3_colour; // printed part colour 3
|
||||
pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4
|
||||
|
55
lib.scad
@@ -23,43 +23,40 @@
|
||||
include <core.scad>
|
||||
|
||||
include <vitamins/psus.scad>
|
||||
include <vitamins/pcbs.scad>
|
||||
|
||||
include <vitamins/batteries.scad>
|
||||
include <vitamins/blowers.scad>
|
||||
include <vitamins/bulldogs.scad>
|
||||
include <vitamins/buttons.scad>
|
||||
include <vitamins/components.scad>
|
||||
include <vitamins/displays.scad>
|
||||
include <vitamins/extrusions.scad>
|
||||
include <vitamins/geared_steppers.scad>
|
||||
include <vitamins/hot_ends.scad>
|
||||
include <vitamins/inserts.scad>
|
||||
include <vitamins/ldrs.scad>
|
||||
include <vitamins/leadnuts.scad>
|
||||
include <vitamins/leds.scad>
|
||||
include <vitamins/light_strips.scad>
|
||||
include <vitamins/mains_sockets.scad>
|
||||
include <vitamins/modules.scad>
|
||||
include <vitamins/pillars.scad>
|
||||
include <vitamins/pulleys.scad>
|
||||
include <vitamins/ring_terminals.scad>
|
||||
include <vitamins/rails.scad>
|
||||
include <vitamins/belts.scad>
|
||||
include <vitamins/pulleys.scad>
|
||||
include <vitamins/sheets.scad>
|
||||
include <vitamins/stepper_motors.scad>
|
||||
include <vitamins/components.scad>
|
||||
include <vitamins/hot_ends.scad>
|
||||
include <vitamins/tubings.scad>
|
||||
include <vitamins/zipties.scad>
|
||||
include <vitamins/scs_bearing_blocks.scad>
|
||||
include <vitamins/rod.scad>
|
||||
include <vitamins/leadnuts.scad>
|
||||
include <vitamins/bulldogs.scad>
|
||||
include <vitamins/pillars.scad>
|
||||
include <vitamins/scs_bearing_blocks.scad>
|
||||
include <vitamins/sheets.scad>
|
||||
include <vitamins/sk_brackets.scad>
|
||||
include <vitamins/spools.scad>
|
||||
include <vitamins/ssrs.scad>
|
||||
include <vitamins/d_connectors.scad>
|
||||
include <vitamins/buttons.scad>
|
||||
include <vitamins/pcbs.scad>
|
||||
include <vitamins/modules.scad>
|
||||
include <vitamins/displays.scad>
|
||||
include <vitamins/blowers.scad>
|
||||
include <vitamins/leds.scad>
|
||||
include <vitamins/stepper_motors.scad>
|
||||
include <vitamins/toggles.scad>
|
||||
include <vitamins/transformers.scad>
|
||||
include <vitamins/tubings.scad>
|
||||
include <vitamins/variacs.scad>
|
||||
include <vitamins/springs.scad>
|
||||
include <vitamins/batteries.scad>
|
||||
include <vitamins/ball_bearings.scad>
|
||||
include <vitamins/light_strips.scad>
|
||||
include <vitamins/spools.scad>
|
||||
include <vitamins/mains_sockets.scad>
|
||||
include <vitamins/ldrs.scad>
|
||||
include <vitamins/geared_steppers.scad>
|
||||
include <vitamins/extrusions.scad>
|
||||
include <vitamins/sk_brackets.scad>
|
||||
include <vitamins/zipties.scad>
|
||||
|
||||
use <vitamins/jack.scad>
|
||||
use <vitamins/meter.scad>
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 782 KiB After Width: | Height: | Size: 781 KiB |
10
libtest.scad
@@ -87,16 +87,17 @@ use <tests/door_hinge.scad>
|
||||
use <tests/door_latch.scad>
|
||||
use <tests/fan_guard.scad>
|
||||
use <tests/fixing_block.scad>
|
||||
use <tests/flat_hinge.scad>
|
||||
use <tests/foot.scad>
|
||||
use <tests/handle.scad>
|
||||
use <tests/pcb_mount.scad>
|
||||
use <tests/printed_box.scad>
|
||||
use <tests/ribbon_clamp.scad>
|
||||
use <tests/screw_knob.scad>
|
||||
use <tests/socket_box.scad>
|
||||
use <tests/strap_handle.scad>
|
||||
use <tests/ssr_shroud.scad>
|
||||
use <tests/psu_shroud.scad>
|
||||
use <tests/flat_hinge.scad>
|
||||
use <tests/pcb_mount.scad>
|
||||
|
||||
x0 = 0;
|
||||
x1 = x0 + 100;
|
||||
@@ -146,9 +147,14 @@ translate([x5, cable_grommets_y + 250])
|
||||
translate([950, 600])
|
||||
box_test();
|
||||
|
||||
translate([890, 730])
|
||||
printed_boxes();
|
||||
|
||||
|
||||
translate([850, 1260])
|
||||
bbox_test();
|
||||
|
||||
|
||||
inserts_y = 0;
|
||||
nuts_y = inserts_y + 20;
|
||||
washers_y = nuts_y + 100;
|
||||
|
@@ -31,7 +31,7 @@
|
||||
//!
|
||||
//! Normally the side sheets are the same type but they can be overridden individually as long as the substitute has the same thickness.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/sheet.scad>
|
||||
use <../vitamins/screw.scad>
|
||||
use <../vitamins/washer.scad>
|
||||
|
@@ -21,7 +21,7 @@
|
||||
//! Printed cable grommets for passing cables through panels avoiding sharp edges and in the case
|
||||
//! of conductive panels, an extra layer of insulation.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../vitamins/cable_strip.scad>
|
||||
|
||||
base = 1.25;
|
||||
|
@@ -22,7 +22,7 @@
|
||||
//
|
||||
$extrusion_width = 0.5;
|
||||
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
module ESP12F_carrier_stl() { //! Generate the STL for an ESP12 carrier
|
||||
stl("ESP12F_carrier");
|
||||
|
@@ -31,7 +31,6 @@
|
||||
//! Star washers can be omitted by setting ```star_washers``` to false.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <../utils/rounded_cylinder.scad>
|
||||
use <../utils/maths.scad>
|
||||
|
@@ -24,7 +24,6 @@
|
||||
//! Rubber door [sealing strip](#sealing_strip) is used to make it airtight and a [door_latch](#door_latch) holds it closed.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
|
||||
width = 18;
|
||||
thickness = 4;
|
||||
@@ -142,7 +141,7 @@ module door_hinge_assembly(top, door_thickness = 6) { //! The moving assembly th
|
||||
|
||||
translate([0, pin_y - (thickness + door_thickness / 2), dir * width / 2]) {
|
||||
rotate([90, 0, 180])
|
||||
color("red") door_hinge(door_thickness);
|
||||
color(pp2_colour) door_hinge(door_thickness);
|
||||
|
||||
rotate([90, 0, 0])
|
||||
door_hinge_hole_positions()
|
||||
@@ -166,7 +165,7 @@ module door_hinge_static_assembly(top, sheet_thickness = 3) { //! The stationary
|
||||
|
||||
translate([pin_x, 0, -dir * (stat_width / 2 + washer_thickness(screw_washer(pin_screw)))])
|
||||
rotate([90, 0, 0]) {
|
||||
color("lime") door_hinge_stat_stl();
|
||||
color(pp1_colour) door_hinge_stat_stl();
|
||||
|
||||
door_hinge_stat_hole_positions() {
|
||||
screw_and_washer(stat_screw, stat_screw_length);
|
||||
|
@@ -22,7 +22,6 @@
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/hanging_hole.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
|
||||
length = 35;
|
||||
width = 12;
|
||||
@@ -66,7 +65,7 @@ module door_latch_assembly(sheet_thickness = 3) { //! The assembly for a specifi
|
||||
|
||||
translate([0, -height - washer_thickness(washer)])
|
||||
rotate([-90, 0, 0]) {
|
||||
color("lime") render() door_latch_stl();
|
||||
color(pp1_colour) render() door_latch_stl();
|
||||
|
||||
translate_z(nut_trap_depth)
|
||||
vflip()
|
||||
|
@@ -31,7 +31,6 @@
|
||||
//! Star washers can be omitted by setting ```star_washers``` to false.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <../utils/maths.scad>
|
||||
|
||||
|
@@ -30,7 +30,6 @@
|
||||
//! This allows the hinges and one set of screws to belong to one assembly and the other set of screws to another assembly.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
|
||||
function hinge_width(type) = type[1]; //! Width
|
||||
function hinge_depth(type) = type[2]; //! Depth of each leaf
|
||||
|
@@ -22,7 +22,6 @@
|
||||
//! inserts don't grip well in rubber.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
foot = [25, 12, 3, 2, M4_cap_screw, 10];
|
||||
|
@@ -21,7 +21,6 @@
|
||||
//! Printed handle that can be printed without needing support material due to its truncated teardrop profile.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
dia = 18;
|
||||
|
@@ -22,7 +22,6 @@
|
||||
//! The stl must be given a parameterless wrapper in the project that uses it.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/pcb.scad>
|
||||
|
||||
clearance = 0.2;
|
||||
|
229
printed/printed_box.scad
Normal file
@@ -0,0 +1,229 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2020
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
//
|
||||
//! A fully parametric 3D printed case that can be customised with cutouts and additions specified by children.
|
||||
//!
|
||||
//! The walls can be made wavy, which possibly reduces warping when printing and looks nice, however if holes need to be made
|
||||
//! in the sides you can't print a wavy bridge. Any holes need to be surrounded by a 45° chamfer to make the bridges straight.
|
||||
//! See the mounting points for the feet in the first example.
|
||||
//!
|
||||
//! It can also have printed feet on the base with the screws doubling up to hold the base on.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <foot.scad>
|
||||
|
||||
function pbox_name(type) = type[0]; //! Name to allow more than one box in a project
|
||||
function pbox_wall(type) = type[1]; //! Wall thickness
|
||||
function pbox_top(type) = type[2]; //! Top thickness
|
||||
function pbox_base(type) = type[3]; //! Base thickness, can be zero for no base
|
||||
function pbox_foot(type) = type[4]; //! Printed foot, can be false to suppress feet
|
||||
function pbox_base_screw(type) = type[5]; //! Screw type if no feet
|
||||
function pbox_radius(type) = type[6]; //! Internal corner radius
|
||||
function pbox_ridges(type) = type[7]; //! Ridge wavelength and amplitude
|
||||
function pbox_width(type) = type[8]; //! Internal width
|
||||
function pbox_depth(type) = type[9]; //! Internal depth
|
||||
function pbox_height(type) = type[10]; //! Internal height
|
||||
|
||||
base_outset = 1; // How much the base overlaps the inner dimensions
|
||||
base_overlap = 2; // The width of ledge the base sits on
|
||||
height_overlap = 1; // How far the edges sit below the base
|
||||
|
||||
function pbox_inclusion(type) = pbox_base(type) ? base_overlap - base_outset : 0; //! How far the ledge for the base extends inwards
|
||||
|
||||
function pbox_total_height(type) = //! Total height including base overlap
|
||||
let(base = pbox_base(type),
|
||||
foot = pbox_foot(type),
|
||||
washer = pbox_washer(type),
|
||||
screw = pbox_screw(type))
|
||||
pbox_height(type) + pbox_top(type) + base + (base ? height_overlap : 0) + (foot || !base ? 0 : washer_thickness(washer) + screw_head_height(screw));
|
||||
|
||||
function pbox_screw(type) = //! Foot screw if got feet else base_screw
|
||||
let(foot = pbox_foot(type)) foot ? foot_screw(foot) : pbox_base_screw(type);
|
||||
|
||||
function pbox_insert(type) = screw_insert(pbox_screw(type)); //! The insert for the base screws
|
||||
function pbox_washer(type) = screw_washer(pbox_screw(type)); //! The washer for the base screws
|
||||
|
||||
function pbox_screw_length(type, panel_thickness = 0) = //! Length of the base screw
|
||||
let(foot = pbox_foot(type))
|
||||
screw_shorter_than(pbox_base(type) + washer_thickness(pbox_washer(type))
|
||||
+ insert_length(pbox_insert(type))
|
||||
+ (foot ? foot_thickness(foot) : panel_thickness));
|
||||
|
||||
function pbox_mid_offset(type) = pbox_ridges(type).y + pbox_wall(type) / 2; // Offset to wall midpoint
|
||||
|
||||
function pbox_screw_inset(type) = //! How far the base screws are inset
|
||||
let(foot = pbox_foot(type),
|
||||
r = foot ? foot_diameter(foot) / 2 : washer_radius(pbox_washer(type)),
|
||||
R = pbox_radius(type)
|
||||
) max(r, R - (R - r) / sqrt(2));
|
||||
|
||||
module pbox_screw_positions(type) {
|
||||
foot = pbox_foot(type);
|
||||
inset = pbox_screw_inset(type);
|
||||
for(x = [-1, 1], y = [-1, 1])
|
||||
translate([x * (pbox_width(type) / 2 - inset), y * (pbox_depth(type) / 2 - inset)])
|
||||
rotate((y > 0 ? -x * 45 : -x * 135) + 90)
|
||||
children();
|
||||
}
|
||||
|
||||
module pbox_mid_shape(type) {
|
||||
ridges = pbox_ridges(type);
|
||||
offset = ridges.y + pbox_wall(type) / 2;
|
||||
rad = pbox_radius(type) + offset;
|
||||
w = pbox_width(type) + 2 * offset;
|
||||
d = pbox_depth(type) + 2 * offset;
|
||||
|
||||
module waves(length) {
|
||||
l = length - 2 * rad;
|
||||
|
||||
waves = round(l / ridges.x);
|
||||
points = 16;
|
||||
translate([-l / 2, ridges.y / 2])
|
||||
polygon(concat([[0, -10]], [for(i = [0 : waves * points], a = 360 * i / points) [i * l / waves / points, -cos(a) * ridges.y / 2] ], [[l, -10]]));
|
||||
}
|
||||
|
||||
difference() {
|
||||
rounded_square([w, d], rad, center = true);
|
||||
|
||||
if(ridges.y)
|
||||
for(side = [-1, 1]) {
|
||||
translate([0, side * d / 2])
|
||||
rotate(90 + side * 90)
|
||||
waves(w);
|
||||
|
||||
translate([side * w / 2, 0])
|
||||
rotate(side * 90)
|
||||
waves(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module pbox_inner_shape(type) {
|
||||
rad = pbox_radius(type);
|
||||
w = pbox_width(type);
|
||||
d = pbox_depth(type);
|
||||
|
||||
rounded_square([w, d], rad, center = true);
|
||||
}
|
||||
|
||||
module pbox_base(type) { //! Generate the STL for the base
|
||||
stl(str(pbox_name(type),"_base"));
|
||||
t = pbox_base(type);
|
||||
difference() {
|
||||
union() {
|
||||
linear_extrude(height = t)
|
||||
offset(base_outset - 0.2)
|
||||
pbox_inner_shape(type);
|
||||
|
||||
if($children > 0)
|
||||
children(0);
|
||||
}
|
||||
pbox_screw_positions(type)
|
||||
poly_cylinder(r = screw_clearance_radius(pbox_screw(type)), h = 2 * t + eps, center = true);
|
||||
|
||||
if($children > 1)
|
||||
children(1);
|
||||
}
|
||||
}
|
||||
|
||||
module pbox(type) { //! Generate the STL for the main case
|
||||
stl(pbox_name(type));
|
||||
|
||||
height = pbox_height(type);
|
||||
total_height = pbox_total_height(type);
|
||||
top_thickness = pbox_top(type);
|
||||
wall = pbox_wall(type);
|
||||
ledge_outset = pbox_ridges(type).y;
|
||||
ledge_inset = base_outset - base_overlap;
|
||||
ledge_h = pbox_base(type) ? (ledge_outset - ledge_inset) * 2 : 0;
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
linear_extrude(height = total_height)
|
||||
offset(wall / 2) pbox_mid_shape(type);
|
||||
|
||||
if($children > 2)
|
||||
children(2);
|
||||
}
|
||||
difference() {
|
||||
translate_z(top_thickness)
|
||||
union() {
|
||||
linear_extrude(height = height + eps)
|
||||
offset(-wall / 2) pbox_mid_shape(type);
|
||||
|
||||
translate_z(height) // Recess for the base
|
||||
linear_extrude(height = total_height - height)
|
||||
offset(base_outset)
|
||||
pbox_inner_shape(type);
|
||||
}
|
||||
// Ledge to support the lid
|
||||
if(ledge_h)
|
||||
translate_z(top_thickness + height - ledge_h)
|
||||
difference() {
|
||||
rounded_rectangle([pbox_width(type) + 2 * outset, pbox_depth(type) + 2 * outset, ledge_h], 1, center = false);
|
||||
|
||||
hull() {
|
||||
linear_extrude(height = ledge_h + eps)
|
||||
offset(ledge_inset)
|
||||
pbox_inner_shape(type);
|
||||
|
||||
linear_extrude(height = eps)
|
||||
offset(ledge_outset)
|
||||
pbox_inner_shape(type);
|
||||
}
|
||||
pbox_screw_positions(type)
|
||||
insert_hole(pbox_insert(type));
|
||||
}
|
||||
|
||||
// Corner lugs for inserts
|
||||
outset = wall + pbox_ridges(type).y;
|
||||
or = pbox_radius(type) + outset;
|
||||
inset = pbox_screw_inset(type) + outset;
|
||||
br = insert_boss_radius(pbox_insert(type), wall);
|
||||
ext = sqrt(2) * inset - or * (sqrt(2) - 1) - br;
|
||||
translate_z(height + top_thickness)
|
||||
pbox_screw_positions(type)
|
||||
insert_lug(pbox_insert(type), wall, counter_bore = 0, extension = ext, corner_r = or);
|
||||
|
||||
if($children > 0)
|
||||
children(0);
|
||||
}
|
||||
if($children > 1)
|
||||
children(1);
|
||||
}
|
||||
}
|
||||
|
||||
module pbox_inserts(type) //! Place the inserts for the base screws
|
||||
translate_z(pbox_height(type) + pbox_top(type))
|
||||
pbox_screw_positions(type)
|
||||
insert(pbox_insert(type));
|
||||
|
||||
module pbox_base_screws(type, thickness = 0) //! Place the screws and feet
|
||||
translate_z(pbox_height(type) + pbox_top(type) + pbox_base(type))
|
||||
pbox_screw_positions(type) {
|
||||
foot = pbox_foot(type);
|
||||
if(foot)
|
||||
color(pp4_colour)
|
||||
foot(foot);
|
||||
|
||||
translate_z(foot ? foot_thickness(foot) : thickness)
|
||||
screw_and_washer(pbox_screw(type), pbox_screw_length(type, thickness));
|
||||
}
|
@@ -22,7 +22,6 @@
|
||||
//! The stl and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
use <../vitamins/wire.scad>
|
||||
|
@@ -21,7 +21,6 @@
|
||||
//! Clamp for ribbon cable and polypropylene strip.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <../vitamins/cable_strip.scad>
|
||||
|
||||
|
@@ -21,7 +21,6 @@
|
||||
//! Knob with embedded hex head screw.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../utils/hanging_hole.scad>
|
||||
|
||||
knob_wall = 2;
|
||||
|
@@ -22,9 +22,8 @@
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/mains_sockets.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
include <../vitamins/ring_terminals.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
box_height = 19;
|
||||
base_thickness = 2;
|
||||
@@ -93,7 +92,7 @@ assembly(str("socket_box_", type[0])) {
|
||||
screw = mains_socket_screw(type);
|
||||
insert = screw_insert(screw);
|
||||
|
||||
color("lime") render() socket_box(type);
|
||||
color(pp1_colour) render() socket_box(type);
|
||||
|
||||
mains_socket_hole_positions(type)
|
||||
translate_z(height)
|
||||
|
@@ -19,10 +19,9 @@
|
||||
|
||||
//
|
||||
//! A cover to go over the mains end of an SSR to make it safe to be touched.
|
||||
//! The stl and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
||||
//! The STL and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
use <../vitamins/wire.scad>
|
||||
|
@@ -22,7 +22,6 @@
|
||||
//! be fully customised by passing a list of properties.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
strap = [18, 2, M3_pan_screw, 3, 25];
|
||||
|
98
readme.md
@@ -31,13 +31,13 @@ See [usage](docs/usage.md) for requirements, installation instructions and a usa
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#Ring_terminals">Ring_terminals</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Pcb_mount">Pcb_mount</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Psu_shroud">Psu_shroud</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Scs_bearing_blocks">Scs_bearing_blocks</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Sk_brackets">Sk_brackets</a> </td><td> <a href = "#Ssr_shroud">Ssr_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Iecs">Iecs</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Spools">Spools</a> </td><td></td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Scs_bearing_blocks">Scs_bearing_blocks</a> </td><td> <a href = "#Psu_shroud">Psu_shroud</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Sk_brackets">Sk_brackets</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Iecs">Iecs</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Ssr_shroud">Ssr_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Inserts">Inserts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Springs">Springs</a> </td><td></td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Kp_pillow_blocks">Kp_pillow_blocks</a> </td><td> <a href = "#Ssrs">Ssrs</a> </td><td></td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Ldrs">Ldrs</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td></td><td></td><td></td></tr>
|
||||
@@ -2171,6 +2171,7 @@ Face order is bottom, top, left, right, front, back.
|
||||
| ```psu_face_iec(type)``` | IEC connector x,y, rotation and type |
|
||||
| ```psu_face_switch(type)``` | Rocker switch x,y, rotation and type |
|
||||
| ```psu_face_thickness(type)``` | The thickness |
|
||||
| ```psu_face_vents(type)``` | Vents array position x,y, rotation, size and corner radius |
|
||||
| ```psu_faces(type)``` | List of face descriptions |
|
||||
| ```psu_height(type)``` | Height |
|
||||
| ```psu_left_bay(type)``` | Bay for terminals |
|
||||
@@ -4295,6 +4296,87 @@ The stl must be given a parameterless wrapper in the project that uses it.
|
||||
| 1 | pcb_mount_PI_IO_5.stl |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="Printed_box"></a>
|
||||
## Printed_box
|
||||
A fully parametric 3D printed case that can be customised with cutouts and additions specified by children.
|
||||
|
||||
The walls can be made wavy, which possibly reduces warping when printing and looks nice, however if holes need to be made
|
||||
in the sides you can't print a wavy bridge. Any holes need to be surrounded by a 45° chamfer to make the bridges straight.
|
||||
See the mounting points for the feet in the first example.
|
||||
|
||||
It can also have printed feet on the base with the screws doubling up to hold the base on.
|
||||
|
||||
|
||||
[printed/printed_box.scad](printed/printed_box.scad) Implementation.
|
||||
|
||||
[tests/printed_box.scad](tests/printed_box.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| ```pbox_base(type)``` | Base thickness, can be zero for no base |
|
||||
| ```pbox_base_screw(type)``` | Screw type if no feet |
|
||||
| ```pbox_depth(type)``` | Internal depth |
|
||||
| ```pbox_foot(type)``` | Printed foot, can be false to suppress feet |
|
||||
| ```pbox_height(type)``` | Internal height |
|
||||
| ```pbox_name(type)``` | Name to allow more than one box in a project |
|
||||
| ```pbox_radius(type)``` | Internal corner radius |
|
||||
| ```pbox_ridges(type)``` | Ridge wavelength and amplitude |
|
||||
| ```pbox_top(type)``` | Top thickness |
|
||||
| ```pbox_wall(type)``` | Wall thickness |
|
||||
| ```pbox_width(type)``` | Internal width |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| ```pbox_inclusion(type)``` | How far the ledge for the base extends inwards |
|
||||
| ```pbox_insert(type)``` | The insert for the base screws |
|
||||
| ```pbox_screw(type)``` | Foot screw if got feet else base_screw |
|
||||
| ```pbox_screw_inset(type)``` | How far the base screws are inset |
|
||||
| ```pbox_screw_length(type, panel_thickness = 0)``` | Length of the base screw |
|
||||
| ```pbox_total_height(type)``` | Total height including base overlap |
|
||||
| ```pbox_washer(type)``` | The washer for the base screws |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| ```pbox(type)``` | Generate the STL for the main case |
|
||||
| ```pbox_base(type)``` | Generate the STL for the base |
|
||||
| ```pbox_base_screws(type, thickness = 0)``` | Place the screws and feet |
|
||||
| ```pbox_inserts(type)``` | Place the inserts for the base screws |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 4 | ```insert(F1BM)``` | Heatfit insert M2 |
|
||||
| 4 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
||||
| 4 | ```screw(M2_cap_screw, 6)``` | Screw M2 cap x 6mm |
|
||||
| 3 | ```screw(M3_pan_screw, 6)``` | Screw M3 pan x 6mm |
|
||||
| 4 | ```screw(M3_pan_screw, 10)``` | Screw M3 pan x 10mm |
|
||||
| 4 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
||||
| 7 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
||||
|
||||
### Printed
|
||||
| Qty | Filename |
|
||||
| ---:|:--- |
|
||||
| 1 | box1.stl |
|
||||
| 1 | box1_base.stl |
|
||||
| 7 | foot.stl |
|
||||
| 1 | smooth_box.stl |
|
||||
| 1 | smooth_box_base.stl |
|
||||
|
||||
### Assemblies
|
||||
| Qty | Name |
|
||||
| ---:|:--- |
|
||||
| 1 | box1_assembly |
|
||||
| 1 | box2_assembly |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
@@ -4503,7 +4585,7 @@ UK 13A socket and printed backbox with earth terminal for the panel it is mounte
|
||||
<a name="Ssr_shroud"></a>
|
||||
## Ssr_shroud
|
||||
A cover to go over the mains end of an SSR to make it safe to be touched.
|
||||
The stl and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
||||
The STL and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
||||
|
||||
|
||||
[printed/ssr_shroud.scad](printed/ssr_shroud.scad) Implementation.
|
||||
|
@@ -102,13 +102,6 @@ def make_parts(target, part_type, parts = None):
|
||||
part = base_name + '.' + part_type
|
||||
if part in targets:
|
||||
#
|
||||
# make a file to use the module
|
||||
#
|
||||
part_maker_name = part_type + ".scad"
|
||||
with open(part_maker_name, "w") as f:
|
||||
f.write("use <%s/%s>\n" % (dir, filename))
|
||||
f.write("%s();\n" % module);
|
||||
#
|
||||
# Run openscad on the created file
|
||||
#
|
||||
part_file = target_dir + "/" + part
|
||||
@@ -119,15 +112,21 @@ def make_parts(target, part_type, parts = None):
|
||||
changed = "No bounds"
|
||||
if changed:
|
||||
print(changed)
|
||||
#
|
||||
# make a file to use the module
|
||||
#
|
||||
part_maker_name = part_type + ".scad"
|
||||
with open(part_maker_name, "w") as f:
|
||||
f.write("use <%s/%s>\n" % (dir, filename))
|
||||
f.write("%s();\n" % module);
|
||||
t = time.time()
|
||||
openscad.run("-D$bom=1", "-d", dname, "-o", part_file, part_maker_name)
|
||||
times.add_time(part, t)
|
||||
if part_type == 'stl':
|
||||
bounds = c14n_stl.canonicalise(part_file)
|
||||
bounds_map[part] = bounds
|
||||
|
||||
os.remove(part_maker_name)
|
||||
targets.remove(part)
|
||||
os.remove(part_maker_name)
|
||||
#
|
||||
# Write new bounds file
|
||||
#
|
||||
|
@@ -23,7 +23,7 @@ import json, os, deps
|
||||
|
||||
def check_options(dir = '.'):
|
||||
global options, options_mtime
|
||||
options = { "show_threads": str(os.getenv("SHOW_THREADS")) }
|
||||
options = { "show_threads": str(os.getenv("NOPSCADLIB_SHOW_THREADS")) }
|
||||
options_fname = dir + '/options.json'
|
||||
try:
|
||||
with open(options_fname) as json_file:
|
||||
|
@@ -59,7 +59,7 @@ def render(target, type):
|
||||
if mtime(part_file) > mtime(png_name):
|
||||
png_maker_name = "png.scad"
|
||||
with open(png_maker_name, "w") as f:
|
||||
f.write('color("lime") import("%s");\n' % part_file)
|
||||
f.write('color([0, 146/255, 0]) import("%s");\n' % part_file)
|
||||
cam = "--camera=0,0,0,70,0,315,500" if type == 'stl' else "--camera=0,0,0,0,0,0,500"
|
||||
render = "--preview" if type == 'stl' else "--render"
|
||||
tmp_name = 'tmp.png'
|
||||
|
@@ -151,13 +151,6 @@ def views(target, do_assemblies = None):
|
||||
break
|
||||
if not do_assemblies or module in do_assemblies:
|
||||
#
|
||||
# make a file to use the module
|
||||
#
|
||||
png_maker_name = 'png.scad'
|
||||
with open(png_maker_name, "w") as f:
|
||||
f.write("use <%s/%s>\n" % (dir, filename))
|
||||
f.write("%s();\n" % module);
|
||||
#
|
||||
# Run openscad on the created file
|
||||
#
|
||||
dname = deps_name(deps_dir, filename)
|
||||
@@ -171,16 +164,23 @@ def views(target, do_assemblies = None):
|
||||
tmp_name = 'tmp.png'
|
||||
if changed:
|
||||
print(changed)
|
||||
#
|
||||
# make a file to use the module
|
||||
#
|
||||
png_maker_name = 'png.scad'
|
||||
with open(png_maker_name, "w") as f:
|
||||
f.write("use <%s/%s>\n" % (dir, filename))
|
||||
f.write("%s();\n" % module);
|
||||
t = time.time()
|
||||
openscad.run_list(options.list() + ["-D$pose=1", "-D$explode=%d" % explode, colour_scheme, "--projection=p", "--imgsize=4096,4096", "--autocenter", "--viewall", "-d", dname, "-o", tmp_name, png_maker_name]);
|
||||
times.add_time(png_name, t)
|
||||
do_cmd(["magick", tmp_name, "-trim", "-resize", "1004x1004", "-bordercolor", background, "-border", "10", tmp_name])
|
||||
update_image(tmp_name, png_name)
|
||||
os.remove(png_maker_name)
|
||||
tn_name = png_name.replace('.png', '_tn.png')
|
||||
if mtime(png_name) > mtime(tn_name):
|
||||
do_cmd(("magick "+ png_name + " -trim -resize 280x280 -background " + background + " -gravity Center -extent 280x280 -bordercolor " + background + " -border 10 " + tmp_name).split())
|
||||
update_image(tmp_name, tn_name)
|
||||
os.remove(png_maker_name)
|
||||
done_assemblies.append(module)
|
||||
else:
|
||||
if module == 'main_assembly':
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/annotation.scad>
|
||||
|
||||
module annotations() {
|
||||
|
@@ -16,10 +16,9 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/springs.scad>
|
||||
include <../vitamins/batteries.scad>
|
||||
|
||||
module batteries()
|
||||
|
@@ -18,8 +18,6 @@
|
||||
//
|
||||
include <../core.scad>
|
||||
|
||||
include <../vitamins/belts.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/pulleys.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/bezier.scad>
|
||||
use <../utils/sweep.scad>
|
||||
use <../utils/annotation.scad>
|
||||
|
@@ -19,7 +19,6 @@
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/blowers.scad>
|
||||
|
||||
module blowers()
|
||||
|
@@ -21,7 +21,6 @@
|
||||
//! BOM and assembly demonstration
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/sheets.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
$explode = 1; // Normally set on the command line when generating assembly views with views.py
|
||||
|
@@ -18,7 +18,6 @@
|
||||
//
|
||||
include <../core.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/sheets.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/bulldogs.scad>
|
||||
|
@@ -18,7 +18,6 @@
|
||||
//
|
||||
include <../core.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/sheets.scad>
|
||||
use <../vitamins/insert.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/buttons.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
use <../printed/cable_grommets.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
use <../vitamins/cable_strip.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/carriers.scad>
|
||||
|
||||
module carriers()
|
||||
|
@@ -17,7 +17,7 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
module clips() {
|
||||
clip(xmin = 0, ymin = 0, zmin = 0, zmax = 40) sphere(50);
|
||||
|
@@ -19,7 +19,6 @@
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/components.scad>
|
||||
|
||||
module resistors()
|
||||
|
@@ -19,8 +19,6 @@
|
||||
include <../core.scad>
|
||||
use <../printed/corner_block.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
|
||||
screws = [M2_cap_screw, M2p5_pan_screw, M3_dome_screw, M4_dome_screw];
|
||||
|
||||
module do_corner_block(screw)
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/d_connectors.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/door_hinge.scad>
|
||||
|
||||
include <../vitamins/sheets.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/door_latch.scad>
|
||||
|
||||
module door_latches()
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
include <../vitamins/extrusion_brackets.scad>
|
||||
include <../vitamins/extrusions.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/extrusions.scad>
|
||||
@@ -27,4 +27,3 @@ module extrusions()
|
||||
|
||||
if ($preview)
|
||||
extrusions();
|
||||
|
||||
|
@@ -17,11 +17,11 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../printed/fan_guard.scad>
|
||||
include <../vitamins/fans.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module fan_guards()
|
||||
layout([for(f = fans) fan_width(f)], 10)
|
||||
color(pp1_colour) fan_guard(fans[$i], spokes = fan_width(fans[$i]) > 60 ? 8 : 4);
|
||||
|
@@ -17,11 +17,11 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/fans.scad>
|
||||
include <../printed/fan_guard.scad>
|
||||
|
||||
include <../vitamins/fans.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
|
||||
module fans()
|
||||
layout([for(f = fans) fan_width(f)], 10)
|
||||
|
@@ -20,8 +20,6 @@ include <../core.scad>
|
||||
use <../printed/fixing_block.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
|
||||
screws = [M2_cap_screw, M2p5_pan_screw, M3_dome_screw, M4_dome_screw];
|
||||
|
||||
module fixing_block_test(screw)
|
||||
|
@@ -17,7 +17,6 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/screws.scad>
|
||||
use <../utils/layout.scad>
|
||||
use <../printed/flat_hinge.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/foot.scad>
|
||||
|
||||
module feet()
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
use <../vitamins/fuseholder.scad>
|
||||
|
||||
|
@@ -17,7 +17,7 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
module globals() {
|
||||
linear_extrude(height = eps) {
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/handle.scad>
|
||||
|
||||
module handle()
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/hot_ends.scad>
|
||||
|
@@ -17,10 +17,10 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/iecs.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module iecs()
|
||||
layout([for(i = iecs) iec_flange_h(i)], 10)
|
||||
rotate(90)
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/inserts.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
use <../vitamins/jack.scad>
|
||||
|
||||
|
@@ -17,10 +17,9 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/kp_pillow_blocks.scad>
|
||||
include <../vitamins/nuts.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module kp_pillow_blocks() {
|
||||
screws = [M4_cap_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw];
|
||||
|
@@ -19,7 +19,6 @@
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/leadnuts.scad>
|
||||
|
||||
module leadnuts()
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/leds.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/light_strips.scad>
|
||||
@@ -29,7 +29,7 @@ module light_strips()
|
||||
for(end = [-1, 1])
|
||||
translate([end * (light_strip_cut_length(light, segs) / 2 - d / 2), 0])
|
||||
rotate([90, 0, 90])
|
||||
color("lime") render()
|
||||
color(pp1_colour) render()
|
||||
translate_z(-d / 2)
|
||||
light_strip_clip(light);
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/linear_bearings.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/mains_sockets.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/maths.scad>
|
||||
use <../utils/annotation.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
use <../vitamins/meter.scad>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/microswitches.scad>
|
||||
|
@@ -17,10 +17,9 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/modules.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
include <../vitamins/modules.scad>
|
||||
|
||||
module modules()
|
||||
layout([for(m = modules) mod_length(m)], 5)
|
||||
|
@@ -19,8 +19,6 @@
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/screws.scad>
|
||||
|
||||
module nuts() {
|
||||
layout([for(n = nuts) 2 * nut_radius(n)], 5) let(n = nuts[$i]) {
|
||||
for(nyloc = [false, true])
|
||||
|
@@ -17,7 +17,7 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/offset.scad>
|
||||
|
||||
module shape()
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
use <../vitamins/opengrab.scad>
|
||||
|
||||
|
@@ -17,11 +17,11 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
|
||||
use <../vitamins/pcb.scad>
|
||||
include <../vitamins/microswitches.scad>
|
||||
include <../vitamins/d_connectors.scad>
|
||||
|
||||
use <../vitamins/pcb.scad>
|
||||
|
||||
gt_5x17 = ["gt_5x17", 5, 10, 17, 5, 11, 0.4, 9, 2,1.5, 1, 3, 6, 0, 0, 0];
|
||||
gt_5x11 = ["gt_5x11", 5, 8, 11, 5, 7, 0.4, 7, 1.5,1.5, 1,2.5, 6, 0, 0, 0];
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../printed/pcb_mount.scad>
|
||||
|
||||
PI_IO = ["PI_IO", "PI_IO V2", 35.56, 25.4, 1.6, 0, 0, 0, "green", true, [],
|
||||
|
@@ -17,11 +17,10 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/d_connectors.scad>
|
||||
include <../vitamins/pcbs.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module pcbs()
|
||||
layout([for(p = pcbs) pcb_width(p)], 10)
|
||||
translate([0, pcb_length(pcbs[$i]) / 2])
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/pillars.scad>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/pin_headers.scad>
|
||||
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 114 KiB |