use include // 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 // th - height of top round part of m12 lense holder //module m12_lense_holder_wo_holes(th = $m12_lense_holder_top_h) module m12_lense_holder_wo_holes( th = $m12_lense_holder_top_h, bh = $m12_lense_holder_bottom_h) { $S = $m12_lense_holder_size; $cube_size = [$S, $S, bh]; rotate([-90, 0, 0]) { // 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 = th, 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 = bh, d = $m12_lense_holder_sh_outer_d); translate($m12_lense_holder_r_hole_offset) cylinder( $fn = diameterToFn($m12_lense_holder_sh_outer_d), h = bh, d = $m12_lense_holder_sh_outer_d); } } } module m12_lense_holder_base() { //m12_lense_holder_wo_holes(th = 0.001, bh = 0.001); $S = $m12_lense_holder_size; //$cube_size = [$S, $S, 1]; $cube_size = [veye_imx287_pcb_w, $S, 1]; rotate([-90, 0, 0]) { // bottom cube translate([0, 0, -$cube_size[2] / 2]) cube($cube_size, center = true); } } module m12_lense_holder_top() { $S = $m12_lense_holder_size; rotate([-90, 0, 0]) { // bottom cube $size = [veye_imx287_pcb_w, 1, 1]; translate([0, -$S / 2 - 1 / 2, -1 / 2]) cube($size, center = true); } } module m12_lense_holder_holes() { rotate([-90, 0, 0]) { // 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(); *m12_lense_holder_base(); *m12_lense_holder_top();