summaryrefslogtreecommitdiff
path: root/body/m12_lense_holder.scad
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2026-01-06 16:18:12 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2026-01-06 16:18:12 +0100
commite69aa61989896a6dfd65acb7753377eb69630203 (patch)
treeea0f1dc6dba37cd42ca9a27ae902e88cd1828ecd /body/m12_lense_holder.scad
add openscad prototype for scanner body. draw m12 lense holder
Diffstat (limited to 'body/m12_lense_holder.scad')
-rw-r--r--body/m12_lense_holder.scad91
1 files changed, 91 insertions, 0 deletions
diff --git a/body/m12_lense_holder.scad b/body/m12_lense_holder.scad
new file mode 100644
index 0000000..63df125
--- /dev/null
+++ b/body/m12_lense_holder.scad
@@ -0,0 +1,91 @@
+// calculate cylinder/circle "Fragments Number" based on diameter
+function diameterToFn(d) = (d * PI * 3);
+
+// m12 cam holder size
+$m12_lense_holder_size = 13;
+// bottom part height
+$m12_lense_holder_bottom_h = 3.5;
+// top part height
+$m12_lense_holder_top_h = 3.5;
+// distance between holes centers
+$m12_lense_holder_d_btw_holes = 18;
+// screw holes outer diameter
+$m12_lense_holder_sh_outer_d = 4;
+// screw holes inner diameter
+$m12_lense_holder_sh_inner_d = 1.5;
+// left hole offset
+$m12_lense_holder_l_hole_offset = [-$m12_lense_holder_d_btw_holes / 2, 0, 0];
+// right hole offset
+$m12_lense_holder_r_hole_offset = [$m12_lense_holder_d_btw_holes / 2, 0, 0];
+// lense hole diameter
+$m12_lense_holder_lense_hole_diameter = 12;
+
+// m12 lense holder without holes
+module m12_lense_holder_wo_holes()
+{
+ $S = $m12_lense_holder_size;
+ $cube_size = [$S, $S, $m12_lense_holder_bottom_h];
+
+ // bottom cube
+ translate([0, 0, $cube_size[2] / 2])
+ cube($cube_size, center = true);
+
+ // top cylinder
+ translate([0, 0, $cube_size[2]])
+ cylinder($fn=diameterToFn($S), h = $m12_lense_holder_top_h, d = $S);
+
+ // screw holes, outer body to cut from
+ hull()
+ {
+ translate($m12_lense_holder_l_hole_offset)
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_sh_outer_d),
+ h = $m12_lense_holder_bottom_h,
+ d = $m12_lense_holder_sh_outer_d);
+
+ translate($m12_lense_holder_r_hole_offset)
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_sh_outer_d),
+ h = $m12_lense_holder_bottom_h,
+ d = $m12_lense_holder_sh_outer_d);
+ }
+}
+
+module m12_lense_holder_holes()
+{
+ // left screw hole
+ translate($m12_lense_holder_l_hole_offset)
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_sh_inner_d),
+ h = $m12_lense_holder_bottom_h * 3,
+ d = $m12_lense_holder_sh_inner_d,
+ center = true);
+
+ // right screw hole
+ translate($m12_lense_holder_r_hole_offset)
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_sh_inner_d),
+ h = $m12_lense_holder_bottom_h * 3,
+ d = $m12_lense_holder_sh_inner_d,
+ center = true);
+
+ // lense hole
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_lense_hole_diameter),
+ d = $m12_lense_holder_lense_hole_diameter,
+ h = ($m12_lense_holder_bottom_h + $m12_lense_holder_top_h) * 3,
+ center = true);
+}
+
+module m12_lense_holder()
+{
+ difference()
+ {
+
+ m12_lense_holder_wo_holes();
+ m12_lense_holder_holes();
+ }
+}
+
+//m12_lense_holder();
+//m12_lense_holder_wo_holes(); \ No newline at end of file