diff --git a/lib/cable_holder.scad b/lib/cable_holder.scad index 8ca9597..77a6be0 100644 --- a/lib/cable_holder.scad +++ b/lib/cable_holder.scad @@ -39,7 +39,7 @@ module cableholder_spacer(length) { translate([size[0]/2,size[0]/2,0]) rotate([0,0,90]) long_slot(size[0],size[1],size[2]); translate([-length,5,3]) rotate([0,90,0]) cylinder(d=6, h=length+1); } - #translate([-length-adj,5,3]) rotate([0,90,0]) cylinder(d=3.2, h=length+size[0]+adj); + translate([-length-adj,5,3]) rotate([0,90,0]) cylinder(d=3.2, h=length+size[0]+adj); translate([-1,8,-1]) cube([2,20,9]); translate([5,9.5,-1]) rotate([0,0,90]) long_slot(4.5,11,9); translate([3,20,-1]) rotate([0,0,45]) cube([2,6,9]); diff --git a/mod/case_side.scad b/mod/case_side.scad index 68a1fc2..cd695d6 100644 --- a/mod/case_side.scad +++ b/mod/case_side.scad @@ -148,11 +148,11 @@ module case_side(case_design, side) { cube([sidethick+(2*adj),wallthick,10]); } if(rear_fan == 1 || rear_fan == 2) { - translate([-1+(101.6-rear_fan_size)/2,-1,bottom_height+pcb_tmaxz+rear_fan_position]) + translate([-1+(101.6-rear_fan_size)/2,-1,rear_fan_position]) rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling); } if(rear_fan == 2) { - translate([-1+(101.6-rear_fan_size)/2,-1,bottom_height+pcb_tmaxz+rear_fan_position+3+rear_fan_size]) + translate([-1+(101.6-rear_fan_size)/2,-1,rear_fan_position+3+rear_fan_size]) rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling); } } @@ -175,42 +175,80 @@ module case_side(case_design, side) { translate([-sidethick-gap-adj,depth-(4*wallthick),case_z-30]) cube([sidethick+(2*adj),wallthick,10]); } - // hex vent - translate([-gap+3,depth-3*(wallthick)+gap,5]) - vent_hex(width/3.85,(case_z-6)/6,wallthick+4,5,1.5,"vertical"); + + // front cover pattern + if(front_cover_pattern != "solid" && case_design == "panel_nas") { + if(front_cover_pattern == "hex_5mm") { + translate([-gap+4,depth-3*(wallthick)+gap,5]) + vent_hex(width/3.85,(case_z-6)/6,wallthick+4,5,1.5,"vertical"); + } + if(front_cover_pattern == "hex_8mm") { + translate([-gap+5,depth-3*(wallthick)+gap,5]) + vent_hex(width/5.5,(case_z-6)/9,floorthick+4,8,1.5,"vertical"); + } +// vent(width, length, height, gap, rows, columns, orientation) + if(front_cover_pattern == "linear_vertical") { + translate([-gap+4,depth-3*(wallthick)+gap,5]) + vent(wallthick,(case_z-2*(wallthick+gap)-20)/2,floorthick+4,1,2,(width-2*(wallthick+gap+sidethick))/4.2,"vertical"); + } + if(front_cover_pattern == "linear_horizontal") { + translate([-gap+4,depth-3*(wallthick)+gap,5]) + vent(width-2*(wallthick+gap+sidethick)-4,wallthick,floorthick+4,1,(case_z-2*(wallthick+gap)-10)/3,1,"vertical"); + } + if(front_cover_pattern == "astroid") { + for(c=[3:12:depth-8]) { + for(r=[4:12:width-8]) { + translate([r,c,case_z-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf"); + } + } + } + } } } if(side == "right") { difference() { translate([width-2*sidethick,-(3*wallthick)-gap,-2*wallthick]) rotate([0,-90,0]) slab([case_z+(3*wallthick),depth+2*wallthick,sidethick],corner_fillet); + // rear edge top tab openings translate([width-adj-(3*sidethick),-2*wallthick,case_z-30]) cube([sidethick+2*adj,wallthick+tol,20]); translate([width-adj-(3*sidethick),-(4*wallthick),case_z-20-tol]) cube([sidethick+(2*adj),2*wallthick,10+tol]); + // rear edge bottom tab openings translate([width-adj-(3*sidethick),-2*wallthick,20]) cube([sidethick+2*adj,wallthick+tol,20]); translate([width-adj-(3*sidethick),-(4*wallthick),30-tol]) cube([sidethick+(2*adj),2*wallthick,10+tol]); + // front edge top tab openings translate([width-(3*sidethick)-adj,depth-(4*wallthick),case_z-30]) cube([sidethick+(2*adj),wallthick,20]); translate([width-(3*sidethick),depth-(4*wallthick),case_z-20-tol]) - cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]); + cube([sidethick+(2*adj),3*wallthick,10+tol]); + // front edge bottom tab openings translate([width-(3*sidethick)-adj,depth-(4*wallthick),20]) cube([sidethick+(2*adj),wallthick,20]); translate([width-(3*sidethick),depth-(4*wallthick),30-tol]) - cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]); + cube([sidethick+(2*adj),3*wallthick,10+tol]); // hd holes for bays - for( i=[0:1:hd_bays-1]) { - translate([(width-101.6)-(3*sidethick)-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i]) - rotate([0,0,0]) hd_holes(3.5, "portrait", "both", sidethick+2); + if(hd_reverse == false) { + for( i=[0:1:hd_bays-1]) { + translate([(width-101.6)-(3*sidethick)-gap, + -(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i]) + hd_holes(3.5, "portrait", "both", sidethick+2); + } + } + else { + for( i=[0:1:hd_bays-1]) { + translate([width-(3*sidethick)-adj,-(3*wallthick)-gap+hd_y_position+147, + hd_z_position+(hd_space+27.1)*i]) + rotate([0,0,180]) hd_holes(3.5, "portrait", "both", sidethick+2); + } } - // top edge front tab opening translate([width-(3*sidethick)-adj,depth-(3*wallthick)-gap-adj-30, case_z-(2*floorthick)]) @@ -245,33 +283,46 @@ module case_side(case_design, side) { difference() { translate([-gap,-(3*wallthick)-gap,-2*wallthick]) rotate([0,-90,0]) slab([case_z+(3*wallthick),depth+(2*wallthick),sidethick],corner_fillet); + // rear edge top tab openings translate([-sidethick-gap-adj,-2*wallthick,case_z-30]) cube([sidethick+2*adj,wallthick+tol,20]); translate([-sidethick-gap-adj,-(4*wallthick),case_z-20-tol]) cube([sidethick+(2*adj),2*wallthick,10+tol]); + // rear edge botom tab openings translate([-sidethick-gap-adj,-2*wallthick,20]) cube([sidethick+2*adj,wallthick+tol,20]); translate([-sidethick-gap-adj,-(4*wallthick),30-tol]) cube([sidethick+(2*adj),2*wallthick,10+tol]); + // front edge top tab openings translate([-sidethick-gap-adj,depth-(4*wallthick),case_z-30]) cube([sidethick+(2*adj),wallthick,20]); translate([-sidethick-gap-adj,depth-(4*wallthick),case_z-20-tol]) - cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]); + cube([sidethick+(2*adj),3*wallthick,10+tol]); + // front edge bottom tab openings translate([-sidethick-gap-adj,depth-(4*wallthick),20]) cube([sidethick+(2*adj),wallthick,20]); translate([-sidethick-gap-adj,depth-(4*wallthick),30-tol]) - cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]); + cube([sidethick+(2*adj),3*wallthick,10+tol]); // hd holes for bays - for( i=[0:1:hd_bays-1]) { - translate([-gap+adj,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i]) - rotate([0,0,0]) hd_holes(3.5, "portrait", "both", sidethick+2); + if(hd_reverse == false) { + for( i=[0:1:hd_bays-1]) { + translate([-gap+adj,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i]) + rotate([0,0,0]) hd_holes(3.5, "portrait", "both", sidethick+2); + } } - + else { + for( i=[0:1:hd_bays-1]) { + translate([101.6-gap+adj,-(3*wallthick)-gap+hd_y_position+147, + hd_z_position+(hd_space+27.1)*i]) + rotate([0,0,180]) hd_holes(3.5, "portrait", "both", sidethick+2); + } + } + // top edge front tab openings translate([-gap-sidethick-adj,depth-(3*wallthick)-gap-adj-30, case_z-(2*floorthick)]) diff --git a/sbc_case_builder.json b/sbc_case_builder.json index 6fe26f7..7678a74 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -9584,7 +9584,7 @@ "view": "model", "wallthick": "2" }, - "m2_panel_nas": { + "hc4_panel_nas": { "$fn": "90", "access_panel_location": "[10, 15]", "access_panel_orientation": "landscape", @@ -9623,7 +9623,7 @@ "bottom_standoff_type": "countersunk", "case_design": "panel_nas", "case_offset_bz": "0", - "case_offset_tz": "0", + "case_offset_tz": "-30", "case_offset_x": "0", "case_offset_y": "0", "cooling": "default", @@ -9682,12 +9682,13 @@ "fan_size": "0", "flat_blank_section": "false", "floorthick": "2", + "front_cover_pattern": "hex_5mm", "gap": "1", "gpio_opening": "default", "hd_bays": "2", "hd_space": "10", - "hd_y_position": "25", - "hd_z_position": "10", + "hd_y_position": "40", + "hd_z_position": "55", "indents": "false", "individual_part": "bottom", "lower_bottom": "0", @@ -9746,22 +9747,22 @@ "multipcb_top_standoff_support_size": "7", "multipcb_top_standoff_type": "blind", "multipcb_top_standoffs": "false", - "nas_sbc_location": "top", - "pcb_loc_x": "8", - "pcb_loc_y": "1", + "nas_sbc_location": "bottom", + "pcb_loc_x": "0", + "pcb_loc_y": "0", "pcb_loc_z": "0", "raise_top": "0", "rear_cooling": "fan_hex", "rear_fan": "1", - "rear_fan_position": "-20", + "rear_fan_position": "42", "rear_fan_size": "80", "rear_io_shield": "false", - "sbc_bottom_standoffs": "false", + "sbc_bottom_standoffs": "true", "sbc_highlight": "false", "sbc_information": "false", - "sbc_model": "m2", + "sbc_model": "hc4", "sbc_off": "false", - "sbc_top_standoffs": "true", + "sbc_top_standoffs": "false", "sidethick": "3", "standard_motherboard_thickness": "0", "text_color": "Green", @@ -9792,7 +9793,7 @@ "top_standoff_support_height": "4", "top_standoff_support_size": "10", "top_standoff_type": "countersunk", - "uart_opening": "default", + "uart_opening": "none", "view": "model", "wallthick": "2" }, @@ -9837,7 +9838,7 @@ "case_offset_bz": "0", "case_offset_tz": "0", "case_offset_x": "0", - "case_offset_y": "10", + "case_offset_y": "25", "cooling": "fan_hex", "corner_fillet": "3", "edge_fillet": "0", @@ -9894,12 +9895,14 @@ "fan_size": "80", "flat_blank_section": "false", "floorthick": "2", + "front_cover_pattern": "hex_5mm", "gap": "1", - "gpio_opening": "default", + "gpio_opening": "none", "hd_bays": "2", + "hd_reverse": "true", "hd_space": "10", - "hd_y_position": "25", - "hd_z_position": "10", + "hd_y_position": "16", + "hd_z_position": "7", "indents": "false", "individual_part": "bottom", "lower_bottom": "0", @@ -9965,7 +9968,7 @@ "raise_top": "0", "rear_cooling": "fan_hex", "rear_fan": "1", - "rear_fan_position": "-50", + "rear_fan_position": "4", "rear_fan_size": "80", "rear_io_shield": "false", "sbc_bottom_standoffs": "false", @@ -10007,6 +10010,220 @@ "uart_opening": "default", "view": "model", "wallthick": "2" + }, + "h4_panel_nas": { + "$fn": "90", + "access_panel_location": "[10, 15]", + "access_panel_orientation": "landscape", + "access_panel_rotation": "0", + "access_panel_size": "[70, 30]", + "accessory_highlight": "false", + "accessory_name": "none", + "adj": "0.01", + "bend_allowance": "1", + "bottom_access_panel_enable": "false", + "bottom_clearence": "3.5", + "bottom_cover_pattern": "solid", + "bottom_front_left_adjust": "0", + "bottom_front_left_enable": "true", + "bottom_front_left_support": "front", + "bottom_front_right_adjust": "0", + "bottom_front_right_enable": "true", + "bottom_front_right_support": "front", + "bottom_rear_left_adjust": "0", + "bottom_rear_left_enable": "true", + "bottom_rear_left_support": "rear", + "bottom_rear_right_adjust": "0", + "bottom_rear_right_enable": "true", + "bottom_rear_right_support": "rear", + "bottom_sidewall_support": "false", + "bottom_standoff_diameter": "5.75", + "bottom_standoff_hole_size": "3.4", + "bottom_standoff_insert": "false", + "bottom_standoff_insert_dia": "4.2", + "bottom_standoff_insert_height": "5.1", + "bottom_standoff_pillar": "hex", + "bottom_standoff_reverse": "false", + "bottom_standoff_size": "m3", + "bottom_standoff_support_height": "4", + "bottom_standoff_support_size": "10", + "bottom_standoff_type": "countersunk", + "case_design": "panel_nas", + "case_offset_bz": "6", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "20", + "cooling": "fan_hex", + "corner_fillet": "3", + "edge_fillet": "0", + "ext_bottom_front_left_adjust": "0", + "ext_bottom_front_left_enable": "true", + "ext_bottom_front_left_support": "front", + "ext_bottom_front_right_adjust": "0", + "ext_bottom_front_right_enable": "true", + "ext_bottom_front_right_support": "front", + "ext_bottom_rear_left_adjust": "0", + "ext_bottom_rear_left_enable": "true", + "ext_bottom_rear_left_support": "rear", + "ext_bottom_rear_right_adjust": "0", + "ext_bottom_rear_right_enable": "true", + "ext_bottom_rear_right_support": "rear", + "ext_bottom_sidewall_support": "true", + "ext_bottom_standoff_diameter": "5.75", + "ext_bottom_standoff_hole_size": "3.4", + "ext_bottom_standoff_insert": "false", + "ext_bottom_standoff_insert_dia": "4.2", + "ext_bottom_standoff_insert_height": "5.1", + "ext_bottom_standoff_pillar": "hex", + "ext_bottom_standoff_reverse": "false", + "ext_bottom_standoff_size": "m3", + "ext_bottom_standoff_support_height": "4", + "ext_bottom_standoff_support_size": "10", + "ext_bottom_standoff_type": "countersunk", + "ext_bottom_standoffs": "false", + "ext_top_front_left_adjust": "0", + "ext_top_front_left_enable": "true", + "ext_top_front_left_support": "front", + "ext_top_front_right_adjust": "0", + "ext_top_front_right_enable": "true", + "ext_top_front_right_support": "front", + "ext_top_rear_left_adjust": "0", + "ext_top_rear_left_enable": "true", + "ext_top_rear_left_support": "rear", + "ext_top_rear_right_adjust": "0", + "ext_top_rear_right_enable": "true", + "ext_top_rear_right_support": "rear", + "ext_top_sidewall_support": "true", + "ext_top_standoff_diameter": "5.75", + "ext_top_standoff_hole_size": "2.75", + "ext_top_standoff_insert": "false", + "ext_top_standoff_insert_dia": "4.2", + "ext_top_standoff_insert_height": "5.1", + "ext_top_standoff_pillar": "hex", + "ext_top_standoff_reverse": "true", + "ext_top_standoff_size": "m3", + "ext_top_standoff_support_height": "4", + "ext_top_standoff_support_size": "10", + "ext_top_standoff_type": "blind", + "ext_top_standoffs": "false", + "fan_size": "80", + "flat_blank_section": "false", + "floorthick": "2", + "front_cover_pattern": "hex_5mm", + "gap": "1", + "gpio_opening": "none", + "hd_bays": "4", + "hd_reverse": "true", + "hd_space": "10", + "hd_y_position": "16", + "hd_z_position": "10", + "indents": "false", + "individual_part": "bottom", + "lower_bottom": "0", + "material_thickness": "0.5", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "multipcb_bottom_front_left_adjust": "0", + "multipcb_bottom_front_left_enable": "true", + "multipcb_bottom_front_left_support": "front", + "multipcb_bottom_front_right_adjust": "0", + "multipcb_bottom_front_right_enable": "true", + "multipcb_bottom_front_right_support": "front", + "multipcb_bottom_rear_left_adjust": "0", + "multipcb_bottom_rear_left_enable": "true", + "multipcb_bottom_rear_left_support": "rear", + "multipcb_bottom_rear_right_adjust": "0", + "multipcb_bottom_rear_right_enable": "true", + "multipcb_bottom_rear_right_support": "rear", + "multipcb_bottom_sidewall_support": "false", + "multipcb_bottom_standoff_diameter": "5.75", + "multipcb_bottom_standoff_hole_size": "3.4", + "multipcb_bottom_standoff_insert": "false", + "multipcb_bottom_standoff_insert_dia": "4.2", + "multipcb_bottom_standoff_insert_height": "5.1", + "multipcb_bottom_standoff_pillar": "hex", + "multipcb_bottom_standoff_reverse": "false", + "multipcb_bottom_standoff_size": "m2.5", + "multipcb_bottom_standoff_support_height": "4", + "multipcb_bottom_standoff_support_size": "7", + "multipcb_bottom_standoff_type": "countersunk", + "multipcb_bottom_standoffs": "false", + "multipcb_top_front_left_adjust": "0", + "multipcb_top_front_left_enable": "true", + "multipcb_top_front_left_support": "front", + "multipcb_top_front_right_adjust": "0", + "multipcb_top_front_right_enable": "true", + "multipcb_top_front_right_support": "front", + "multipcb_top_rear_left_adjust": "0", + "multipcb_top_rear_left_enable": "true", + "multipcb_top_rear_left_support": "rear", + "multipcb_top_rear_right_adjust": "0", + "multipcb_top_rear_right_enable": "true", + "multipcb_top_rear_right_support": "rear", + "multipcb_top_sidewall_support": "false", + "multipcb_top_standoff_diameter": "5.75", + "multipcb_top_standoff_hole_size": "2.75", + "multipcb_top_standoff_insert": "false", + "multipcb_top_standoff_insert_dia": "4.2", + "multipcb_top_standoff_insert_height": "5.1", + "multipcb_top_standoff_pillar": "hex", + "multipcb_top_standoff_reverse": "true", + "multipcb_top_standoff_size": "m2.5", + "multipcb_top_standoff_support_height": "4", + "multipcb_top_standoff_support_size": "7", + "multipcb_top_standoff_type": "blind", + "multipcb_top_standoffs": "false", + "nas_sbc_location": "top", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "rear_cooling": "fan_hex", + "rear_fan": "2", + "rear_fan_position": "4", + "rear_fan_size": "80", + "rear_io_shield": "false", + "sbc_bottom_standoffs": "false", + "sbc_highlight": "false", + "sbc_information": "false", + "sbc_model": "h4+", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "3", + "standard_motherboard_thickness": "0", + "text_color": "Green", + "text_font": "Nimbus Mono PS", + "tol": "0.25", + "top_cover_pattern": "solid", + "top_front_left_adjust": "0", + "top_front_left_enable": "true", + "top_front_left_support": "front", + "top_front_right_adjust": "0", + "top_front_right_enable": "true", + "top_front_right_support": "front", + "top_rear_left_adjust": "0", + "top_rear_left_enable": "true", + "top_rear_left_support": "rear", + "top_rear_right_adjust": "0", + "top_rear_right_enable": "true", + "top_rear_right_support": "rear", + "top_sidewall_support": "false", + "top_standoff_diameter": "5.75", + "top_standoff_hole_size": "2.75", + "top_standoff_insert": "false", + "top_standoff_insert_dia": "4.2", + "top_standoff_insert_height": "5.1", + "top_standoff_pillar": "hex", + "top_standoff_reverse": "true", + "top_standoff_size": "m3", + "top_standoff_support_height": "10", + "top_standoff_support_size": "10", + "top_standoff_type": "recessed", + "uart_opening": "default", + "view": "model", + "wallthick": "2" } }, "fileFormatVersion": "1" diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index e66633f..b8499ce 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -88,9 +88,9 @@ case_offset_tz = 0; //[-30:.01:300] case_offset_bz = 0; //[0:.01:300] // case wall thickness wallthick = 2; //[1:.01:5] -// case floor thickness +// case floor and ceiling thickness floorthick = 2; //[1:.01:5] -// side wall thickness for tray_side cases only +// side wall thickness for tray_side and panel_nas cases only sidethick = 2; //[1:.01:5] // distance between pcb and case gap = 1; //[.5:.01:5] @@ -104,17 +104,19 @@ tol = .25; //[-.5:.0625:.5] /* [Fan and Vent Openings] */ // top cover pattern top_cover_pattern = "solid"; //[solid,hex_5mm,hex_8mm,linear_vertical,linear_horizontal,astroid] +// front cover pattern for nas cases +front_cover_pattern = "solid"; //[solid,hex_5mm,hex_8mm,linear_vertical,linear_horizontal,astroid] // bottom cover pattern bottom_cover_pattern = "solid"; //[solid,hex_5mm,hex_8mm,linear_vertical,linear_horizontal,astroid] // heatsink opening cooling = "default"; // [default,none,open,fan_open,fan_1,fan_2,fan_hex,vent,vent_hex_5mm,vent_hex_8mm,custom] fan_size = 0; // [0,25,30,40,50,60,70,80,92] // rear fan number for nas cases -rear_fan = 1; // [1,2] +rear_fan = 1; // [1:2] // rear fan opening rear_cooling = "fan_hex"; // [fan_open,fan_1,fan_2,fan_hex,custom] rear_fan_size = 80; // [0,25,30,40,50,60,70,80,92] -rear_fan_position = 0; // [-50:300] +rear_fan_position = 0; // [0:1:300] /* [Bottom Access Panel] */ bottom_access_panel_enable = false; @@ -132,10 +134,12 @@ uart_opening = "default"; // [default,none,open,knockout] indents = true; // nas sbc location nas_sbc_location = "top"; // ["top","bottom"] +// rotate hd 180 degrees in the z-axis +hd_reverse = false; // [true, false] // number of nas drive bays hd_bays = 2; // [1:6] -hd_y_position = 25; // [1:300] -hd_z_position = 40; // [1:300] +hd_y_position = 25; // [0:300] +hd_z_position = 40; // [0:300] hd_space = 10; // [1:50] // case accessory group to load @@ -665,22 +669,51 @@ if (view == "model") { translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, false); } - if(sbc_off == false && nas_sbc_location == "top") { + if(sbc_off == false && nas_sbc_location == "top") { translate([pcb_loc_x ,pcb_loc_y,case_z-(top_height+pcb_loc_z+(2*floorthick))+.5]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, false); } for( i=[0:1:hd_bays-1]) { - translate([-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i]) - rotate([0,0,0]) hd35("portrait", [false,0,0,"default"]); - if(pcb_width > 100) { - translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,28.5-(3*wallthick)-gap+hd_y_position+101.6,hd_z_position+6+(hd_space+27.1)*i]) - rotate([0,0,0]) cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + if(hd_reverse == false) { + translate([-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i]) + hd35("portrait", [false,0,0,"default"]); + if(pcb_width > 100) { + translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4, + 28.5-(3*wallthick)-gap+hd_y_position+101.6, + hd_z_position+6+(hd_space+27.1)*i]) + cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); - translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,-31-(3*wallthick)-gap+hd_y_position+101.6,hd_z_position+6+(hd_space+27.1)*i]) - rotate([0,0,0]) cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4, + -31-(3*wallthick)-gap+hd_y_position+101.6, + hd_z_position+6+(hd_space+27.1)*i]) + cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); - translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4,-73-(3*wallthick)-gap+hd_y_position+101.6,hd_z_position+6+(hd_space+27.1)*i]) - rotate([0,0,0]) cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4, + -73-(3*wallthick)-gap+hd_y_position+101.6, + hd_z_position+6+(hd_space+27.1)*i]) + cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + } + } + else { + translate([-gap+101.6,-(3*wallthick)-gap+hd_y_position+147, + hd_z_position+(hd_space+27.1)*i]) + rotate([0,0,180]) hd35("portrait", [false,0,0,"default"]); + if(pcb_width > 100) { + translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4, + 17-(3*wallthick)-gap+hd_y_position+101.6, + hd_z_position+6.5+(hd_space+27.1)*i]) + cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + + translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4, + -25-(3*wallthick)-gap+hd_y_position+101.6, + hd_z_position+6.5+(hd_space+27.1)*i]) + cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + + translate([101.6-gap+wallthick+(width-2*(sidethick+gap)-101.6)-11.4, + -84.5-(3*wallthick)-gap+hd_y_position+101.6, + hd_z_position+6.5+(hd_space+27.1)*i]) + cableholder_spacer((width-2*(sidethick+gap)-101.6)-9.4); + } } } }