diff options
Diffstat (limited to 'body')
| -rw-r--r-- | body/body.scad | 47 | ||||
| -rw-r--r-- | body/holes.scad | 75 | ||||
| -rw-r--r-- | body/noctua_nf_a4x20.scad | 27 |
3 files changed, 142 insertions, 7 deletions
diff --git a/body/body.scad b/body/body.scad index a3ec753..127d005 100644 --- a/body/body.scad +++ b/body/body.scad @@ -23,6 +23,9 @@ $wawt = -$scannerBodyFrontWallOffsetMm + $scannerBodyWallThicknessMm; wt = $scannerBodyWallThicknessMm; wzo = $scannerBodyFrontWallOffsetMm; +// scanner coords +fan_y_offset = 80; + module cam_and_lense_new() { lhs = laser_holder_size(); @@ -562,8 +565,8 @@ module scanner_main_frame() // chinese fan //translate([0, -$scannerBodyFrontWallOffsetMm, 40]) - translate([0, ld3007ms_t - wzo - id, 80]) - *ld3007ms(); + translate([0, -wzo - id, fan_y_offset]) + ld3007ms(); } module m12_connectors() @@ -590,10 +593,17 @@ module laser_with_holder() translate([0, -$laserZOffsetMm, 0]) { %laser_body(); - %laser_holder(); + laser_holder(); } } +module body_fan_holes() +{ + id = main_frame_depth_z; + translate([0, -wzo - id, fan_y_offset]) + ld3007ms_holes(); +} + module radxa() { translate([0, 0, 20]) @@ -627,12 +637,34 @@ module other() // visual block +// visualize camera +union() +{ + translate([0, 0, $lenseYPosMm]) + %rotate([-$opticalAxisAngleDegrees, 0, 0]) + { + //color("orange", 0.6) + m12_lense_holder(); + %m12_lense(); + //color("red", 0.3) + //%m12_lense_circle(); + + translate([0, -$lenseSensorDistanceMm, 0]) + rotate([$sensorLenseAngleDegrees, 0, 0]) + { + //color("yellow", 0.3) + veye_imx287_natural(); + } + } +} + union() { - *other(); + other(); *cam_lense_holder_screw_holes(); + color("green", 0.1) difference() { scanner_main_frame(); @@ -641,6 +673,7 @@ union() laser_holder_screw_holes(); m12_connectors(); cam_lense_holder_screw_holes(); + body_fan_holes(); } } @@ -664,4 +697,10 @@ union() laser_glass_hole(); laser_holder_screw_holes(); m12_connectors(); +} + +*translate([0, -$laserZOffsetMm, 0]) +{ + %laser_body(); + laser_holder(); }
\ No newline at end of file diff --git a/body/holes.scad b/body/holes.scad index 83d3777..a764dc7 100644 --- a/body/holes.scad +++ b/body/holes.scad @@ -19,6 +19,8 @@ m2_head_diameter = 3.75; m2_head_height = 1.9; m2 = 2; +padding_around_insert = 2; + // gw - glass width // gh - glass height // gt - glass thickness @@ -144,13 +146,84 @@ module screw_hole(m, id, il, hd, hh, hs, wt = $scannerBodyWallThicknessMm) } } +function padded_hole_d(hd = 4) = + hd + padding_around_insert * 2; + +// h - height +// hd - hole diameter +// TODO: support usual holes, not only hot inserts +module hole_holder(h, hd = 4) +{ + d = padded_hole_d(hd); + cube_size = [d * 2, d / 2, h]; + + rotate([90, 0, 90]) + translate([0, d / 2, -h / 2]) + difference() + { + union() + { + cylinder($fn = dToFn(d), d = d, h = h); + + translate([0, -cube_size[1] / 2, h / 2]) + cube(cube_size, center = true); + } + + union() + { + translate([-d, 0, -$tiny_padding]) + cylinder($fn = dToFn(d), d = d, h = h + $tiny_padding * 2); + translate([d, 0, -$tiny_padding]) + cylinder($fn = dToFn(d), d = d, h = h + $tiny_padding * 2); + } + } +} + +// h - height +// hd - hole (insert) diameter +// hs - hole side, see values above for details +module hole_holder_hot_inserts(h, hd = 4, hs) +{ + d = hd + padding_around_insert * 2; + + rotate(hs) + difference() + { + hole_holder(h = 40, hd = 4); + + // holes for hot inserts + union() + { + translate([-h / 2 - $tiny_padding, 0, d / 2]) + screw_hole( + m = m2, + id = hd, + il = hole_insert_height, + hd = m2_head_diameter, + hh = m2_head_height, + hs = hole_side_left); + + translate([h / 2 + $tiny_padding, 0, d / 2]) + screw_hole( + m = m2, + id = hd, + il = hole_insert_height, + hd = m2_head_diameter, + hh = m2_head_height, + hs = hole_side_right); + } + } +} + +hole_holder_hot_inserts(h = 40, hd = 4, hs = hole_side_top); + *screw_hole( m = m2, id = 4, il = hole_insert_height * 2, hd = m2_head_diameter, hh = m2_head_height, - hs = hole_side_front); + hs = hole_side_bottom); //front_glass_hole(gw = 26.6, gh = 19.6, gt = 2, gcr = 1); diff --git a/body/noctua_nf_a4x20.scad b/body/noctua_nf_a4x20.scad index 77a26df..f6a1945 100644 --- a/body/noctua_nf_a4x20.scad +++ b/body/noctua_nf_a4x20.scad @@ -1,3 +1,5 @@ +include <holes.scad> + noctua_nf_a4x20_h = 40; noctua_nf_a4x20_w = 40; noctua_nf_a4x20_t = 20; @@ -5,6 +7,7 @@ noctua_nf_a4x20_t = 20; ld3007ms_w = 30; ld3007ms_h = 30; ld3007ms_t = 8; +ld3007ms_distance_between_holes = 23.8; module noctua_nf_a4x20() { @@ -21,9 +24,29 @@ module ld3007ms() h = ld3007ms_h; t = ld3007ms_t; - translate([0, -t / 2, 0]) + translate([0, t / 2, 0]) rotate([90, 0, 0]) cube([w, h, t], center = true); } -//ld3007ms();
\ No newline at end of file +module ld3007ms_holes() +{ + dbh = ld3007ms_distance_between_holes; + // half distance between holes + hdbh = dbh / 2; + + for (xo = [hdbh, -hdbh], zo = [hdbh, -hdbh]) + { + translate([xo, 0, zo]) + screw_hole( + m = m2, + id = 4, + il = hole_insert_height * 2, + hd = m2_head_diameter, + hh = m2_head_height, + hs = hole_side_back); + } +} + +*ld3007ms(); +*ld3007ms_holes();
\ No newline at end of file |
