summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/_lib.scad83
-rw-r--r--src/_settings.scad12
-rw-r--r--src/jig.scad4
-rw-r--r--src/pcb_shape.scad8
4 files changed, 107 insertions, 0 deletions
diff --git a/src/_lib.scad b/src/_lib.scad
new file mode 100644
index 0000000..2654ed7
--- /dev/null
+++ b/src/_lib.scad
@@ -0,0 +1,83 @@
+
+module hole(l, step, w){
+ translate([0, 0, -eps]) {
+ union(){
+ linear_extrude(l+eps*2)
+ children();
+ minkowski(){
+ linear_extrude(eps) children();
+ cylinder(step, w, 0);
+ }
+ }
+ marker_r = 4;
+ marker_w = 1;
+ linear_extrude(1)
+ difference() {
+ offset(marker_r+0.5*marker_w) children();
+ offset(marker_r-0.5*marker_w) children();
+ }
+ }
+}
+
+module top_chamfer(height, chamfer){
+ difference(){
+ linear_extrude(height) children();
+ translate([0,0,height+eps])
+ union() {
+ for(w=[0:.2:chamfer]){
+ mirror([0,0,1])
+ linear_extrude(chamfer-w)
+ difference(){
+ offset(1) children();
+ offset(-w) children();
+ }
+ }
+ }
+ }
+}
+
+module base_shape(wall){
+ offset(grip_rounding) offset(-grip_rounding)difference(){
+ hull() offset(wall)
+ children();
+ import(input_file, layer="Grip Slots");
+ }
+}
+
+module holder(height, depth, wall, tolerance, chamfer){
+ difference() {
+ top_chamfer(height, chamfer/2)
+ //linear_extrude(height)
+ base_shape(wall) children();
+ translate([0,0,height-depth])
+ linear_extrude(depth+eps) offset(tolerance)
+ children();
+ translate([0,0,height-chamfer+eps]) minkowski(){
+ linear_extrude(eps) children();
+ cylinder(chamfer, 0, chamfer);
+ }
+ }
+}
+
+module mounting_hole(height, inset_depth, inset_extra){
+ union(){
+ translate([0,0,-eps])
+ linear_extrude(height+2*eps)
+ children();
+ translate([0,0,height-inset_depth])
+ linear_extrude(inset_depth+eps)
+ offset(inset_extra)
+ children();
+ }
+}
+
+module jig(height, depth, wall, tolerance, chamfer) {
+ difference(){
+ holder(height, depth, wall, tolerance, chamfer)
+ import(input_file, layer="Outline");
+ hole(height-depth, 2, 1)
+ import(input_file, layer="Test Points");
+ mounting_hole(height, 3, 2)
+ import(input_file, layer="Mounting Holes");
+ }
+}
diff --git a/src/_settings.scad b/src/_settings.scad
new file mode 100644
index 0000000..f51736a
--- /dev/null
+++ b/src/_settings.scad
@@ -0,0 +1,12 @@
+
+height=15;
+depth=6;
+wall=10;
+pcb_extra=7;
+tolerance=0.2;
+chamfer=3;
+grip_rounding = 1.5;
+
+input_file = "input.preprocessed.dxf";
+$fs=0.01;
+eps=0.1;
diff --git a/src/jig.scad b/src/jig.scad
new file mode 100644
index 0000000..67580bf
--- /dev/null
+++ b/src/jig.scad
@@ -0,0 +1,4 @@
+include <_settings.scad>
+include <_lib.scad>
+
+jig(height, depth, wall, tolerance, chamfer);
diff --git a/src/pcb_shape.scad b/src/pcb_shape.scad
new file mode 100644
index 0000000..a3e1db9
--- /dev/null
+++ b/src/pcb_shape.scad
@@ -0,0 +1,8 @@
+include <_settings.scad>
+include <_lib.scad>
+
+difference(){
+ base_shape(wall+pcb_extra)
+ import(input_file, layer="Outline");
+ import(input_file, layer="Mounting Holes");
+} \ No newline at end of file