diff --git a/openscad/foreign/sc808/io-shield-blank.png b/openscad/foreign/sc808/io-shield-blank.png new file mode 100644 index 0000000..ab9e864 Binary files /dev/null and b/openscad/foreign/sc808/io-shield-blank.png differ diff --git a/openscad/foreign/sc808/io-shield-blank.stl b/openscad/foreign/sc808/io-shield-blank.stl new file mode 100644 index 0000000..156b401 Binary files /dev/null and b/openscad/foreign/sc808/io-shield-blank.stl differ diff --git a/openscad/foreign/sc808/io-shield-ports.png b/openscad/foreign/sc808/io-shield-ports.png new file mode 100644 index 0000000..ada7a1c Binary files /dev/null and b/openscad/foreign/sc808/io-shield-ports.png differ diff --git a/openscad/foreign/sc808/io-shield-ports.stl b/openscad/foreign/sc808/io-shield-ports.stl new file mode 100644 index 0000000..c0d1114 Binary files /dev/null and b/openscad/foreign/sc808/io-shield-ports.stl differ diff --git a/openscad/foreign/sc808/io-shield.scad b/openscad/foreign/sc808/io-shield.scad index 4d0c5fc..cafa041 100644 --- a/openscad/foreign/sc808/io-shield.scad +++ b/openscad/foreign/sc808/io-shield.scad @@ -14,7 +14,7 @@ shield_tab_emboss_d=1; // that lowered lip, that the central and outer tabs moun shield_tab_emboss_l=22; // length of the above described cutouts shield_tab_emboss_l2=shield_tab_emboss_l/2; // length of the side cutouts -shield_holes=1; // draw holes if >0 +shield_holes=1; // draw holes if >0. the perimeter-holes are manually placed, and should be disabled, if many vars get altered! (and then drilled manually) shield_hole_d1=2.75; shield_hole_d2=shield_hole_d1+0.5; // slightly conical holes for better inserting // for separating the shield into two halves @@ -28,10 +28,84 @@ m_grill_h=shield_h*0.75-m_grill_w-2*mt; m_grill_skew=25; m_grill_offset=5; m_grill_spacing=m_grill_w; - +//port ethernet: +p_eth_hole_dist=27.5; +p_eth_hole_dia=4.5; +p_eth_slack=0.5; +p_eth_base_x=22+p_eth_slack; +p_eth_base_y=21.75+p_eth_slack; +p_eth_cut_x=16+p_eth_slack; +p_eth_cut_y=13.15+p_eth_slack; +p_eth_cut_z=mt; +p_eth_cut_x_offset=0; +p_eth_cut_y_offset=1.5; +//port usb: +p_usb_hole_dist=30; +p_usb_hole_dia=4.5; +p_usb_slack=0.5; +p_usb_base_x=23+p_eth_slack; +p_usb_base_y=16.5+p_eth_slack; +p_usb_cut_x=16+p_eth_slack; +p_usb_cut_y=15+p_eth_slack; +p_usb_cut_z=mt; +p_usb_cut_x_offset=0; +p_usb_cut_y_offset=0; +//port vga: +p_vga_hole_dist=25; +p_vga_hole_dia=4.5; +p_vga_slack=0.5; +p_vga_base_x=34+p_eth_slack; +p_vga_base_y=15.25+p_eth_slack; +p_vga_cut_x=15.75+p_eth_slack; +p_vga_cut_y=8+p_eth_slack; +p_vga_cut_z=mt; +p_vga_cut_x_offset=0; +p_vga_cut_y_offset=0; +//port slot: +p_slot_hole_dist=30; +p_slot_hole_dia=mt*3; // ##################################### // MODEL: // mounting holes around the shield perimeter +module port_ethernet(){ + cube([p_eth_base_x,p_eth_base_y,mt],center=true); + translate([p_eth_cut_x_offset,p_eth_cut_y_offset,p_eth_cut_z+mt/2])cube([p_eth_cut_x,p_eth_cut_y,p_eth_cut_z+mt],center=true); + hull(){ + translate([-p_eth_hole_dist/2,0,0])cylinder(d=p_eth_hole_dia+mt,h=mt,center=true); + translate([p_eth_hole_dist/2,0,0])cylinder(d=p_eth_hole_dia+mt,h=mt,center=true); + } + translate([-p_eth_hole_dist/2,0,mt*1.5])cylinder(d=p_eth_hole_dia,h=mt*2,center=true); + translate([p_eth_hole_dist/2,0,mt*1.5])cylinder(d=p_eth_hole_dia,h=mt*2,center=true); +} + +module port_usb(){ + cube([p_usb_base_x,p_usb_base_y,mt],center=true); + translate([p_usb_cut_x_offset,p_usb_cut_y_offset,p_usb_cut_z+mt/2])cube([p_usb_cut_x,p_usb_cut_y,p_usb_cut_z+mt],center=true); + hull(){ + translate([-p_usb_hole_dist/2,0,0])cylinder(d=p_usb_hole_dia+mt,h=mt,center=true); + translate([p_usb_hole_dist/2,0,0])cylinder(d=p_usb_hole_dia+mt,h=mt,center=true); + } + translate([-p_usb_hole_dist/2,0,mt*1.5])cylinder(d=p_usb_hole_dia,h=mt*2,center=true); + translate([p_usb_hole_dist/2,0,mt*1.5])cylinder(d=p_usb_hole_dia,h=mt*2,center=true); +} + +module port_vga(){ + cube([p_vga_base_x,p_vga_base_y,mt],center=true); + translate([p_vga_cut_x_offset,p_vga_cut_y_offset,p_vga_cut_z+mt/2])cube([p_vga_cut_x,p_vga_cut_y,p_vga_cut_z+mt],center=true); + hull(){ + translate([-p_vga_hole_dist/2,0,0])cylinder(d=p_vga_hole_dia+mt,h=mt,center=true); + translate([p_vga_hole_dist/2,0,0])cylinder(d=p_vga_hole_dia+mt,h=mt,center=true); + } + translate([-p_vga_hole_dist/2,0,mt*1.5])cylinder(d=p_vga_hole_dia,h=mt*2,center=true); + translate([p_vga_hole_dist/2,0,mt*1.5])cylinder(d=p_vga_hole_dia,h=mt*2,center=true); +} + +module port_slot(){ + hull(){ + translate([-p_slot_hole_dist/2,0,mt])cylinder(d=p_slot_hole_dia,h=mt*2,center=true); + translate([p_slot_hole_dist/2,0,mt])cylinder(d=p_slot_hole_dia,h=mt*2,center=true); + } +} module shield_hole(x,y,z,rotx,roty){ translate([x,y,shield_d/2-z])rotate([rotx,roty,0])cylinder(d1=shield_hole_d1,d2=shield_hole_d2,h=mt+q,center=true); } @@ -76,7 +150,7 @@ module shield_2(){ difference(){ shield_1(); if (shield_holes>0) { - // some holes all around, (left, than clockwise, viewed from behind) + // some holes all around, (left, than clockwise, viewed from behind). THESE ARE MANUALLY PLACED! // shield_hole(x,y,z,rotx,roty), "z" is the distance from lip-edge to the center of the hole, x is from center shield_hole(-shield_w/2+mt/2,-0.5,4,0,-90); //left side shield_hole(-shield_w/2+mt/2+4.5,shield_h/2-shield_tab_emboss_d-mt/2-q*0.5,6.25,-90,0); //top side, 1st from left (recessed) @@ -111,27 +185,32 @@ module shield_grill(){ } } } +// final iteration: with ports (manual placement) +module shield_ports(){ + difference(){ + shield_2(); + translate([-75,-1,-3*mt-q])rotate([0,0,-90])#port_ethernet(); + translate([-37.5,-1,-3*mt-q])rotate([0,0,-90])#port_ethernet(); + translate([22.5,-1,-3*mt-q])rotate([0,0,-90])#port_ethernet(); + translate([50,0,-3*mt-q])rotate([0,0,-90])#port_usb(); +//flipped and embossed so that only 1mm of the plate thickness is left, due to the way, d-sub is mounted, and no support is needed for printing + translate([75,-1,-mt-(mt-1)])rotate([180,0,-90])port_vga(); + // slots + for (x=[-60,-52.5,-22.5,-15,-7.5,7.5,37.5,62.5]){ + translate([x,0,-3*mt-q])rotate([0,0,90])#port_slot(); + } + } +} // ##################################### // DRAWING: -//difference(){ - shield_grill(); -// translate([0,0,6])cube([200,100,5],center=true); -// translate([0,0,-5.45])cube([200,100,5],center=true); -//} - - - - - - -// todo: -// shield holes durchgängig -// seitlicher tab hinzufügen, loch beachten! - - +// shield_2(); + +//port_ethernet(); +shield_ports(); +// todo: add text