Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //$fn = 50;
- $fn = 100;
- //$fn = 200;
- //Tolerances?
- headset_OD_T = 0.1;
- camera_gap_T = 0.8;
- lens_holder_T = 0.1;
- THICKNESS = 2;
- //Diameters of lens and headset objects
- headset_OD = 47.2 + headset_OD_T;
- camera_gapW = 21.2 + camera_gap_T;
- camera_gapH = 21;
- lens_OD = 37.8 + lens_holder_T;
- lens_band_thickness = 1.6 + lens_holder_T;
- //Set variables for thickness.
- shaft_height = 10;
- lens_tab_OD = 1;
- lens_cup_height = lens_band_thickness + lens_tab_OD + lens_holder_T;
- reflector_height = 4 + THICKNESS;
- reflector_ID = lens_OD - lens_band_thickness - lens_holder_T;
- lens_spacer = 1;
- lens_holder_gap_H = 1 + lens_cup_height;
- lens_holder_gap_W = 10;
- difference(){
- EyePiece();
- lensHolderGaps();
- }
- module EyePiece(){
- Shaft();
- Reflector();
- }
- module Shaft(){
- difference(){
- cylinder_outer(shaft_height, (headset_OD + THICKNESS)/2);
- cylinder_outer(shaft_height, headset_OD/2);
- translate([0, -headset_OD/2, 0]){
- cube([camera_gapW, camera_gapH, 50], center = true);
- }
- }
- }
- module Reflector(){
- translate([0, 0, shaft_height - (THICKNESS / 2)]){
- translate([0, 0, reflector_height]){
- lensCup();
- }
- translate([0, 0, THICKNESS / 2]){
- difference(){
- difference(){
- cone_outer(reflector_height, (headset_OD + THICKNESS)/2, (lens_OD + THICKNESS)/2);
- translate([0, 0, -(THICKNESS + reflector_height)]){
- cone_outer(reflector_height * 2, (1.25*(headset_OD + THICKNESS) + THICKNESS)/2, reflector_ID/2);
- }
- }
- cylinder_outer(10, reflector_ID/2);
- }
- }
- }
- }
- module lensCup(){
- difference(){
- cylinder_outer(lens_spacer, (lens_OD + THICKNESS)/2);
- cylinder_outer(lens_spacer, reflector_ID/2);
- }
- difference(){
- cylinder_outer(lens_cup_height, (lens_OD + THICKNESS)/2);
- cylinder_outer(lens_cup_height, lens_OD/2);
- }
- translate([0, 0, lens_cup_height - lens_tab_OD/2]){
- lensHolderTabs();
- }
- }
- module lensHolder(){
- translate([lens_tab_OD/2, 0, 0]){
- difference(){
- sphere(d = lens_tab_OD);
- translate([lens_tab_OD/2, 0, 0]){
- cube([lens_tab_OD, lens_tab_OD, lens_tab_OD], center = true);
- }
- }
- }
- }
- module lensHolderGaps(){
- translate([0, 0, shaft_height + (reflector_height)]){
- rotate(a = 0, v=[0, 0, 1]){
- translate([0, 0, lens_holder_gap_H/2])cubeOnAxis(headset_OD, lens_holder_gap_W, lens_holder_gap_H);
- rotate(a = 90, v = [0, 1, 0])scale([0.25, 1])cylinder(h=headset_OD, d1 = lens_holder_gap_W, d2 = lens_holder_gap_W);
- }
- rotate(a = -180, v=[0, 0, 1]){
- translate([0, 0, lens_holder_gap_H/2])cubeOnAxis(headset_OD, lens_holder_gap_W, lens_holder_gap_H);
- rotate(a = 90, v = [0, 1, 0])scale([0.25, 1])cylinder(h=headset_OD, d1 = lens_holder_gap_W, d2 = lens_holder_gap_W);
- }
- }
- }
- module cubeOnAxis(length, width, height){
- translate([length/2, 0, 0]){
- cube([length, width, height], center = true);
- }
- }
- module lensHolderTabs(){
- rotate(a = 30, v=[0, 0, 1]){
- translate([lens_OD/2 - lens_tab_OD/2, 0, 0]){
- lensHolder();
- }
- }
- rotate(a = 90, v=[0, 0, 1]){
- translate([lens_OD/2 - lens_tab_OD/2, 0, 0]){
- lensHolder();
- }
- }
- rotate(a = 150, v=[0, 0, 1]){
- translate([lens_OD/2 - lens_tab_OD/2, 0, 0]){
- lensHolder();
- }
- }
- rotate(a = -150, v=[0, 0, 1]){
- translate([lens_OD/2 - lens_tab_OD/2, 0, 0]){
- lensHolder();
- }
- }
- rotate(a = -90, v=[0, 0, 1]){
- translate([lens_OD/2 - lens_tab_OD/2, 0, 0]){
- lensHolder();
- }
- }
- rotate(a = -30, v=[0, 0, 1]){
- translate([lens_OD/2 - lens_tab_OD/2, 0, 0]){
- lensHolder();
- }
- }
- }
- module cylinder_outer(height,radius){
- fudge = 1/cos(180/$fn);
- cylinder(h=height,r=radius*fudge);
- }
- module cone_outer(height,radius1,radius2){
- fudge = 1/cos(180/$fn);
- cylinder(h=height,r1=radius1*fudge,r2=radius2*fudge);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement