mirror of
https://github.com/mon/PocketVoltex.git
synced 2026-09-27 09:23:12 +03:00
142 lines
3.7 KiB
OpenSCAD
142 lines
3.7 KiB
OpenSCAD
include <imports/dimlines.scad>
|
|
use <utils.scad>
|
|
|
|
$fn = 128;
|
|
|
|
// 0.2 a little less for tight hold
|
|
encoder = [16+0.2, 16, 6.5 - 0.2];
|
|
encoder_diam = 26;
|
|
side_cut = 0;
|
|
side_cut_height = 1.5;
|
|
side_cut_flat = 0.5;
|
|
hole_cut = 9.3;
|
|
|
|
material_thick = 0.8;
|
|
|
|
wing_rounding = 2;
|
|
hole_size = 2.1;
|
|
hole_clearance = 1.5;
|
|
hole_offset = [2.75+0.3,0,0];
|
|
wing_length = encoder.x*2; // will be trimmed
|
|
|
|
DIM_LINE_WIDTH = 0.17;
|
|
DIM_FONTSCALE = DIM_LINE_WIDTH * 0.4;
|
|
|
|
echo(wing_length);
|
|
|
|
module encoder_model() {
|
|
translate([0,0,5.5])
|
|
rotate([90,0,0])
|
|
import("imports/PEC16.stl");
|
|
|
|
// Shaft
|
|
encoder_shaft = 6;
|
|
encoder_flat = 4.5;
|
|
translate([0,0,6.5])
|
|
linear_extrude(20)
|
|
intersection() {
|
|
circle(d = encoder_shaft);
|
|
translate([0, (encoder_shaft-encoder_flat)/2])
|
|
square([encoder_shaft, encoder_flat], center = true);
|
|
}
|
|
}
|
|
|
|
module xycube(dims) {
|
|
translate([0,0,dims.z/2])
|
|
cube(dims, center=true);
|
|
}
|
|
|
|
module main_bit() {
|
|
intersection() {
|
|
difference() {
|
|
union() {
|
|
xycube(encoder + [material_thick*2, 0, material_thick]);
|
|
|
|
//color("green")
|
|
xycube([
|
|
wing_length*2 + encoder.x + material_thick*2,
|
|
encoder.y,
|
|
material_thick
|
|
]);
|
|
}
|
|
// offsets are for nice f5 render
|
|
translate([0,0,-1])
|
|
xycube(encoder + [0,1,1]);
|
|
|
|
// cutouts
|
|
translate([0,0,-0.1])
|
|
xycube([
|
|
encoder.x+side_cut_flat*2+material_thick*2,
|
|
side_cut,
|
|
side_cut_height-0.1]);
|
|
cylinder(d=hole_cut, h=encoder.z*2);
|
|
|
|
screw_off = [
|
|
hole_offset.x + encoder.x/2 - 0.2,
|
|
hole_offset.y,
|
|
0
|
|
];
|
|
echo("Screw offset from center", screw_off);
|
|
// screws
|
|
reflect([1,0,0])
|
|
reflect([0,1,0])
|
|
translate(screw_off + [0,0,-0.1])
|
|
cylinder(d = hole_size, h = material_thick*2);
|
|
|
|
|
|
reflect([1,0,0])
|
|
reflect([0,1,0])
|
|
translate(screw_off + [0,0,material_thick])
|
|
#cylinder(d = 3.8, h = material_thick*2);
|
|
}
|
|
|
|
cylinder(d = encoder_diam, h = encoder.z*2);
|
|
}
|
|
}
|
|
|
|
module dims() {
|
|
translate([-encoder.x/2,-encoder.y/2,0])
|
|
rotate([90,0,0])
|
|
dimensions(encoder.x);
|
|
|
|
translate([encoder.x/4,-encoder.y/2,encoder.z])
|
|
rotate([90,90,0])
|
|
dimensions(encoder.z);
|
|
|
|
translate([encoder.x/2+material_thick,-encoder.y/2,6])
|
|
rotate([90,0,90])
|
|
dimensions(encoder.y);
|
|
|
|
translate([encoder.x/2+material_thick,-side_cut/2,1.5])
|
|
rotate([90,0,90])
|
|
dimensions(side_cut);
|
|
|
|
translate([encoder.x/2+material_thick,side_cut/2+0.5,side_cut_height])
|
|
rotate([90,90,90])
|
|
dimensions(side_cut_height);
|
|
|
|
translate([-hole_cut/2,0,encoder.z+material_thick])
|
|
dimensions(hole_cut);
|
|
|
|
leader_line(25, encoder_diam/2, 5, 5, text = str(encoder_diam), do_circle=true);
|
|
|
|
screw_off = [
|
|
hole_offset.x + encoder.x/2 + material_thick,
|
|
hole_offset.y,
|
|
0
|
|
];
|
|
|
|
translate(screw_off + [0,0,material_thick])
|
|
leader_line(25, hole_size/2, 5, 4, text = str(hole_size), do_circle=true);
|
|
|
|
translate([encoder.x/2 + material_thick,2,material_thick+encoder.z+0.1])
|
|
dimensions(side_cut_flat, loc = DIM_OUTSIDE);
|
|
}
|
|
|
|
//color("gray")
|
|
//encoder_model();
|
|
|
|
//color("black")
|
|
//dims();
|
|
|
|
main_bit(); |