diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/_lib.scad | 83 | ||||
-rw-r--r-- | src/_settings.scad | 12 | ||||
-rw-r--r-- | src/jig.scad | 4 | ||||
-rw-r--r-- | src/pcb_shape.scad | 8 |
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 |