summaryrefslogtreecommitdiff
path: root/body
diff options
context:
space:
mode:
Diffstat (limited to 'body')
-rw-r--r--body/body.scad47
-rw-r--r--body/holes.scad75
-rw-r--r--body/noctua_nf_a4x20.scad27
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