Cleanup #18
26 changed files with 28321 additions and 185567 deletions
|
@ -1,149 +0,0 @@
|
|||
include <rounded_square.scad>
|
||||
include <MCAD/nuts_and_bolts.scad>
|
||||
|
||||
l = 384;
|
||||
w = 135.5;
|
||||
h = 7;
|
||||
|
||||
wal = 1.5;
|
||||
flo = 1.5; // 1mm
|
||||
|
||||
c = 2; // corners diameter
|
||||
|
||||
h_po = 4.5; // hole for screws
|
||||
h_di = 5;
|
||||
h_de = 6.5;
|
||||
|
||||
u_height = 6;
|
||||
u_s_width = 13.2;
|
||||
u_s_depth = 12;
|
||||
u_s_pins = 10;
|
||||
u_s_depression = 0.3;
|
||||
u_p_width = 13;
|
||||
u_wall = 2;
|
||||
u_pl_w = 1; // small platic stuff on the usb socket
|
||||
u_pl_d = 3; // small platic stuff on the usb socket
|
||||
|
||||
nbHolesW = 2;
|
||||
nbHolesL = 6;
|
||||
|
||||
part="foot"; // all / left / right
|
||||
|
||||
$fn=30;
|
||||
|
||||
module hole(px, py, de, di, p) {
|
||||
translate([px, py, flo])
|
||||
difference() {
|
||||
cylinder(h = h, r = de/2 + 1);
|
||||
cylinder(h = h+0.1, r = di/2);
|
||||
}
|
||||
}
|
||||
|
||||
module hole_sub(px, py, de, di, p) {
|
||||
translate([px, py, -0.05])
|
||||
union() {
|
||||
// Max plastic height = 8mm - 1.5mm (metal) - 2mm (nut) => 4.5mm
|
||||
tolerance = 0.2;
|
||||
radius = METRIC_NUT_AC_WIDTHS[3] / 2 + tolerance;
|
||||
cylinder(r = radius, h = (h + flo) - 4.5 , $fn = 6, center=[0,0]);
|
||||
nutHole(size = 3, tolerance = 0.1);
|
||||
cylinder(h = h + flo + 0.1, r = di/2);
|
||||
}
|
||||
}
|
||||
|
||||
module ellipsoid(diameter, width, height) {
|
||||
translate([0, 0, -height/4])
|
||||
scale([1, width/diameter, 1]) linear_extrude(height = height) circle(d = diameter);
|
||||
}
|
||||
|
||||
module usb_support(x, y, z) {
|
||||
translate([x, y, z]) difference() {
|
||||
translate([- u_wall + (u_p_width - u_s_width)/2, - u_s_depth - u_wall, 0])
|
||||
cube(size = [u_s_width + u_wall * 2, u_s_depth + u_wall, h]);
|
||||
translate([(u_p_width - u_s_width)/2, -u_s_depth, h-u_height - u_s_depression])
|
||||
cube(size = [u_s_width, u_s_depth, u_height + u_s_depression + 0.05]);
|
||||
translate([(u_p_width - u_s_width)/2-u_pl_w, -u_s_depth, h-u_height - u_s_depression])
|
||||
cube(size = [u_s_width + 2*u_pl_w, u_pl_d, u_height + u_s_depression + 0.05]);
|
||||
translate([u_p_width/2 - u_s_pins/2, -(u_s_depth + u_wall)-0.05, h-u_height/2])
|
||||
cube(size = [u_s_pins, u_s_depth + u_wall + 0.05, u_height/2 + 0.05]);
|
||||
}
|
||||
}
|
||||
|
||||
module usb_sub(x, y, z) {
|
||||
translate([x, y, z])
|
||||
translate([0, 0.05, 0]) cube(size = [u_p_width, 12, u_height + 0.05]);
|
||||
}
|
||||
|
||||
module floor_sub() {
|
||||
// Floor holes
|
||||
for (j = [0: nbHolesW - 1]) for (i = [0:nbHolesL - 1]) {
|
||||
orientation = ((i + j) % 2) * 2 - 1;
|
||||
translate([ l / (2 * nbHolesL) + i * (l / 6), w / (2 * nbHolesW) + j * (w / 2), 0])
|
||||
rotate([0, 0, orientation * 40]) ellipsoid(35, 55, flo * 2);
|
||||
}
|
||||
}
|
||||
|
||||
module case() {
|
||||
difference() {
|
||||
linear_extrude(height = h + flo)
|
||||
rounded_square([l, w], corners = [5, 5, 5, 5]);
|
||||
translate([wal, wal, flo])
|
||||
cube(size = [l-2*wal, w-2*wal, h+0.1]);
|
||||
}
|
||||
}
|
||||
|
||||
module keyboard() {
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
case();
|
||||
usb_support(50, w - wal, flo);
|
||||
|
||||
hole( h_po, h_po, h_de, h_di, h_po);
|
||||
hole( l/2 , h_po, h_de, h_di, h_po);
|
||||
hole( l - h_po, h_po, h_de, h_di, h_po);
|
||||
hole( h_po, w - h_po, h_de, h_di, h_po);
|
||||
hole( l/2 , w - h_po, h_de, h_di, h_po);
|
||||
hole( l - h_po, w - h_po, h_de, h_di, h_po);
|
||||
}
|
||||
|
||||
usb_sub(50, w - 12, flo + h - u_height);
|
||||
|
||||
floor_sub();
|
||||
|
||||
hole_sub( h_po, h_po, h_de, h_di, h_po);
|
||||
hole_sub( l/2 , h_po, h_de, h_di, h_po);
|
||||
hole_sub( l - h_po, h_po, h_de, h_di, h_po);
|
||||
hole_sub( h_po, w - h_po, h_de, h_di, h_po);
|
||||
hole_sub( l/2 , w - h_po, h_de, h_di, h_po);
|
||||
hole_sub( l - h_po, w - h_po, h_de, h_di, h_po);
|
||||
}
|
||||
}
|
||||
|
||||
module foot() {
|
||||
difference() {
|
||||
cube(size = [40, 10, h+0.1]);
|
||||
hole_sub(20, 5, h_de, h_di, h_po);
|
||||
}
|
||||
}
|
||||
|
||||
if (part == "all") {
|
||||
keyboard();
|
||||
translate([1/2 * l - 20, w - 10, -h]) foot();
|
||||
}
|
||||
|
||||
|
||||
if (part == "foot") {
|
||||
foot();
|
||||
}
|
||||
|
||||
if (part == "right" || part == "both") difference() {
|
||||
keyboard();
|
||||
translate([0, 0, 0]) cube(size = [l/2 - h_po, w, h+flo]);
|
||||
translate([0, 0, 0]) cube(size = [l/2 + h_po, w, h+flo - 3]);
|
||||
}
|
||||
if (part == "left" || part == "both") difference() {
|
||||
keyboard();
|
||||
translate([l/2 + h_po, 0, 0]) cube(size = [l/2 - h_po, w, h+flo]);
|
||||
translate([l/2 - h_po, 0, h+flo - 3]) cube(size = [l/2 + h_po, w, h+flo - 3]);
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,506 +0,0 @@
|
|||
solid OpenSCAD_Model
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 45 135 11
|
||||
vertex 43 133.5 11
|
||||
vertex 45 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 1
|
||||
outer loop
|
||||
vertex 42 135 11
|
||||
vertex 43 133.5 11
|
||||
vertex 45 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 43 133.5 11
|
||||
vertex 42 135 11
|
||||
vertex 42 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 1
|
||||
outer loop
|
||||
vertex 45 123 11
|
||||
vertex 47 121 11
|
||||
vertex 47 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 45 123 11
|
||||
vertex 43 121 11
|
||||
vertex 47 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 43 121 11
|
||||
vertex 45 123 11
|
||||
vertex 43 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 60 135 11
|
||||
vertex 59 133.5 11
|
||||
vertex 60 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 1
|
||||
outer loop
|
||||
vertex 57 135 11
|
||||
vertex 59 133.5 11
|
||||
vertex 60 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 57 123 11
|
||||
vertex 59 133.5 11
|
||||
vertex 57 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 59 133.5 11
|
||||
vertex 57 123 11
|
||||
vertex 59 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 55 121 11
|
||||
vertex 57 123 11
|
||||
vertex 55 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 57 123 11
|
||||
vertex 55 121 11
|
||||
vertex 59 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 43 133.5 2
|
||||
vertex 42 133.5 2
|
||||
vertex 43 121 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 59 121 2
|
||||
vertex 60 133.5 2
|
||||
vertex 59 133.5 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 60 133.5 2
|
||||
vertex 59 121 2
|
||||
vertex 60 119 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 1
|
||||
outer loop
|
||||
vertex 43 121 2
|
||||
vertex 60 119 2
|
||||
vertex 59 121 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 43 121 2
|
||||
vertex 42 119 2
|
||||
vertex 60 119 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 42 119 2
|
||||
vertex 43 121 2
|
||||
vertex 42 133.5 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 -1
|
||||
outer loop
|
||||
vertex 42 119 0
|
||||
vertex 60 135 0
|
||||
vertex 60 119 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 -1
|
||||
outer loop
|
||||
vertex 60 135 0
|
||||
vertex 42 119 0
|
||||
vertex 42 135 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 60 135 11
|
||||
vertex 57 135 5
|
||||
vertex 57 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 57 135 5
|
||||
vertex 60 135 0
|
||||
vertex 45 135 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 -0
|
||||
outer loop
|
||||
vertex 60 135 0
|
||||
vertex 57 135 5
|
||||
vertex 60 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 -0
|
||||
outer loop
|
||||
vertex 45 135 5
|
||||
vertex 42 135 11
|
||||
vertex 45 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 45 135 5
|
||||
vertex 42 135 0
|
||||
vertex 42 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 42 135 0
|
||||
vertex 45 135 5
|
||||
vertex 60 135 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 42 133.5 2
|
||||
vertex 43 133.5 11
|
||||
vertex 42 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 -0
|
||||
outer loop
|
||||
vertex 43 133.5 11
|
||||
vertex 42 133.5 2
|
||||
vertex 43 133.5 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 59 133.5 2
|
||||
vertex 60 133.5 11
|
||||
vertex 59 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 -0
|
||||
outer loop
|
||||
vertex 60 133.5 11
|
||||
vertex 59 133.5 2
|
||||
vertex 60 133.5 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 45 135 11
|
||||
vertex 45 133.5 5
|
||||
vertex 45 135 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 -0 0
|
||||
outer loop
|
||||
vertex 45 123 11
|
||||
vertex 45 133.5 5
|
||||
vertex 45 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 45 133.5 5
|
||||
vertex 45 123 11
|
||||
vertex 45 123 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 57 133.5 5
|
||||
vertex 57 135 11
|
||||
vertex 57 135 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 57 123 11
|
||||
vertex 57 133.5 5
|
||||
vertex 57 123 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 57 133.5 5
|
||||
vertex 57 123 11
|
||||
vertex 57 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 45 133.5 5
|
||||
vertex 57 133.5 5
|
||||
vertex 57 135 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 45 133.5 5
|
||||
vertex 57 135 5
|
||||
vertex 45 135 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 57 133.5 5
|
||||
vertex 45 133.5 5
|
||||
vertex 57 123 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 57 123 5
|
||||
vertex 45 133.5 5
|
||||
vertex 45 123 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 43 121 2
|
||||
vertex 43 133.5 11
|
||||
vertex 43 133.5 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 -0 0
|
||||
outer loop
|
||||
vertex 43 133.5 11
|
||||
vertex 43 121 2
|
||||
vertex 43 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 -0 0
|
||||
outer loop
|
||||
vertex 59 121 11
|
||||
vertex 59 133.5 2
|
||||
vertex 59 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 59 133.5 2
|
||||
vertex 59 121 11
|
||||
vertex 59 121 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 43 121 11
|
||||
vertex 47 121 8
|
||||
vertex 47 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 -0
|
||||
outer loop
|
||||
vertex 47 121 8
|
||||
vertex 43 121 2
|
||||
vertex 55 121 8
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 43 121 2
|
||||
vertex 47 121 8
|
||||
vertex 43 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 55 121 8
|
||||
vertex 59 121 11
|
||||
vertex 55 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 55 121 8
|
||||
vertex 59 121 2
|
||||
vertex 59 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 59 121 2
|
||||
vertex 55 121 8
|
||||
vertex 43 121 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 57 123 11
|
||||
vertex 55 123 8
|
||||
vertex 55 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 55 123 8
|
||||
vertex 57 123 5
|
||||
vertex 47 123 8
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 -0
|
||||
outer loop
|
||||
vertex 57 123 5
|
||||
vertex 55 123 8
|
||||
vertex 57 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 -0
|
||||
outer loop
|
||||
vertex 47 123 8
|
||||
vertex 45 123 11
|
||||
vertex 47 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 47 123 8
|
||||
vertex 45 123 5
|
||||
vertex 45 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex 45 123 5
|
||||
vertex 47 123 8
|
||||
vertex 57 123 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 -0 0
|
||||
outer loop
|
||||
vertex 47 121 11
|
||||
vertex 47 123 8
|
||||
vertex 47 123 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 47 123 8
|
||||
vertex 47 121 11
|
||||
vertex 47 121 8
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 55 121 8
|
||||
vertex 55 123 11
|
||||
vertex 55 123 8
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 -0 0
|
||||
outer loop
|
||||
vertex 55 123 11
|
||||
vertex 55 121 8
|
||||
vertex 55 121 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 1
|
||||
outer loop
|
||||
vertex 47 123 8
|
||||
vertex 55 121 8
|
||||
vertex 55 123 8
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 55 121 8
|
||||
vertex 47 123 8
|
||||
vertex 47 121 8
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 42 135 0
|
||||
vertex 42 133.5 2
|
||||
vertex 42 135 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex 42 119 0
|
||||
vertex 42 133.5 2
|
||||
vertex 42 135 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 -0 0
|
||||
outer loop
|
||||
vertex 42 133.5 2
|
||||
vertex 42 119 0
|
||||
vertex 42 119 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 -0 0
|
||||
outer loop
|
||||
vertex 42 135 11
|
||||
vertex 42 133.5 2
|
||||
vertex 42 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 60 133.5 2
|
||||
vertex 60 135 11
|
||||
vertex 60 133.5 11
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 60 135 11
|
||||
vertex 60 133.5 2
|
||||
vertex 60 135 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 60 119 0
|
||||
vertex 60 133.5 2
|
||||
vertex 60 119 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 60 133.5 2
|
||||
vertex 60 119 0
|
||||
vertex 60 135 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex 42 119 0
|
||||
vertex 60 119 2
|
||||
vertex 42 119 2
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 -0
|
||||
outer loop
|
||||
vertex 60 119 2
|
||||
vertex 42 119 0
|
||||
vertex 60 119 0
|
||||
endloop
|
||||
endfacet
|
||||
endsolid OpenSCAD_Model
|
File diff suppressed because it is too large
Load diff
|
@ -1,67 +0,0 @@
|
|||
//OpenSCAD PuzzleCut Library Demo - by Rich Olson
|
||||
//http://www.nothinglabs.com
|
||||
//Tested on build 2012.08.22
|
||||
//License: http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
|
||||
module xMaleCut(offset = 0, cut = xCut1)
|
||||
{
|
||||
difference()
|
||||
{
|
||||
child(0);
|
||||
translate([0,offset,0]) makePuzzleStamp(cutLocations = cut);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module xFemaleCut(offset = 0, cut = xCut1)
|
||||
{
|
||||
intersection()
|
||||
{
|
||||
child(0);
|
||||
translate([0,offset,0]) makePuzzleStamp(cutLocations = cut,
|
||||
kerf = kerf); //only set kerf on female side
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module yMaleCut(offset = 0, cut = yCut1)
|
||||
{
|
||||
difference()
|
||||
{
|
||||
child(0);
|
||||
rotate ([0,0,90]) translate([0,offset,0]) makePuzzleStamp(cutLocations = cut);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module yFemaleCut(offset = 0, cut = yCut1)
|
||||
{
|
||||
intersection()
|
||||
{
|
||||
child(0);
|
||||
rotate ([0,0,90]) translate([0,offset,0]) makePuzzleStamp(cutLocations = cut,
|
||||
kerf = kerf); //only set kerf on female side
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module makePuzzleStamp(kerf = 0)
|
||||
{
|
||||
difference()
|
||||
{
|
||||
//make the cube
|
||||
translate ([0,stampSize[0] / 2 - kerf,0])
|
||||
cube (stampSize, center = true);
|
||||
|
||||
//make the cuts
|
||||
for ( i = cutLocations )
|
||||
{
|
||||
translate([i,0,0])
|
||||
cube ([(cutSize / 2) - kerf * 2, cutSize - kerf * 2,stampSize[2]], center = true);
|
||||
translate([i,cutSize / 2,0])
|
||||
cube ([cutSize - kerf * 2,(cutSize / 2) - kerf * 2, stampSize[2]], center = true);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
h = 140;
|
||||
l = 100;
|
||||
w = 70 + 100;
|
||||
|
||||
d2 = 25;
|
||||
|
||||
hd = 10;
|
||||
|
||||
wall = 3;
|
||||
|
||||
$fn=50;
|
||||
|
||||
// Private variables
|
||||
_slot = wall + sep;
|
||||
|
||||
module wall() {
|
||||
difference() {
|
||||
translate([0, l / 2, 0]) rotate([0, 90, 0]) cylinder(r = l / 2, h = wall);
|
||||
translate([-0.5, 0, 0]) rotate([0, 90, 0]) cube(size =[l/2, l, wall+1]);
|
||||
translate([-0.5, l / 2 - 20, l / 2]) rotate([0, 90, 0]) cylinder(r = d2 / 2, h = wall+1);
|
||||
translate([-0.5, l / 2 + 20, l / 2]) rotate([0, 90, 0]) cylinder(r = d2 / 2, h = wall+1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module ellipsoid(diameter, width, height) {
|
||||
scale([1, width/diameter, 1]) linear_extrude(height = height) circle(d = diameter);
|
||||
}
|
||||
|
||||
union() {
|
||||
difference() {
|
||||
cube(size = [w, l, wall]);
|
||||
translate([ 35, 50, 0]) ellipsoid(50,80, wall+1);
|
||||
translate([ 84, 50, 0]) ellipsoid(20,80, wall+1);
|
||||
translate([109, 50, 0]) ellipsoid(20,80, wall+1);
|
||||
translate([134, 50, 0]) ellipsoid(20,80, wall+1);
|
||||
translate([159, 50, 0]) ellipsoid(20,80, wall+1);
|
||||
}
|
||||
translate([ 0, 0, 0]) wall();
|
||||
translate([ 70, 0, 0]) wall();
|
||||
translate([ 95, 0, 0]) wall();
|
||||
translate([120, 0, 0]) wall();
|
||||
translate([145, 0, 0]) wall();
|
||||
translate([170, 0, 0]) wall();
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
|
||||
// helper module for drawing rectangles with rounded borders
|
||||
//
|
||||
// (c) 2013 Felipe C. da S. Sanches <fsanches@metamaquina.com.br>
|
||||
// Lincensed under the terms of the GNU General Public License
|
||||
// version 3 (or later).
|
||||
|
||||
module rounded_square(dim, corners=[10,10,10,10], center=false){
|
||||
w=dim[0];
|
||||
h=dim[1];
|
||||
|
||||
if (center){
|
||||
translate([-w/2, -h/2])
|
||||
rounded_square_(dim, corners=corners);
|
||||
}else{
|
||||
rounded_square_(dim, corners=corners);
|
||||
}
|
||||
}
|
||||
|
||||
module rounded_square_(dim, corners, center=false){
|
||||
w=dim[0];
|
||||
h=dim[1];
|
||||
render(){
|
||||
difference(){
|
||||
square([w,h]);
|
||||
|
||||
if (corners[0])
|
||||
square([corners[0], corners[0]]);
|
||||
|
||||
if (corners[1])
|
||||
translate([w-corners[1],0])
|
||||
square([corners[1], corners[1]]);
|
||||
|
||||
if (corners[2])
|
||||
translate([0,h-corners[2]])
|
||||
square([corners[2], corners[2]]);
|
||||
|
||||
if (corners[3])
|
||||
translate([w-corners[3], h-corners[3]])
|
||||
square([corners[3], corners[3]]);
|
||||
}
|
||||
|
||||
if (corners[0])
|
||||
translate([corners[0], corners[0]])
|
||||
intersection(){
|
||||
circle(r=corners[0]);
|
||||
translate([-corners[0], -corners[0]])
|
||||
square([corners[0], corners[0]]);
|
||||
}
|
||||
|
||||
if (corners[1])
|
||||
translate([w-corners[1], corners[1]])
|
||||
intersection(){
|
||||
circle(r=corners[1]);
|
||||
translate([0, -corners[1]])
|
||||
square([corners[1], corners[1]]);
|
||||
}
|
||||
|
||||
if (corners[2])
|
||||
translate([corners[2], h-corners[2]])
|
||||
intersection(){
|
||||
circle(r=corners[2]);
|
||||
translate([-corners[2], 0])
|
||||
square([corners[2], corners[2]]);
|
||||
}
|
||||
|
||||
if (corners[3])
|
||||
translate([w-corners[3], h-corners[3]])
|
||||
intersection(){
|
||||
circle(r=corners[3]);
|
||||
square([corners[3], corners[3]]);
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
75
tests_pcb/sample_atmega32/keyboard_pcb.kicad_prl
Normal file
75
tests_pcb/sample_atmega32/keyboard_pcb.kicad_prl
Normal file
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 36,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"ratsnest_display_mode": 0,
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": true,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36
|
||||
],
|
||||
"visible_layers": "000feff_80000001",
|
||||
"zone_display_mode": 1
|
||||
},
|
||||
"meta": {
|
||||
"filename": "keyboard_pcb.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
440
tests_pcb/sample_atmega32/keyboard_pcb.kicad_pro
Normal file
440
tests_pcb/sample_atmega32/keyboard_pcb.kicad_pro
Normal file
|
@ -0,0 +1,440 @@
|
|||
{
|
||||
"board": {
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"board_outline_line_width": 0.19999999999999998,
|
||||
"copper_line_width": 0.19999999999999998,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.049999999999999996,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.09999999999999999,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.09999999999999999,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.55,
|
||||
"height": 1.25,
|
||||
"width": 1.016
|
||||
},
|
||||
"silk_line_width": 0.15,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"45_degree_only": false,
|
||||
"min_clearance": 0.508
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"filename": "board_design_settings.json",
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"copper_edge_clearance": "error",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint_type_mismatch": "error",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"invalid_outline": "error",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "error",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zone_has_empty_net": "error",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"allow_blind_buried_vias": false,
|
||||
"allow_microvias": false,
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_copper_edge_clearance": 0.09999999999999999,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_through_hole_diameter": 0.3302,
|
||||
"min_track_width": 0.127,
|
||||
"min_via_annular_width": 0.049999999999999996,
|
||||
"min_via_diameter": 0.6858,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"track_widths": [],
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false,
|
||||
"zones_use_no_outline": true
|
||||
},
|
||||
"layer_presets": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_label_syntax": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "keyboard_pcb.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.1524,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.1524,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.6858,
|
||||
"microvia_drill": 0.3302,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.127,
|
||||
"via_diameter": 0.6858,
|
||||
"via_drill": 0.3302,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.127,
|
||||
"diff_pair_gap": 0.1524,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.1524,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.6858,
|
||||
"microvia_drill": 0.3302,
|
||||
"name": "Vcc",
|
||||
"nets": [
|
||||
"/Vu",
|
||||
"VCC"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.254,
|
||||
"via_diameter": 0.6858,
|
||||
"via_drill": 0.3302,
|
||||
"wire_width": 6.0
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"net_colors": null
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"drawing": {
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.25,
|
||||
"pin_symbol_size": 0.0,
|
||||
"text_offset_ratio": 0.08
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"ngspice": {
|
||||
"fix_include_paths": true,
|
||||
"fix_passive_vals": false,
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"model_mode": 0,
|
||||
"workbook_filename": ""
|
||||
},
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"spice_adjust_passive_values": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"b8ce9f10-1f37-4c77-a850-8b314f1f9b33",
|
||||
""
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
4321
tests_pcb/sample_atmega32/keyboard_pcb.kicad_sch
Normal file
4321
tests_pcb/sample_atmega32/keyboard_pcb.kicad_sch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,33 +0,0 @@
|
|||
update=22/05/2015 07:44:53
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[pcbnew]
|
||||
version=1
|
||||
LastNetListRead=
|
||||
UseCmpFile=1
|
||||
PadDrill=0.600000000000
|
||||
PadDrillOvalY=0.600000000000
|
||||
PadSizeH=1.500000000000
|
||||
PadSizeV=1.500000000000
|
||||
PcbTextSizeV=1.500000000000
|
||||
PcbTextSizeH=1.500000000000
|
||||
PcbTextThickness=0.300000000000
|
||||
ModuleTextSizeV=1.000000000000
|
||||
ModuleTextSizeH=1.000000000000
|
||||
ModuleTextSizeThickness=0.150000000000
|
||||
SolderMaskClearance=0.000000000000
|
||||
SolderMaskMinWidth=0.000000000000
|
||||
DrawSegmentWidth=0.200000000000
|
||||
BoardOutlineThickness=0.100000000000
|
||||
ModuleOutlineThickness=0.150000000000
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue