grommet tolerance adjustment, fixed wrong part count and other minor changes

This commit is contained in:
Edward Kisiel
2025-05-26 16:06:52 -04:00
parent 5a15316530
commit 9a037db8a4
6 changed files with 360 additions and 32 deletions

View File

@@ -78,7 +78,7 @@ module grommet(face = "bottom", style = "sleeve", od, id, wall, assembly, mask)
}
translate([0,0,-adj]) cylinder(d=id, h=height+(2*adj));
translate([-lip_od/2,-cut/2,-adj]) cube([lip_od+(2*adj),cut,height+(2*adj)]);
translate([0,0,2.5+wall]) grommet_clip(style,od,id,wall);
translate([0,0,2.75+wall]) grommet_clip(style,od,id,wall);
}
if(assembly == true) {
translate([0,0,2.5+wall]) grommet_clip(style,od,id,wall);
@@ -99,11 +99,11 @@ module grommet_clip(style,od,id,wall) {
difference() {
cylinder(d=lip_od, h=2.5);
difference() {
translate([0,0,-adj]) cylinder(d=od, h=wall+2*adj);
translate([0,0,-adj]) cylinder(d=od, h=wall+2.5);
translate([-lip_od/2,-od/2,-adj]) cube([lip_od+(2*adj),2,height-2]);
translate([-lip_od/2,-2+od/2,-adj]) cube([lip_od+(2*adj),2,height-2]);
}
translate([-lip_od,-(od-6)/2,-adj]) cube([lip_od+(2*adj),od-6,wall+(2*adj)]);
translate([-lip_od,-(od-6)/2,-adj]) cube([lip_od+(2*adj),od-6,wall+2.5]);
}
}
}

View File

@@ -19,7 +19,7 @@
hd25_tab(side)
hd25_vtab(side)
hd35(orientation, mask)
hdd35_25holder(length)
hd35_25holder(length,width)
hd35_tab(side)
hd35_vtab(side)
hd_bottom_holes(hd, orientation, side, thick, holetype)

View File

