converted h3_port_extender and components from stl and implemented automask, more case conversions

This commit is contained in:
Edward Kisiel
2024-03-31 14:53:06 -04:00
parent 88691a6b61
commit de063b31f8
5 changed files with 414 additions and 224 deletions

View File

@@ -25,56 +25,81 @@
DESCRIPTION: @mctom's odroid-h3 gpio port extender
TODO: none
USAGE: h3_port_extender(style, mask = false)
USAGE: h3_port_extender(style, mask)
style = "header", "remote"
mask = true or false, mask for openings
mask[0] = true enables component mask
mask[1] = mask length
mask[2] = mask setback
mask[3] = mstyle "default"
*/
module h3_port_extender(style, mask = false) {
module h3_port_extender(style, mask) {
enablemask = mask[0];
mlength = mask[1];
msetback = mask[2];
mstyle = mask[3];
adj=.01;
$fn = 90;
if(style == "header") {
if(mask == true) {
translate([-20, 6.25, 15]) cube([12, 7.5, 14.75]);
translate([-20, 15.875, 15]) cube([12, 7.5, 14.75]);
translate([-20, 25.375, 15]) cube([12, 7.5, 14.75]);
translate([-20, 17, 32.2]) rotate([0, 90, 0]) cylinder(d=3.5, h=12);
if(enablemask == true && mstyle == "default") {
translate([0, 14.5, 12-msetback]) cube([7.75, 15.75, mlength]);
translate([9.5, 14.5, 12-msetback]) cube([7.75, 15.75, mlength]);
translate([19, 14.5, 12-msetback]) cube([7.75, 15.75, mlength]);
translate([16, 32.2, 12-msetback]) cylinder(d=3, h=12);
}
else {
if(enablemask == false) {
// gpio 24 pin front position
color("silver") translate([1.6, 188.5, 84]) rotate([90, 0, 270]) import("stl/h3_port_extender.stl");
// color("dimgrey") translate([-3, 15.75, 0.25]) rotate([90, 180, 180]) import("stl/header_f_2x12_90.stl");
translate([0, 2, 8.25]) rotate([0, 180, 0]) header_f(12,8);
translate([-2.54, 2, 8.25]) rotate([0, 180, 0]) header_f(12,8);
color("dimgrey") translate([-2.5, 0, 29.5]) rotate([270, 0, 90]) import("stl/header_2x2_90.stl");
header("angled", -1.75, .1, 0, "top", 0, [12,2,8], ["thruhole","black","female",2.54,"silver"],
1.6, false, [true,10,2,"default"]);
difference() {
color("#008066") slab([33,35.25,1.6], .25);
color("#008066") translate([15.95,4.6,-1]) cylinder(d=3, h=6);
color("#008066") translate([15.95,32.15,-1]) cylinder(d=3, h=6);
}
header("angled", 27.65, 29.6, 0, "bottom", 90, [2,2,6], ["thruhole","black","male",2.54,"silver"],
1.6, false, [true,10,2,"default"]);
header("angled", 30.5, 16.5, 0, "bottom", 90, [5,2,6], ["thruhole","black","male",2.54,"silver"],
1.6, false, [true,10,2,"default"]);
usb2("single_up_a", .925, 15.375, 0, "top", 180, [0,10.5,0], [0], 1.6, false, [true,10,2,"default"]);
usb2("single_up_a", 10.395, 15.375, 0, "top", 180, [0,10.5,0], [0], 1.6, false, [true,10,2,"default"]);
usb2("single_up_a", 19.925, 15.375, 0, "top", 180, [0,10.5,0], [0], 1.6, false, [true,10,2,"default"]);
}
}
if(style == "remote") {
if(mask == true) {
translate([-19, 6.25, 15]) cube([12,7.5,14.75]);
translate([-19, 15.875, 15]) cube([12,7.5,14.75]);
translate([-19, 25.375, 15]) cube([12,7.5,14.75]);
translate([-19, 17, 32.2]) rotate([0,90,0]) cylinder(d=2.5, h=12);
translate([-19, 17, 4.6]) rotate([0,90,0]) cylinder(d=2.5, h=12);
if(enablemask == true && mstyle == "default") {
translate([0, 14.5, 12-msetback]) cube([7.75, 15.75, mlength]);
translate([9.5, 14.5, 12-msetback]) cube([7.75, 15.75, mlength]);
translate([19, 14.5, 12-msetback]) cube([7.75, 15.75, mlength]);
translate([16, 32.2, 12-msetback]) cylinder(d=3, h=12);
translate([16, 4.6, 12-msetback]) cylinder(d=3, h=mlength);
}
else {
if(enablemask == false) {
difference() {
color("#008066") slab([33,35.25,1.6], .25);
color("#008066") translate([15.95,4.6,-1]) cylinder(d=3, h=6);
color("#008066") translate([15.95,32.15,-1]) cylinder(d=3, h=6);
}
// gpio 24 pin front position
color("silver") translate([1.6, 188.5, 84]) rotate([90, 0, 270]) import("stl/h3_port_extender.stl");
color("dimgrey") translate([-2.5, 0, 29.5]) rotate([270, 0, 90]) import("stl/header_2x2_90.stl");
color("dimgrey")translate([9,-.5,12.75]) rotate([0,270,90]) import("stl/header_encl_2x5_90.stl");
// translate([2, 2, 14.08]) rotate([0, 90, 0]) header(12);
// translate([2, 2, 11.54]) rotate([0, 90, 0]) header(12);
// header("open", 7.5, 1, 0, "top", 0, [2,12,6], ["thruhole","black","female",2.54,"silver"], 1.6, false, [true,10,2,"default"]);
header("open", .75, 9, 0, "bottom", 0, [12,2,6], ["thruhole","black","male",2.54,"silver"],
1.6, false, [true,10,2,"default"]);
header("angled", 27.65, 29.6, 0, "bottom", 90, [2,2,6], ["thruhole","black","male",2.54,"silver"],
1.6, false, [true,10,2,"default"]);
header("angled", 30.5, 16.5, 0, "bottom", 90, [5,2,6], ["thruhole","black","male",2.54,"silver"],
1.6, false, [true,10,2,"default"]);
usb2("single_up_a", .925, 15.375, 0, "top", 180, [0,10.5,0], [0], 1.6, false, [true,10,2,"default"]);
usb2("single_up_a", 10.395, 15.375, 0, "top", 180, [0,10.5,0], [0], 1.6, false, [true,10,2,"default"]);
usb2("single_up_a", 19.925, 15.375, 0, "top", 180, [0,10.5,0], [0], 1.6, false, [true,10,2,"default"]);
}
}
}
/*
NAME: h3_port_extender
NAME: h3_port_extender_holder
DESCRIPTION: holder for the @mctom's remote h3 port extender
TODO: none

View File

@@ -171,7 +171,7 @@ module add(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask) {
translate([loc_x,loc_y,loc_z]) rotate(rotation) boom_vring(data[0]);
}
if(type == "h3_port_extender") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) h3_port_extender(data[0]);
translate([loc_x,loc_y,loc_z]) rotate(rotation) h3_port_extender(data[0],mask);
}
if(type == "h3_port_extender_holder") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) h3_port_extender_holder(data[1],data[0]);
@@ -183,7 +183,7 @@ module add(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask) {
translate([loc_x,loc_y,loc_z]) rotate(rotation) keyhole(data[0],mask);
}
if(type == "dsub") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) dsub(data[0]);
translate([loc_x,loc_y,loc_z]) rotate(rotation) dsub(data[0], data[1], mask);
}
if(type == "nut_holder") {
translate([loc_x,loc_y,loc_z]) rotate(rotation) nut_holder(data[0], data[1], size_x, size_y, size_z);

View File

@@ -30,6 +30,7 @@
rotation[] = object rotation
parametric[] = parametric movement array
size[] = size array x,y,z
data[] = data filed
mask[0] = true enables component mask
mask[1] = mask length
mask[2] = mask setback

View File

@@ -3335,121 +3335,6 @@
"view": "model",
"wallthick": "2.5"
},
"h3_ultimate": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "h3_ultimate",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.5, 7, 3.6, 10, 4, 4, 0, 0, 1, 4.5, 5]",
"c_fillet": "9",
"case_design": "shell",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "3",
"case_offset_tz": "26",
"case_offset_x": "25",
"case_offset_y": "10",
"case_style": "none",
"cooling": "default",
"exhaust_vents": "none",
"fillet": "0",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"individual_part": "bottom",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_knockout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "h3",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "0",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 18, 3.6, 10, 28, 4, 0, 1, 0, 4.5, 5.1]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2.5"
},
"h3_ultimate2": {
"$fn": "90",
"accessory_highlight": "false",
"accessory_name": "h3_ultimate2",
"adjust": "0.01",
"bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 0, 0, 0, 1, 4.25, 5]",
"bottom_front_left": "0",
"bottom_front_right": "0",
"bottom_rear_left": "0",
"bottom_rear_right": "0",
"bottom_standoff": "[6.75, 7, 3.4, 10, 4, 4, 0, 0, 1, 4.25, 5]",
"c_fillet": "9",
"case_design": "shell",
"case_ext_standoffs": "false",
"case_ffn": "90",
"case_fn": "360",
"case_offset_bz": "4",
"case_offset_tz": "9",
"case_offset_x": "30",
"case_offset_y": "15",
"case_style": "none",
"cooling": "none",
"exhaust_vents": "none",
"fillet": "0",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"lip": "5",
"lower_bottom": "0",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "30",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sata_knockout": "false",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_model": "h3",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "0",
"sidewall_support": "true",
"tol": "0.25",
"top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.25, 5]",
"top_front_left": "0",
"top_front_right": "0",
"top_rear_left": "0",
"top_rear_right": "0",
"top_standoff": "[6.25, 18, 3.6, 10, 20, 2, 0, 1, 0, 4.25, 5]",
"view": "model",
"vu_rotation": "[15, 0, 0]",
"wallthick": "2.5"
},
"h3_shell_drivebox2.5v": {
"$fn": "90",
"accessory_highlight": "false",
@@ -6361,6 +6246,304 @@
"uart_opening": "default",
"view": "model",
"wallthick": "2.5"
},
"h3_ultimate": {
"$fn": "90",
"access_port_location": "[10, 10]",
"access_port_orientation": "landscape",
"access_port_rotation": "0",
"access_port_size": "[30, 70]",
"accessory_highlight": "false",
"accessory_name": "h3_ultimate",
"adj": "0.01",
"bend_allowance": "1",
"bottom_access_port_enable": "false",
"bottom_clearence": "3.5",
"bottom_cover_pattern": "solid",
"bottom_front_left_adjust": "0",
"bottom_front_left_enable": "true",
"bottom_front_left_support": "none",
"bottom_front_right_adjust": "0",
"bottom_front_right_enable": "true",
"bottom_front_right_support": "none",
"bottom_rear_left_adjust": "0",
"bottom_rear_left_enable": "true",
"bottom_rear_left_support": "none",
"bottom_rear_right_adjust": "0",
"bottom_rear_right_enable": "true",
"bottom_rear_right_support": "none",
"bottom_sidewall_support": "true",
"bottom_standoff_diameter": "5.75",
"bottom_standoff_hole_size": "3.4",
"bottom_standoff_insert": "true",
"bottom_standoff_insert_dia": "4.2",
"bottom_standoff_insert_height": "5.1",
"bottom_standoff_pillar": "hex",
"bottom_standoff_reverse": "false",
"bottom_standoff_support_height": "4",
"bottom_standoff_support_size": "10",
"bottom_standoff_type": "countersunk",
"case_design": "shell",
"case_offset_bz": "3",
"case_offset_tz": "26",
"case_offset_x": "25",
"case_offset_y": "10",
"case_style": "none",
"cooling": "default",
"corner_fillet": "3",
"edge_fillet": "0",
"exhaust_vent": "none",
"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": "true",
"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_support_height": "4",
"ext_bottom_standoff_support_size": "10",
"ext_bottom_standoff_type": "countersunk",
"ext_bottom_standoffs": "true",
"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": "3.4",
"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_support_height": "48.51",
"ext_top_standoff_support_size": "10",
"ext_top_standoff_type": "recessed",
"ext_top_standoffs": "true",
"fan_size": "0",
"flat_blank_section": "false",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"individual_part": "bottom",
"lower_bottom": "0",
"material_thickness": "0.5",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "0",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_information": "false",
"sbc_model": "h3",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "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": "false",
"top_front_left_support": "front",
"top_front_right_adjust": "0",
"top_front_right_enable": "false",
"top_front_right_support": "front",
"top_rear_left_adjust": "0",
"top_rear_left_enable": "true",
"top_rear_left_support": "left",
"top_rear_right_adjust": "0",
"top_rear_right_enable": "false",
"top_rear_right_support": "rear",
"top_sidewall_support": "true",
"top_standoff_diameter": "5.75",
"top_standoff_hole_size": "3.4",
"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_support_height": "50",
"top_standoff_support_size": "10",
"top_standoff_type": "recessed",
"uart_opening": "default",
"view": "platter",
"wallthick": "2.5"
},
"h3_ultimate2": {
"$fn": "90",
"access_port_location": "[10, 10]",
"access_port_orientation": "landscape",
"access_port_rotation": "0",
"access_port_size": "[30, 70]",
"accessory_highlight": "false",
"accessory_name": "h3_ultimate2",
"adj": "0.01",
"bend_allowance": "1",
"bottom_access_port_enable": "false",
"bottom_clearence": "3.5",
"bottom_cover_pattern": "solid",
"bottom_front_left_adjust": "0",
"bottom_front_left_enable": "true",
"bottom_front_left_support": "none",
"bottom_front_right_adjust": "0",
"bottom_front_right_enable": "true",
"bottom_front_right_support": "right",
"bottom_rear_left_adjust": "0",
"bottom_rear_left_enable": "true",
"bottom_rear_left_support": "none",
"bottom_rear_right_adjust": "0",
"bottom_rear_right_enable": "true",
"bottom_rear_right_support": "right",
"bottom_sidewall_support": "true",
"bottom_standoff_diameter": "5.75",
"bottom_standoff_hole_size": "3.4",
"bottom_standoff_insert": "true",
"bottom_standoff_insert_dia": "4.2",
"bottom_standoff_insert_height": "5.1",
"bottom_standoff_pillar": "hex",
"bottom_standoff_reverse": "false",
"bottom_standoff_support_height": "4",
"bottom_standoff_support_size": "10",
"bottom_standoff_type": "countersunk",
"case_design": "shell",
"case_offset_bz": "4",
"case_offset_tz": "9",
"case_offset_x": "30",
"case_offset_y": "15",
"case_style": "none",
"cooling": "none",
"corner_fillet": "3",
"edge_fillet": "0",
"exhaust_vent": "none",
"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": "true",
"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_support_height": "4",
"ext_bottom_standoff_support_size": "10",
"ext_bottom_standoff_type": "blind",
"ext_bottom_standoffs": "true",
"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": "none",
"ext_top_sidewall_support": "true",
"ext_top_standoff_diameter": "5.75",
"ext_top_standoff_hole_size": "3.4",
"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_support_height": "30",
"ext_top_standoff_support_size": "10",
"ext_top_standoff_type": "recessed",
"ext_top_standoffs": "true",
"fan_size": "0",
"flat_blank_section": "false",
"floorthick": "2",
"gap": "1.5",
"gpio_opening": "none",
"indents": "true",
"individual_part": "bottom",
"lower_bottom": "0",
"material_thickness": "0.5",
"move_front": "0",
"move_leftside": "0",
"move_rear": "0",
"move_rightside": "0",
"pcb_loc_x": "30",
"pcb_loc_y": "0",
"pcb_loc_z": "0",
"raise_top": "0",
"sbc_bottom_standoffs": "true",
"sbc_highlight": "false",
"sbc_information": "false",
"sbc_model": "h3",
"sbc_off": "false",
"sbc_top_standoffs": "true",
"sidethick": "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": "false",
"top_front_left_support": "none",
"top_front_right_adjust": "0",
"top_front_right_enable": "false",
"top_front_right_support": "none",
"top_rear_left_adjust": "0",
"top_rear_left_enable": "false",
"top_rear_left_support": "none",
"top_rear_right_adjust": "0",
"top_rear_right_enable": "true",
"top_rear_right_support": "right",
"top_sidewall_support": "true",
"top_standoff_diameter": "5.75",
"top_standoff_hole_size": "3.4",
"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_support_height": "30",
"top_standoff_support_size": "10",
"top_standoff_type": "recessed",
"uart_opening": "default",
"view": "model",
"wallthick": "2.5"
}
},
"fileFormatVersion": "1"

View File

@@ -508,87 +508,68 @@ accessory_data = [
"platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],[10,0,44],["recess"],[false,10,2,"default"]], // button top
["h3_ultimate",
"sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening
"sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening
"sub","vent",-3.5,30,19,"top",[0,0,90],["case",false,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],[2,6,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],[2,6,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening
"sub","fan",99,10,48,"top",[0,0,90],["sbc-case_z",true,true,true],[90,0,6],[2],[false,10,2,"default"], // fan opening
"sub","round",3.81,17.78,29,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,26],[0],[false,10,2,"default"], // sub screw hole
"sub","round",3.81,106.19,29,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,26],[0],[false,10,2,"default"], // sub screw hole
"sub","round",106.04,24.77,29,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,26],[0],[false,10,2,"default"], // sub screw hole
"sub","round",106.04,106.2,29,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,26],[0],[false,10,2,"default"], // sub screw hole
"model","h3_port_extender",6,70,18.5,"bottom",[0,0,0],["sbc",true,true,false],[0,0,0],["header"],[false,10,2,"default"], // h3 port extender
"sub","h3_port_extender",6,70,18.5,"top",[0,0,0],["sbc",true,true,false],[0,0,0],["header"],[false,10,2,"default"], // h3 port extender
"model","hk_pwr_button",20,110,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[0,0,0],[0],[true,10,2,"default"], // hk pwr button model
"sub","hk_pwr_button",20,110,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[0,0,0],[0],[false,10,2,"default"], // hk pwr button model
// "add2","button",12.34,106.43,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[10,0,53],["recess"],[true,10,2,"default"], // button
// "add2","button",23.77,106.43,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[10,0,53],["recess"],[true,10,2,"default"], // button
// "model","button_top",12.34,106.43,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[10,0,58],["recess"],[false,10,2,"default"], // button top
// "model","button_top",23.77,106.43,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[10,0,58],["recess"],[false,10,2,"default"], // button top
// "platter","button_top",-20,0,0,"top",[0,0,0],["case",false,false,false],[10,0,58],["recess"],[false,10,2,"default"], // button top
// "platter","button_top",-30,0,0,"top",[0,0,0],["case",false,false,false],[10,0,58],["recess"],[false,10,2,"default"], // button top
"add1","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,true],[100,80,2],["landscape"],[true,10,2,"default"], // access port
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],[100,80,2],["landscape"],[false,10,2,"default"], // access port cover
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],[100,80,2],["landscape"],[false,10,2,"default"], // access port cover
"sub","round",111,34,6.07,"bottom",[0,90,0],["case",true,false,false],[3,0,3],[0],[false,10,2,"default"], // sub hd side screw hole
"sub","round",111,110.6,6.07,"bottom",[0,90,0],["case",true,false,false],[3,0,3],[0],[false,10,2,"default"], // sub hd side screw hole
"add2","hd_vertleft",98,10,1.99,"bottom",[0,0,0],["case",true,true,false],[0,0,0],[2.5,3,"portrait"],[false,10,2,"default"], // add hd holder
"sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],[0,0,0],[2.5,3,"portrait"],[false,10,2,"default"], // sub hd bottom holes
"model","hd25",98,110,2,"bottom",[90,0,-90],["case",true,true,false],[0,0,0],[7],[false,10,2,"default"]], // model 2.5 hd
"sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"],
"sub","vent",111.5,30,58,"top",[0,0,90],["case",true,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"],
"sub","vent",-3.5,30,19,"top",[0,0,90],["case",false,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"],
"sub","vent",111.5,30,28,"top",[0,0,90],["case",true,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"],
"sub","vent",-3.5,30,4,"bottom",[0,0,90],["case",false,false,false],[2,6,4],[1,17,"vertical",1],[false,10,2,"default"],
"sub","vent",111.5,30,4,"bottom",[0,0,90],["case",true,false,false],[2,6,4],[1,17,"vertical",1],[false,10,2,"default"],
"model","hk_pwr_button",20,110,55.25,"top",[0,0,0],["sbc-case_z",true,true,true],[0,0,0],[0],[true,10,2,"default"],
"add2","access_port",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,true],[100,80,2],["landscape"],[true,10,2,"default"],
"model","access_cover",10,30,-0.01,"bottom",[0,0,0],["sbc",true,true,false],[100,80,2],["landscape"],[false,10,2,"default"],
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],[100,80,2],["landscape"],[false,10,2,"default"],
"sub","round",111,34,6.07,"bottom",[0,90,0],["case",true,false,false],[3,0,6],[0],[false,10,2,"default"],
"sub","round",111,110.5,6.07,"bottom",[0,90,0],["case",true,false,false],[3,0,6],[0],[false,10,2,"default"],
"add2","hd_vertleft",98,10,1.99,"bottom",[0,0,0],["case",true,true,false],[0,0,0],[2.5,"portrait"],[false,10,2,"default"],
"sub","hd_vertleft_holes",98,10,-.01,"bottom",[0,0,0],["case",true,true,false],[0,0,0],[2.5,3,"portrait"],[false,10,2,"default"],
"model","hd25",98,110,2,"bottom",[90,0,-90],["case",true,true,false],[0,0,0],[7],[false,10,2,"default"]],
["h3_ultimate2",
"suball","fan",0,25,3,"top",[0,270,0],["case",false,false,false],[60,0,6],[0],[false,10,2,"default"], // sub fan opening
"model","fan_cover",-4,25,3,"top",[0,270,0],["case",false,false,false],[60,0,2],[3],[false,10,2,"default"], // model fan cover
"platter","fan_cover",-100,150,0,"top",[0,0,0],["case",false,false,false],[60,0,2],[0],[false,10,2,"default"], // model fan cover
"model","vent_panel_hex",144,11.77,64,"top",[0,90,0],["case",false,false,false],[62,107.43,3],[5.0,1.6,"y",14],[false,10,2,"default"], // model vent cover
"platter","vent_panel_hex",-200,13.77,0,"top",[0,0,0],["case",false,false,false],[62,107.43,3],[5.0,1.6,"y",14],[false,10,2,"default"], // model vent cover
"suball","rectangle",111,26.77,62,"top",[0,90,0],["case",true,false,false],[58,77.43,4],[[2,2,2,2]],[false,10,2,"default"], // vent opening
"sub","round",111,16.57,57,"top",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"], // vent cover screw hole
"sub","round",111,16.57,9,"bottom",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"], // vent cover screw hole
"sub","round",111,114.4,57,"top",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"], // vent cover screw hole
"sub","round",111,114.4,9,"bottom",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"], // vent cover screw hole
"sub","round",3.81,17.78,35,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,19],[0],[false,10,2,"default"], // sub screw hole
"sub","round",3.81,106.19,35,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,19],[0],[false,10,2,"default"], // sub screw hole
"sub","round",106.04,24.77,35,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,19],[0],[false,10,2,"default"], // sub screw hole
"sub","round",106.04,106.2,35,"top",[0,0,0],["sbc-case_z",true,true,true],[6.5,0,19],[0],[false,10,2,"default"], // sub screw hole
"add2","nut_holder",144,16.57,57,"top",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"], // vent cover nut holder
"add2","nut_holder",144,16.57,9 ,"bottom",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"], // vent cover nut holder
"add2","nut_holder",144,114.4,57,"top",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"], // vent cover nut holder
"add2","nut_holder",144,114.4,9 ,"bottom",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"], // vent cover nut holder
"sub","rectangle",-4,100.5,3,"top",[0,0,0],["sbc-case_z",true,true,true],[14,4,20],[[1,1,1,1]],[false,10,2,"default"], // sub rectangle
"sub","rectangle",100.5,17,30,"top",[0,0,0],["sbc-case_z",true,true,true],[9,4,10],[[1,1,1,1]],[false,10,2,"default"], // sub rectangle
"add1","round",23,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",71,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",-31.5,3,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",-31.5,77,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",-10,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",101,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",91.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",66.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",42.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",16.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",-1,-16.5,9,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",-29,109,9,"top",[0,0,0],["case",true,true,true],[3,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",-29,-14,9,"top",[0,0,0],["case",true,true,true],[3,0,44],[0],[false,10,2,"default"], // wall support
"add1","round",109,109,9,"top",[0,0,0],["case",true,true,true],[3,0,44],[0],[false,10,2,"default"], // wall support
"add1","rectangle",2,7,49,"top",[0,0,0],["case",true,true,true],[4,80,3],[[.25,.25,.25,.25]],[false,10,2,"default"], // ceiling support
"add1","rectangle",27,-16.5,49,"top",[0,0,0],["case",true,true,true],[4,130,3],[[.25,.25,.25,.25]],[false,10,2,"default"], // ceiling support
"add1","rectangle",52,-16.5,49,"top",[0,0,0],["case",true,true,true],[4,130,3],[[.25,.25,.25,.25]],[false,10,2,"default"], // ceiling support
"add1","rectangle",77,-16.5,49,"top",[0,0,0],["case",true,true,true],[4,130,3],[[.25,.25,.25,.25]],[false,10,2,"default"], // ceiling support
"add1","rectangle",104,7,49,"top",[0,0,0],["case",true,true,true],[4,80,3],[[.25,.25,.25,.25]],[false,10,2,"default"], // ceiling support
"model","h3_port_extender",31,119,4,"top",[0,0,-90],["case",true,false,true],[0,0,0],["remote"],[false,10,2,"default"], // port extender model
"sub","h3_port_extender",31,119,4,"top",[0,0,-90],["case",true,false,true],[0,0,0],["remote"],[false,10,2,"default"], // port extender openings
"model","h3_port_extender_holder",31,119,4,"top",[0,0,-90],["case",true,false,true],[0,0,0],[2.5,"both"],[false,10,2,"default"], // port extender holder
"platter","h3_port_extender_holder",-170,150,0,"top",[0,0,-90],["case",true,false,true],[0,0,0],[2.5,"remote"],[false,10,2,"default"], // port extender holder
"model","hk_pwr_button",11,114,55.25,"top",[0,0,180],["case",false,false,true],[0,0,0],[0],[true,10,2,"default"], // hk pwr button model
"sub","hk_pwr_button",11,114,55.25,"top",[0,0,0],["case",false,false,true],[0,0,0],[0],[false,10,2,"default"], // hk pwr button opening
"model","dsub",12,-1,48,"top",[0,90,0],["case",false,false,false],[0,0,0],[[9,"male",4]],[false,10,2,"default"], // db9 model
"sub","dsub",12,-1,48,"top",[0,90,0],["case",false,false,false],[0,0,0],[[9,"male",4]],[false,10,2,"default"], // db9 model
"add1","access_port",19,20,-0.01,"bottom",[0,0,0],["sbc",true,true,true],[81,100,2],["portrait"],[true,10,2,"default"], // access port
"model","access_cover",19,20,-0.01,"bottom",[0,0,0],["sbc",true,true,false],[81,100,2],["portrait"],[false,10,2,"default"], // access port cover
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],[81,100,2],["portrait"],[false,10,2,"default"]], // access port cover
"suball","fan",0,25,3,"top",[0,270,0],["case",false,false,false],[60,0,6],[0],[false,10,2,"default"],
"model","fan_cover",-4,25,3,"top",[0,270,0],["case",false,false,false],[60,0,2],[3],[false,10,2,"default"],
"platter","fan_cover",-100,150,0,"top",[0,0,0],["case",false,false,false],[60,0,2],[3],[false,10,2,"default"],
// side panel
"model","vent_panel_hex",144,11.77,64,"top",[0,90,0],["case",false,false,false],[62,107.43,3],[5.0,1.6,"y",14],[false,10,2,"default"],
"platter","vent_panel_hex",-200,13.77,0,"top",[0,0,0],["case",false,false,false],[62,107.43,3],[5.0,1.6,"y",14],[false,10,2,"default"],
"suball","rectangle",111,26.77,62,"top",[0,90,0],["case",true,false,false],[58,77.43,4],[[2,2,2,2]],[false,10,2,"default"],
"sub","round",111,16.57,57,"top",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"],
"sub","round",111,16.57,9,"bottom",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"],
"sub","round",111,114.4,57,"top",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"],
"sub","round",111,114.4,9,"bottom",[0,90,0],["case",true,false,false],[7,0,4],[0],[false,10,2,"default"],
"add2","nut_holder",144,16.57,57,"top",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"],
"add2","nut_holder",144,16.57,9 ,"bottom",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"],
"add2","nut_holder",144,114.4,57,"top",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"],
"add2","nut_holder",144,114.4,9 ,"bottom",[0,270,0],["case",false,false,false],[8,16,5],["m3","sloped"],[false,10,2,"default"],
// clearence trim
"sub","rectangle",100.5,17,25,"top",[0,0,0],["sbc-case_z",true,true,true],[9,4,15],[[1,1,1,1]],[false,10,2,"default"],
// front wall support
"add1","round",23,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",71,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",101,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",-10,111.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
// fan side wall support
"add1","round",-31.5,3,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",-31.5,77,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
// rear wall support
"add1","round",91.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",66.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",42.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",16.25,-16.5,10,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
"add1","round",-1,-16.5,9,"top",[0,0,0],["case",true,true,true],[4,0,44],[0],[false,10,2,"default"],
// top stiffeners
"add1","rectangle",2,7,51,"top",[0,0,0],["case",true,true,true],[4,80,3],[[.25,.25,.25,.25]],[false,10,2,"default"],
"add1","rectangle",27,-16.5,51,"top",[0,0,0],["case",true,true,true],[4,130,3],[[.25,.25,.25,.25]],[false,10,2,"default"],
"add1","rectangle",52,-16.5,51,"top",[0,0,0],["case",true,true,true],[4,130,3],[[.25,.25,.25,.25]],[false,10,2,"default"],
"add1","rectangle",77,-16.5,51,"top",[0,0,0],["case",true,true,true],[4,130,3],[[.25,.25,.25,.25]],[false,10,2,"default"],
"add1","rectangle",104,7,51,"top",[0,0,0],["case",true,true,true],[4,80,3],[[.25,.25,.25,.25]],[false,10,2,"default"],
"model","h3_port_extender",63.5,117,4,"top",[90,0,180],["case",true,false,true],[0,0,0],["remote"],[true,15,5,"default"],
"model","h3_port_extender_holder",31,119,4,"top",[0,0,-90],["case",true,false,true],[0,0,0],[2.5,"both"],[false,10,2,"default"],
"platter","h3_port_extender_holder",-170,150,0,"top",[0,0,-90],["case",true,false,true],[0,0,0],[2.5,"remote"],[false,10,2,"default"],
"model","hk_pwr_button",18,113,55.25,"top",[0,0,180],["case",false,false,true],[0,0,0],[0],[true,10,2,"default"],
"model","dsub",18,-1,46,"top",[90,90,0],["case",false,false,false],[0,0,0],["db9","female"],[true,10,2,"default"],
"add2","access_port",19,20,-0.01,"bottom",[0,0,0],["sbc",true,true,true],[81,100,2],["portrait"],[true,10,2,"default"],
"model","access_cover",19,20,-0.01,"bottom",[0,0,0],["sbc",true,true,false],[81,100,2],["portrait"],[false,10,2,"default"],
"platter","access_cover",-110,30,0,"bottom",[0,0,0],["case",false,false,false],[81,100,2],["portrait"],[false,10,2,"default"]],
["h3_shell_drivebox2.5v",
"sub","vent",-3.5,30,58,"top",[0,0,90],["case",false,false,false],[2,12,4],[1,17,"vertical",1],[false,10,2,"default"], // vent opening