+++ /dev/null
-eps = 0.01;
-infty = 100;
-
-wall = 1.5;
-
-cyl_r = 8 + 0.5;
-cyl_x = 26.6 / 2;
-cyl_h = 8; // above pcb, max 13.8;
-
-pcb_x = 45.6 + 0.7;
-pcb_y = 20.2 + 0.5;
-xtal_h = 5;
-pcb_supp = 3; // side support thickness
-pcb_h = 8; // 1.2 + space for connector etc
-pcb_thick = 2.5;
-
-cyl_base = pcb_x/2 + wall - cyl_x;
-
-conn_x = 10 + 0.5;
-conn_y = 15;
-
-cable_w = 7;
-cable_h = 4;
-
-screw_head = 7.5;
-screw_d = 4;
-screw_base = 2*wall;
-
-clip_r = 1;
-clip_h = 8;
-
-module sensor() {
- hull() {
- // space above pcb
- translate([-pcb_x/2, -pcb_y/2, -eps])
- cube([pcb_x, pcb_y, pcb_h-pcb_thick+eps]);
- // connector
- translate([-conn_x/2, pcb_y/2-eps, -eps])
- cube([conn_x, conn_y+eps, pcb_h-pcb_thick+eps]);
- }
- // cable protrusion
- translate([-cable_w/2, pcb_y/2+conn_y-eps, -eps])
- cube([cable_w, 2*wall + eps, cable_h]);
-
- // cylinders
- for (x = [-1, 1]) translate([cyl_x*x, 0, pcb_h - eps])
- cylinder(r = cyl_r, h = cyl_h + 2+wall + eps);
- // pcb
- translate([-pcb_x/2, -pcb_y/2, pcb_h-pcb_thick-eps])
- cube([pcb_x, pcb_y, pcb_thick+eps]);
- // space below the pcb (xtal, etc)
- translate([-pcb_x/2+pcb_supp, -pcb_y/2, pcb_h-pcb_thick - eps])
- cube([pcb_x - 2*pcb_supp, pcb_y, xtal_h+pcb_thick+eps]);
-};
-module case_body() {
- hull() {
- // pcb
- translate([-pcb_x/2-wall, -pcb_y/2-wall, 0])
- cube([pcb_x+2*wall, pcb_y+2*wall, pcb_h+wall]);
-
- // cylinders
- for (x = [-1, 1]) translate([cyl_x*x, 0, pcb_h + cyl_h])
- cylinder(r = cyl_base, h = wall);
-
- translate([0, 8, pcb_h + cyl_h])
- cylinder(r = cyl_base, h = wall);
-
- // connector
- translate([-conn_x/2-wall, pcb_y/2-wall, 0])
- cube([conn_x+2*wall, conn_y+2*wall, pcb_h-pcb_thick+wall]);
- // screw mounts
- for (x = [1, -1]) scale([x, 1, 1])
- translate([pcb_x/2+wall, -screw_head/2-wall, 0])
- cube([screw_head, screw_head+2*wall, screw_base]);
- }
-}
-
-module case() {
- difference() {
- case_body();
- difference() {
- sensor();
- // pcb clip
- translate([-clip_h/2, -pcb_y/2, pcb_h-pcb_thick-clip_r/2])
- rotate([0, 90, 0])
- cylinder(r=clip_r, h = clip_h, $fn = 4);
- }
- // mount holes
- for (x = [-1, 1]) scale([x, 1, 1]) {
- translate([pcb_x/2+wall, -screw_head/2, screw_base])
- cube([screw_head+eps, screw_head, infty]);
- // screw hole
- translate([pcb_x/2+wall+screw_head/2-screw_d/2, -screw_d/2, -eps])
- cube([screw_d, screw_d, infty]);
- }
- // text
- translate([0, 3.5, pcb_h + cyl_h + eps])
- rotate([0, 0, 90])
- linear_extrude(height=wall)
- text("CVT FI", font="DejaVu Sans:style=Bold", size=5,
- halign="center", valign="center");
- }
-}
-
-rotate([180, 0, 0]) // rotate it for easier print
- case();
+++ /dev/null
-eps = 0.01;
-infty = 100;
-
-module chamber() {
- hull() {
- for (i = [-1, 1]) {
- translate([-3, 0, 0.5])
- scale([1.25, 1, 1])
- cylinder(r1 = 8, r2 = 9, h = 4, $fn = 3);
- rotate([0, 35*i, 0]) {
- translate([0, 0, 7])
- rotate([0, 0, 45])
- cylinder(r = 10/2, h = 4, $fn = 4);
- }
- }
- }
- for (i = [-1, 1]) {
- rotate([0, 35*i, 0])
- translate([0, 0, 10])
- cylinder(r = 6.0/2, h = 5, $fn = 6);
- intersection() {
- rotate([0, 35*i, 0])
- translate([0, 0, 15-eps])
- cylinder(r = 8/2, h = 10, $fn = 6);
- translate([-30/2, -15/2, eps])
- cube([30, 15, 15]);
- }
- difference() {
- translate([-32/2, -16/2, 15])
- cube([32, 16, 20]);
-
- translate([screw_x-12/2, screw_y-12/2,0])
- cube([12, 12, infty]);
- }
- }
-
-}
-
-screw_x = 5;
-screw_y = 11;
-
-module body() {
- hull() {
- // top cube
- translate([-36/2, -20/2, 15])
- cube([36, 20, 5]);
- // bottom triangle
- translate([-3, 0, 0])
- scale([1.5, 1, 1])
- cylinder(r = 11, h = eps, $fn = 3);
- // screw base
- translate([screw_x-12/2, screw_y-12/2,17])
- cube([12, 12, 3]);
- }
-}
-
-module light() {
- difference() {
- body();
- chamber();
- // screw head hole
- translate([-4+screw_x, screw_y-8/2, 17-infty])
- cube([8, infty, infty]);
- // screw hole
- translate([screw_x-4, screw_y-4/2, -eps])
- cube([8, 4, infty]);
-
- // cable hole
- translate([-9-eps, 0, 17])
- cube([8, infty, infty]);
-
- // debug
- // translate([-infty/2, -infty, -infty/2]) cube(infty);
- }
-}
-
-light();