diff options
Diffstat (limited to 'body/body.scad')
| -rw-r--r-- | body/body.scad | 125 |
1 files changed, 123 insertions, 2 deletions
diff --git a/body/body.scad b/body/body.scad index 506422b..2863d99 100644 --- a/body/body.scad +++ b/body/body.scad @@ -2,6 +2,127 @@ include <design.scad> include <helpers.scad> include <m12_lense_holder.scad> include <m12_lense_holder_adapter.scad> +include <noctua_nf_a4x20.scad> +include <radxa_zero_3e.scad> +include <veye_imx287.scad> -m12_lense_holder(); -//m12_lense_holder_wo_holes();
\ No newline at end of file +// cam + lense +translate([0, 0, $lenseYPosMm]) +rotate([-$opticalAxisAngleDegrees, 0, 0]) +{ + m12_lense_holder(); + %m12_lense(); + + translate([0, -$lenseSensorDistanceMm, 0]) + rotate([$sensorLenseAngleDegrees, 0, 0]) + veye_imx287_natural(); +} + +// laser +translate([0, -$laserZOffsetMm, 0]) +{ + %laser_body(); + laser_holder(); +} + +// radxa +translate([0, 0, 20]) +translate([0, 10, radxa_zero_3e_pcb_h - 5]) +rotate([90, 0, 0]) +//radxa_zero_3e_with_protoboard(); +radxa_zero_3e_with_protoboard_and_connectors(); + +// noctua fan +//translate([0, -$laserBodyLengthMm, $lenseYPosMm + 20]) +translate([0, -$scannerBodyFrontWallOffsetMm, 40]) +*noctua_nf_a4x20(); + +// chinese fan +translate([0, -$scannerBodyFrontWallOffsetMm, 40]) +%ld3007ms(); + +// main frame +module scanner_main_frame() +{ + lhs = laser_holder_size(); + wt = $scannerBodyWallThicknessMm; + wzo = $scannerBodyFrontWallOffsetMm; + + // in scanner coords + // inner height is a bit random + // TODO: choose constant size to use one frame for + // many similar ranges + main_frame_height_y = 150; + main_frame_width_x = 34; + main_frame_depth_z = 65; + + // inner height, width, depth and radius + ih = main_frame_height_y; + iw = main_frame_width_x; + id = main_frame_depth_z; + ir = wt; + + // front wall + translate([-iw / 2, -wzo, -lhs[2] / 2]) + cube([iw, wt, ih]); + + // back wall + translate([0, -wzo - id, 0]) + // initial positioning + translate([-iw / 2, -wt, -lhs[2] / 2]) + cube([iw, wt, ih]); + + // bottom wall + // apply body sizes + translate([0, -wzo, -lhs[2] / 2]) + // initial positioning + translate([0, -id / 2, -wt / 2]) + cube([iw, id, wt], center = true); + + // top wall + // apply body sizes + translate([0, -wzo, -lhs[2] / 2 + ih]) + // initial positioning + translate([0, -id / 2, wt / 2]) + cube([iw, id, wt], center = true); + + // now try to cut body with rounded corners to simplify + // cnc manufacturing + + difference() + { + hull() + { + // outer cylinders + union() + { + for (yd = [0, -id], zd = [0, ih]) + { + translate([0, -wzo + yd, -lhs[2] / 2 + zd]) + rotate([0, 90, 0]) + cylinder($fn = dToFn(ir * 2), r = ir, h = iw, center = true); + } + } + } + // inner cylinders + hull() + { + union() + { + for (yd = [0 - ir, -id + ir], zd = [0 + ir, ih - ir]) + { + translate([0, -wzo + yd, -lhs[2] / 2 + zd]) + rotate([0, 90, 0]) + // scale by x a bit to fully cut + cylinder($fn = dToFn(ir * 2), r = ir, h = iw * 1.1, center = true); + } + } + } + } + + // and now add some stands for screwing left/right covers + // TODO: simplify inner cut cube after implementing this: + // rounded corners won't be needed anymore +} + +%scanner_main_frame();
\ No newline at end of file |