@@ -285,7 +285,69 @@ if(case_design == "rack" && side == "bottom") {
translate([300-gap-wallthick,(depth/2)-gap-wallthick,floorthick-adj-.5])
panel_clamp("bottom", "sloped", "m2", 6, 18, 5, [true,10,2,"holes"]);
}
// case upper panel clamp holes
translate([150-gap-wallthick,-gap-adj,case_z-13+4])
panel_clamp("rear", "sloped", "m2", 6, 18, 5, [true,10,2,"holes"]);
translate([150-gap-wallthick,depth-gap-(2*wallthick)+adj,
case_z-13+4]) panel_clamp("front", "sloped", "m2", 6, 18, 5, [true,10,2,"holes"]);
if(rack_width == 19) {
translate([300-gap-wallthick,-gap-adj,case_z-13+4])
panel_clamp("rear", "sloped", "m2", 6, 18, 5, [true,10,2,"holes"]);
translate([300-gap-wallthick,depth-gap-(2*wallthick)+adj,
case_z-13+4]) panel_clamp("front", "sloped", "m2", 6, 18, 5, [true,10,2,"holes"]);
}
// case lower block assembly holes
// rear left
translate([150-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
// rear left nut
translate([150-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
// rear left recess
translate([150-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,-gap-adj+(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2);
// rear right
translate([300-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
// rear right nut
translate([300-gap-wallthick-rack_asm_size-adj,-gap-adj+(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
// rear right recess
translate([300-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,-gap-adj+(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2);
// front left
translate([150-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
// front left nut
translate([150-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
// front left recess
translate([150-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2);
// front right
translate([300-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)+adj-(rack_asm_size/2),
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=rack_asm_hole, h=rack_asm_gap+(2*rack_asm_size)+(2*adj));
// front right nut
translate([300-gap-wallthick-rack_asm_size-adj,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2, $fn=6);
// front right recess
translate([300-gap-wallthick+rack_asm_size+adj+rack_asm_gap-2,depth-gap-(2*wallthick)-(rack_asm_size/2)+adj,
floorthick-adj+(rack_asm_size/2)]) rotate([0,90,0])
cylinder(d=4*2/sqrt(3), h=2);
}
// pcb and multi-pcb standoffs
for(r = [0:len(rack_bay_sbc)-1]) {
if(rack_bay_sbc[r] != "none" && rack_bay_face[r] != "removable") {

View File

@@ -1488,9 +1488,9 @@
},
"c-series_rack10-1u": {
"$fn": "90",
"Rack_Bay1": "c4",
"Rack_Bay1": "c2",
"Rack_Bay2": "c4",
"Rack_Bay3": "c4",
"Rack_Bay3": "c5",
"Rack_Bay4": "none",
"Rack_Bay5": "none",
"Rack_Bay6": "none",
@@ -1749,18 +1749,18 @@
},
"c-series_rack19-1u": {
"$fn": "90",
"Rack_Bay1": "c4",
"Rack_Bay1": "c2",
"Rack_Bay2": "c4",
"Rack_Bay3": "c4",
"Rack_Bay4": "c4",
"Rack_Bay5": "c4",
"Rack_Bay6": "c4",
"Rack_Bay3": "c5",
"Rack_Bay4": "hc4",
"Rack_Bay5": "none",
"Rack_Bay6": "none",
"access_panel_location": "[10, 15]",
"access_panel_orientation": "landscape",
"access_panel_rotation": "0",
"access_panel_size": "[70, 30]",
"accessory_highlight": "false",
"accessory_name": "none",
"accessory_name": "c-series_rack19-1u",
"adj": "0.01",
"bend_allowance": "1",
"bottom_access_panel_enable": "false",
@@ -1940,23 +1940,23 @@
"rack_bay3_rotation": "270",
"rack_bay3_wall": "true",
"rack_bay3_xyz_loc": "[163.5, 0, 0]",
"rack_bay4_face": "vent",
"rack_bay4_face": "fixed",
"rack_bay4_rear_conduit": "grommet",
"rack_bay4_rear_fan": "true",
"rack_bay4_rotation": "270",
"rack_bay4_wall": "true",
"rack_bay4_xyz_loc": "[238, 0, 0]",
"rack_bay4_rotation": "0",
"rack_bay4_wall": "false",
"rack_bay4_xyz_loc": "[225, 0, 0]",
"rack_bay5_face": "vent",
"rack_bay5_rear_conduit": "grommet",
"rack_bay5_rear_conduit": "none",
"rack_bay5_rear_fan": "true",
"rack_bay5_rotation": "270",
"rack_bay5_wall": "true",
"rack_bay5_rotation": "0",
"rack_bay5_wall": "false",
"rack_bay5_xyz_loc": "[313.5, 0, 0]",
"rack_bay6_face": "vent",
"rack_bay6_rear_conduit": "grommet",
"rack_bay6_rear_conduit": "none",
"rack_bay6_rear_fan": "true",
"rack_bay6_rotation": "270",
"rack_bay6_xyz_loc": "[386.5, 0, 0]",
"rack_bay6_rotation": "0",
"rack_bay6_xyz_loc": "[353, 0, 0]",
"rack_size": "1u",
"rack_width": "19",
"raise_top": "0",
@@ -7440,11 +7440,11 @@
"view": "model",
"wallthick": "3"
},
"h4_rack19-1u+": {
"h4-series_rack19-1u+": {
"$fn": "90",
"Rack_Bay1": "h4_ultra",
"Rack_Bay1": "h4",
"Rack_Bay2": "none",
"Rack_Bay3": "h4_ultra",
"Rack_Bay3": "h4+",
"Rack_Bay4": "none",
"Rack_Bay5": "h4_ultra",
"Rack_Bay6": "none",
@@ -12395,6 +12395,267 @@
"uart_opening": "default",
"view": "model",
"wallthick": "2"
},
"hetro-mix_rack19-1u": {
"$fn": "90",
"Rack_Bay1": "visionfive2",
"Rack_Bay2": "none",
"Rack_Bay3": "nio12l",
"Rack_Bay4": "none",
"Rack_Bay5": "jetsonnano",
"Rack_Bay6": "none",
"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": "rack",
"case_offset_bz": "0",
"case_offset_tz": "0",
"case_offset_x": "0",
"case_offset_y": "0",
"cooling": "default",
"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": "0",
"flat_blank_section": "false",
"floorthick": "2",
"front_cover_pattern": "solid",
"gap": "2",
"gpio_opening": "default",
"hd_bays": "2",
"hd_center": "false",
"hd_reverse": "false",
"hd_space": "10",
"hd_y_position": "25",
"hd_z_position": "40",
"indents": "true",
"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",
"rack_bay1_face": "removable",
"rack_bay1_rear_conduit": "none",
"rack_bay1_rear_fan": "true",
"rack_bay1_rotation": "0",
"rack_bay1_wall": "false",
"rack_bay1_xyz_loc": "[18, 0, 0]",
"rack_bay2_face": "fixed",
"rack_bay2_rear_conduit": "grommet",
"rack_bay2_rear_fan": "false",
"rack_bay2_rotation": "0",
"rack_bay2_wall": "true",
"rack_bay2_xyz_loc": "[0, 0, 0]",
"rack_bay3_face": "removable",
"rack_bay3_rear_conduit": "none",
"rack_bay3_rear_fan": "true",
"rack_bay3_rotation": "0",
"rack_bay3_wall": "false",
"rack_bay3_xyz_loc": "[1, 0, 5]",
"rack_bay4_face": "fixed",
"rack_bay4_rear_conduit": "grommet",
"rack_bay4_rear_fan": "false",
"rack_bay4_rotation": "0",
"rack_bay4_wall": "true",
"rack_bay4_xyz_loc": "[0, 0, 0]",
"rack_bay5_face": "removable",
"rack_bay5_rear_conduit": "none",
"rack_bay5_rear_fan": "true",
"rack_bay5_rotation": "0",
"rack_bay5_wall": "false",
"rack_bay5_xyz_loc": "[20, 0, 5]",
"rack_bay6_face": "fixed",
"rack_bay6_rear_conduit": "grommet",
"rack_bay6_rear_fan": "false",
"rack_bay6_rotation": "0",
"rack_bay6_xyz_loc": "[0, 0, 0]",
"rack_size": "1u",
"rack_width": "19",
"raise_top": "0",
"rear_cooling": "fan_hex",
"rear_dualfan_spacing": "6",
"rear_fan": "1",
"rear_fan_center": "false",
"rear_fan_position": "0",
"rear_fan_size": "40",
"rear_io_shield": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_information": "false",
"sbc_model": "c1+",
"sbc_off": "false",
"sbc_top_standoffs": "false",
"section_part": "false",
"sidethick": "3",
"standard_motherboard_thickness": "0",
"text_color": "Green",
"text_font": "Nimbus Mono PS",
"tol": "0.25",
"top_cover_pattern": "hex_8mm",
"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": "4",
"top_standoff_support_size": "10",
"top_standoff_type": "blind",
"uart_opening": "default",
"view": "model",
"wallthick": "2"
}
},
"fileFormatVersion": "1"

View File

@@ -206,7 +206,7 @@ hd_y_position = 25; // [0:300]
hd_z_position = 40; // [0:300]
// case accessory group to load
accessory_name = "none"; // ["none", "hk_uart", "c4_shell_boombox", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_panel_lcd3.5", "c4_tray_boombox", "c4_round", "c4_hex", "xu4_shifter_shield", "xu4_keyhole", "hc4_panel_nas", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "hc4_tray_drivebox2.5", "n-series_rack19-1u", "n1_rack10-1u", "m2_shell", "m2_eyespi_eink1.54", "m2_eyespi_lcd2.8", "m1s_shell_nvme", "m1s_shell_ups", "m1s_tray_nvme", "m1_tray_ssd", "m1_fitted_pizzabox2.5", "m1_fitted_pizzabox3.5", "h3_shell", "h3_shell_router", "h3_lowboy", "h3_lowboy_router", "h3_panel_nas", "h3_ultimate", "h3_ultimate2", "h4_panel_nas", "show2_shell", "rpi5_m2hat", "rpi5_bottom_m2hat", "rock5b", "adapter_mini-stx_m1s", "nas", "cs_solarmeter", "n2l_env_sensors", "avr_env_sensors", "adafruit_solar_charger"]
accessory_name = "none"; // ["none", "hk_uart", "c4_shell_boombox", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_panel_lcd3.5", "c4_tray_boombox", "c4_round", "c4_hex", "c-series_rack19-1u", "xu4_shifter_shield", "xu4_keyhole", "hc4_panel_nas", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "hc4_tray_drivebox2.5", "n-series_rack19-1u", "n1_rack10-1u", "m2_shell", "m2_eyespi_eink1.54", "m2_eyespi_lcd2.8", "m1s_shell_nvme", "m1s_shell_ups", "m1s_tray_nvme", "m1_tray_ssd", "m1_fitted_pizzabox2.5", "m1_fitted_pizzabox3.5", "h3_shell", "h3_shell_router", "h3_lowboy", "h3_lowboy_router", "h3_panel_nas", "h3_ultimate", "h3_ultimate2", "h4_panel_nas", "show2_shell", "rpi5_m2hat", "rpi5_bottom_m2hat", "rock5b", "adapter_mini-stx_m1s", "nas", "cs_solarmeter", "n2l_env_sensors", "avr_env_sensors", "adafruit_solar_charger"]
// sbc information text color
text_color = "Green"; // [Green, Black, Dimgrey, White, Yellow, Orange, Red, DarkbBlue]
@@ -1456,7 +1456,7 @@ if (view == "part") {
}
if(case_design == "rack") {
// rear fan covers
ucount = rack_width == 10 ? 3 : len(rack_bay_sbc)-1;
ucount = rack_width == 10 ? 3 : len(rack_bay_sbc);
for(r = [0:ucount-1]) {
fan_offset = -75+(75-rear_fan_size)/2;
if(rack_bay_rear_fan[r] == true) {
@@ -1465,17 +1465,17 @@ if (view == "part") {
}
}
// rear grommets
for(r = [0:len(rack_bay_sbc)-1]) {
for(r = [0:ucount-1]) {
grommet_offset = -75+11;
if(rack_bay_rear_conduit[r] == "grommet") {
translate([0,0,0]) rotate([270,0,0]) difference() {
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,0,0])
grommet("bottom", "sleeve", 10, r+2, wallthick, false, [false,10,0,"default"]);
grommet("bottom", "sleeve", 10, r+1, wallthick, false, [false,10,0,"default"]);
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset-10,-.125,-3]) cube([20,10,20]);
}
translate([0,20,0]) rotate([270,0,0]) difference() {
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,0,0])
grommet("bottom", "sleeve", 10, r+2, wallthick, false, [false,10,0,"default"]);
grommet("bottom", "sleeve", 10, r+1, wallthick, false, [false,10,0,"default"]);
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset-10,-.125,-3]) cube([20,10,20]);
}
translate([-gap-wallthick-1+.125+75*(r+1)+grommet_offset,-20,0])

View File

@@ -178,6 +178,11 @@ accessory_data = [
"suball","round",10.5,-2,14.5,"top",[90,0,0],["case",false,false,false],[11,0,18],[0],[false,10,2,"default"],
"suball","rectangle",35,-26,4,"top",[0,0,0],["case",false,false,false],[21,10,15.5],[[1,1,1,1]],[false,10,2,"default"]],
["c-series_rack19-1u",
"add2","hd_holder",320,9,1.99,"bottom",[0,0,0],["case",false,false,false],[0,0,0],[2.5,"landscape"],[false,10,2,"default"],
"model","hd25",320,9,2,"bottom",[0,0,0],["case",false,false,false],[0,0,0],["landscape",15],[true,25,2,"both"],
"model","hd25",320,9,20.5,"bottom",[0,0,0],["case",false,false,false],[0,0,0],["landscape",15],[true,25,2,"default"]],
// Odroid-XU4
["xu4_shifter_shield",
"model","pillar",3.5,3.5,8,"bottom",[0,0,0],["sbc",true,true,true],[4,3,19],["hex","silver","top"],[false,10,2,"default"],
@@ -258,7 +263,7 @@ accessory_data = [
// Odroid-N2
["n-series_rack19-1u",
"add2","hd_holder",229,102,1.99,"bottom",[0,0,180],["case",false,false,false],[0,0,0],[2.5,"portrait"],[false,10,2,"default"],
"model","hd25",229,102,3,"bottom",[0,0,180],["case",false,false,false],[0,0,0],["portrait",15],[true,10,2,"both"],
"model","hd25",229,102,2,"bottom",[0,0,180],["case",false,false,false],[0,0,0],["portrait",15],[true,10,2,"both"],
"model","hd25",229,102,20.5,"bottom",[0,0,180],["case",false,false,false],[0,0,0],["portrait",15],[true,10,2,"default"]],
["n1_rack10-1u",
"add2","hd_holder",1,10,1.99,"bottom",[0,0,0],["case",false,false,false],[0,0,0],[2.5,"landscape"],[false,10,2,"default"],