From 7b03aa1922f655773008f6fee7a952ceeb4661d6 Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Sat, 24 Feb 2024 12:30:56 -0500 Subject: [PATCH] plumed in mask for add and sub parametric moves --- mod/add.scad | 40 ++++--- mod/case_bottom.scad | 75 ++++++------ mod/case_side.scad | 63 +++++----- mod/case_top.scad | 53 ++++----- mod/parametric_move.scad | 244 +++++++++++++++------------------------ mod/sub.scad | 40 ++++--- sbc_case_builder.scad | 22 ++-- 7 files changed, 236 insertions(+), 301 deletions(-) diff --git a/mod/add.scad b/mod/add.scad index 6ae9286..ea17d8a 100644 --- a/mod/add.scad +++ b/mod/add.scad @@ -20,24 +20,36 @@ DESCRIPTION: places additive objects TODO: none - USAGE: add(type, loc_x, loc_y, loc_z, face, rotation, size_x, size_y, size_z, data_1, data_2, data_3, data_4) + USAGE: add(type, loc_x, loc_y, loc_z, face, rotation, size[], data[], mask[]) - type = - loc_x = - loc_y = - loc_z = - face = - rotation = - size[0] = size_x - size[1] = size_y - size[2] = size_z - data[0] = - data[1] = - data[2] = + type = component type + loc_x = x location placement + loc_y = y location placement + loc_z = z location placement + face = "top", "bottom", "left", "right", "front", "rear" + rotation[] = object rotation + parametric[] = parametric movement array + size[] = size array x,y,z + mask[0] = true enables component mask + mask[1] = mask length + mask[2] = mask setback + mask[3] = mstyle "default" */ -module add(type, loc_x, loc_y, loc_z, face, rotation, size_x, size_y, size_z, data_1, data_2, data_3, data_4) { +module add(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask) { + + size_x = size[0]; + size_y = size[1]; + size_z = size[2]; + data_1 = data[0]; + data_2 = data[1]; + data_3 = data[2]; + data_4 = data[3]; + enablemask = mask[0]; + mlen = mask[1]; + msetback = mask[2]; + mstyle = mask[3]; if(type == "rectangle") { translate([loc_x,loc_y,loc_z]) rotate(rotation) slab_r([size_x,size_y,size_z],data_4); diff --git a/mod/case_bottom.scad b/mod/case_bottom.scad index 7ea043a..f94ecb9 100644 --- a/mod/case_bottom.scad +++ b/mod/case_bottom.scad @@ -263,17 +263,12 @@ module case_bottom(case_design) { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if(class == "add1" && face == "bottom") { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric, size, data, mask); } } } @@ -557,50 +552,51 @@ module case_bottom(case_design) { data_2 = accessory_data[a[0]][i+9][1]; data_3 = accessory_data[a[0]][i+9][2]; data_4 = accessory_data[a[0]][i+9][3]; + mask = accessory_data[a[0]][i+10]; if ((class == "sub" && face == "bottom") || class == "suball") { if(accessory_highlight == false) { - parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_sub(type, loc_x, loc_y, loc_z, face, rotation, parametric, + [size_x,size_y,size_z],[data_1,data_2,data_3,data_4], mask); } else { #parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + [size_x,size_y,size_z],[data_1,data_2,data_3,data_4], mask); } } // create openings for additive if (class == "add2" && face == "bottom" && type == "standoff") { parametric_move_sub("round",loc_x,loc_y,loc_z-.1,face,rotation,parametric, - 6.5,size_y,floorthick+1,data_1,data_2,data_3,data_4); + [6.5,size_y,floorthick+1],[data_1,data_2,data_3,data_4],mask); } if ((class == "add1" || class == "add2") && type == "uart_holder") { if(accessory_highlight == false) { parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + [0,0,0],[data_1,data_2,data_3,data_4],mask); } else { #parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + [0,0,0],[data_1,data_2,data_3,data_4],mask); } } if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") { parametric_move_sub("rectangle",loc_x+1,loc_y+1.75,loc_z+25.5,face,rotation,parametric, - 26.5,wallthick+gap+4,15,data_1,data_2,data_3,[.1,.1,.1,.1]); + [26.5,wallthick+gap+4,15],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); } if ((class == "add1" || class == "add2") && face == "bottom" && type == "access_port") { if(data_3 == "landscape") { if(rotation[2] == 180) { parametric_move_sub("rectangle",loc_x-6+size_x,loc_y+.5+size_y,loc_z-adj,face,rotation, - parametric,size_x-17,size_y-1,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x-17,size_y-1,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x-size_x+12.5+size_x,loc_y-(size_y/2)+6+size_y,loc_z-adj, - face,rotation,parametric,5.5,10.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + face,rotation,parametric,[5.5,10.5,floorthick+.12],[data_1,data_2,data_3,[5.5,5.5,5.5,5.5]],mask); } else { parametric_move_sub("rectangle",loc_x+6,loc_y-.5,loc_z-adj,face,rotation, - parametric,size_x-17,size_y-1,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x-17,size_y-1,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x+size_x-12.5,loc_y+(size_y/2)-6,loc_z-adj,face,rotation, - parametric,5.5,10.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + parametric,[5.5,10.5,floorthick+.12],[data_1,data_2,data_3,[5.5,5.5,5.5,5.5]],mask); } } @@ -608,48 +604,50 @@ module case_bottom(case_design) { if(rotation[2] == 180) { if(data_3 == "portrait") { parametric_move_sub("rectangle",loc_x+size_x-.5,loc_y+size_y-5.75,loc_z-adj,face, - rotation,parametric,size_x-1,size_y-17,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + rotation,parametric,[size_x-1,size_y-17,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x-(size_x/2)+5+size_x,loc_y-size_y+12.5+size_y, - loc_z-adj,face,rotation,parametric,10.5,5.5,floorthick+.12,data_1,data_2,data_3, - [5.5,5.5,5.5,5.5]); + loc_z-adj,face,rotation,parametric,[10.5,5.5,floorthick+.12],[data_1,data_2,data_3, + [5.5,5.5,5.5,5.5]],mask); } else { parametric_move_sub("rectangle",loc_x-.5,loc_y-5.75,loc_z-adj,face,rotation, - parametric,size_x-1,size_y-17,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x-1,size_y-17,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x-(size_x/2)+5,loc_y-size_y+12.5,loc_z-adj,face, - rotation,parametric,10.5,5.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + rotation,parametric,[10.5,5.5,floorthick+.12],[data_1,data_2,data_3,[5.5,5.5,5.5,5.5]],mask); } } else { parametric_move_sub("rectangle",loc_x+.5,loc_y+5.75,loc_z-adj,face,rotation, - parametric,size_x-1,size_y-17,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x-1,size_y-17,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x+(size_x/2)-5,loc_y+size_y-12.5,loc_z-adj,face,rotation, - parametric,10.5,5.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + parametric,[10.5,5.5,floorthick+.12],[data_1,data_2,data_3,[5.5,5.5,5.5,5.5]],mask); } } } if ((class == "model") && face == "bottom" && type == "h2_netcard") { parametric_move_sub("rectangle",loc_x+25,loc_y-6,loc_z-14,face,rotation, - parametric,68.5,wallthick+3,14.5,data_1,data_2,data_3,[1,1,1,1]); + parametric,[68.5,wallthick+3,14.5],[data_1,data_2,data_3,[1,1,1,1]],mask); } if ((class == "add1" || class == "add2") && face == "bottom" && type == "button") { if(data_3 == "recess") { #parametric_move_sub("sphere",loc_x,loc_y,loc_z,face,rotation, - parametric,size_x-1,size_y,size_z,data_1,data_2,data_3,0); + parametric,[size_x-1,size_y,size_z],[data_1,data_2,data_3,0],mask); } if(data_3 == "cutout") { parametric_move_sub("rectangle",loc_x+10,loc_y+4,loc_z-adj,face,rotation, - parametric,size_x+2,size_y+1,size_z+2*adj,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x+2,size_y+1,size_z+2*adj],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); } } } } // sbc openings if(sbc_highlight == true) { - #translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); + #translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); } else { - translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); + translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); } // indents if(indents == true) { @@ -686,17 +684,12 @@ module case_bottom(case_design) { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if(class == "add2" && face == "bottom") { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,size,data,mask); } } } diff --git a/mod/case_side.scad b/mod/case_side.scad index b8c4189..6896cad 100644 --- a/mod/case_side.scad +++ b/mod/case_side.scad @@ -207,17 +207,12 @@ module case_side(case_design, case_style, side) { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if (class == "add1" && face == side) { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,size,data,mask); } } } @@ -239,83 +234,86 @@ module case_side(case_design, case_style, side) { data_2 = accessory_data[a[0]][i+9][1]; data_3 = accessory_data[a[0]][i+9][2]; data_4 = accessory_data[a[0]][i+9][3]; + mask = accessory_data[a[0]][i+10]; if ((class == "sub" && face == side) || class == "suball") { if(accessory_highlight == false) { parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + [size_x,size_y,size_z],[data_1,data_2,data_3,data_4],mask); } else { #parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + [size_x,size_y,size_z],[data_1,data_2,data_3,data_4],mask); } } // create openings for additive if ((class == "sub" && face == "bottom") || class == "suball") { if(accessory_highlight == false) { parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + [size_x,size_y,size_z],[data_1,data_2,data_3,data_4],mask); } else { #parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + [size_x,size_y,size_z],[data_1,data_2,data_3,data_4],mask); } } // create openings for additive if (class == "add2" && face == "bottom" && type == "standoff") { parametric_move_sub("round",loc_x,loc_y,-.1,face,rotation,parametric, - 6.5,size_y,floorthick+1,data_1,data_2,data_3,data_4); + [6.5,size_y,floorthick+1],[data_1,data_2,data_3,data_4],mask); } if ((class == "add1" || class == "add2") && face == "bottom" && type == "uart_holder") { if(accessory_highlight == false) { parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + [0,0,0],[data_1,data_2,data_3,data_4],mask); } else { #parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + [0,0,0],[data_1,data_2,data_3,data_4],mask); } } if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") { parametric_move_sub("rectangle",loc_x+1,loc_y+1.75,loc_z+25.5,face,rotation, - parametric,26.5,wallthick+gap+4,15,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[26.5,wallthick+gap+4,15],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); } if ((class == "add1" || class == "add2") && face == "bottom" && type == "access_port") { if(data_3 == "landscape") { parametric_move_sub("rectangle",loc_x+6,loc_y-.5,loc_z-adj,face,rotation, - parametric,size_x-17,size_y-1,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x-17,size_y-1,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x+size_x-12.5,loc_y+(size_y/2)-6,loc_z-adj,face,rotation, - parametric,5.5,10.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + parametric,[5.5,10.5,floorthick+.12],[data_1,data_2,data_3,[5.5,5.5,5.5,5.5]],mask); } else { parametric_move_sub("rectangle",loc_x+.5,loc_y+5.75,loc_z-adj,face,rotation,parametric, - size_x-1,size_y-17,floorthick+1,data_1,data_2,data_3,[.1,.1,.1,.1]); + [size_x-1,size_y-17,floorthick+1],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); parametric_move_sub("rectangle",loc_x+(size_x/2)-5,loc_y+size_y-12.5,loc_z-adj,face,rotation, - parametric,10.5,5.5,floorthick+.12,data_1,data_2,data_3,[5.5,5.5,5.5,5.5]); + parametric,[10.5,5.5,floorthick+.12],[data_1,data_2,data_3,[5.5,5.5,5.5,5.5]],mask); } } if ((class == "model") && face == "bottom" && type == "h2_netcard") { parametric_move_sub("rectangle",loc_x+25,loc_y-6,loc_z-14,face,rotation, - parametric,68.5,wallthick+3,14.5,data_1,data_2,data_3,[1,1,1,1]); + parametric,[68.5,wallthick+3,14.5],[data_1,data_2,data_3,[1,1,1,1]],mask); } if ((class == "add1" || class == "add2") && face == "bottom" && type == "button") { if(data_3 == "recess") { parametric_move_sub("sphere",loc_x,loc_y,loc_z,face,rotation, - parametric,size_x-1,size_y,size_z,data_1,data_2,data_3,0); + parametric,[size_x-1,size_y,size_z],[data_1,data_2,data_3,0],mask); } if(data_3 == "cutout") { parametric_move_sub("rectangle",loc_x+10,loc_y+4,loc_z-adj,face,rotation, - parametric,size_x+2,size_y+1,size_z+2*adj,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x+2,size_y+1,size_z+2*adj],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); } } } } // sbc openings if(sbc_highlight == true) { - #translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); + #translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); } else { - translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); + translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); } // indents if(indents == true) { @@ -344,17 +342,12 @@ module case_side(case_design, case_style, side) { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if (class == "add2" && face == side) { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,size,data,mask); } } } diff --git a/mod/case_top.scad b/mod/case_top.scad index b7d9334..3a8fa1f 100644 --- a/mod/case_top.scad +++ b/mod/case_top.scad @@ -256,17 +256,12 @@ module case_top(case_design) { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if (class == "add1" && face == "top") { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation, - parametric,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,size,data,mask); } } } @@ -497,61 +492,64 @@ module case_top(case_design) { data_2 = accessory_data[a[0]][i+9][1]; data_3 = accessory_data[a[0]][i+9][2]; data_4 = accessory_data[a[0]][i+9][3]; + mask = accessory_data[a[0]][i+10]; if ((class == "sub" && face == "top") || class == "suball") { if(accessory_highlight == false) { parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation, - parametric,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric,[size_x,size_y,size_z],[data_1,data_2,data_3,data_4],mask); } else { #parametric_move_sub(type,loc_x,loc_y,loc_z,face,rotation, - parametric,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric,[size_x,size_y,size_z],[data_1,data_2,data_3,data_4],mask); } } // create openings for additive if (class == "add2" && face == "top" && type == "standoff") { parametric_move_sub("round",loc_x,loc_y,loc_z,face,rotation,parametric, - 6.5,size_y,floorthick+1,data_1,data_2,data_3,data_4); + [6.5,size_y,floorthick+1],[data_1,data_2,data_3,data_4],mask); } if ((class == "add1" || class == "add2") && face == "bottom" && type == "uart_holder") { if(accessory_highlight == false) { parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + [0,0,0],[data_1,data_2,data_3,data_4],mask); } else { #parametric_move_sub("microusb",loc_x+5.25,loc_y-5,loc_z+4,face,rotation,parametric, - 0,0,0,data_1,data_2,data_3,data_4); + [0,0,0],[data_1,data_2,data_3,data_4],mask); } } if ((class == "add1" || class == "add2") && face == "bottom" && type == "hc4_oled_holder") { parametric_move_sub("rectangle",loc_x+1,loc_y+1.75,loc_z+26,face,rotation, - parametric,26.5,wallthick+gap+4,14.5,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[26.5,wallthick+gap+4,14.5],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); } if ((class == "add1" || class == "add2") && face == "top" && type == "button") { if(data_3 == "recess") { parametric_move_sub("sphere",loc_x,loc_y,loc_z,face,rotation, - parametric,size_x-1,size_y,size_z,data_1,data_2,data_3,0); + parametric,[size_x-1,size_y,size_z],[data_1,data_2,data_3,0],mask); } if(data_3 == "cutout") { parametric_move_sub("rectangle",loc_x+10,loc_y+4,loc_z-adj,face,rotation, - parametric,size_x+2,size_y+1,size_z+2*adj,data_1,data_2,data_3,[.1,.1,.1,.1]); + parametric,[size_x+2,size_y+1,size_z+2*adj],[data_1,data_2,data_3,[.1,.1,.1,.1]],mask); } } if (class == "model" && face == "bottom" && type == "hk_boom" && rotation[0] == 90 && rotation[1] == 0 && rotation[2] == 0) { parametric_move_sub("round",loc_x+11,loc_y-4,loc_z,face,[0,0,0], - parametric,5,size_y,80,data_1,data_2,data_3,data_4); + parametric,[5,size_y,80],[data_1,data_2,data_3,data_4],mask); parametric_move_sub("slot",loc_x+37.5,loc_y-4.75,loc_z,face,[0,0,0], - parametric,6,14,80,data_1,data_2,data_3,data_4); + parametric,[6,14,80],[data_1,data_2,data_3,data_4],mask); } } } // sbc openings if(sbc_highlight == true) { - #translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); + #translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); } else { - translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); + translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z-adj]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, true); } // indents if(indents == true) { @@ -590,17 +588,12 @@ module case_top(case_design) { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if (class == "add2" && face == "top") { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,size,data,mask); } } } diff --git a/mod/parametric_move.scad b/mod/parametric_move.scad index bcb19c3..c7554b8 100644 --- a/mod/parametric_move.scad +++ b/mod/parametric_move.scad @@ -20,170 +20,138 @@ DESCRIPTION: places parametric additive objects TODO: none - USAGE: parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric[], size_x, size_y, size_z, data_1, data_2, data_3, data_4) + USAGE: parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric[], size[], data[], mask[]) - type = - loc_x = - loc_y = - loc_z = - face = - rotation = - parametric[] = - size[0] = size_x - size[1] = size_y - size[2] = size_z - data[0] = - data[1] = - data[2] = - data[3] = + type = component type + loc_x = x location placement + loc_y = y location placement + loc_z = z location placement + face = "top", "bottom", "left", "right", "front", "rear" + rotation[] = object rotation + parametric[] = parametric movement array + size[] = size array x,y,z + mask[0] = true enables component mask + mask[1] = mask length + mask[2] = mask setback + mask[3] = mstyle "default" */ -module parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric, size_x, size_y, size_z, data_1, data_2, data_3, data_4) { +module parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric, size, data, mask) { // absolute no parametrics if(parametric[1] == false && parametric[2] == false && parametric[3] == false) { - add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask); } // x axis accessory parametrics if(parametric[1] == true && parametric[2] == false && parametric[3] == false) { if(parametric[0] == "case") { - add(type,loc_x+case_offset_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x+pcb_loc_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y, loc_z, face, rotation, size, data, mask); } } // y axis accessory parametrics if(parametric[1] == false && parametric[2] == true && parametric[3] == false) { if(parametric[0] == "case") { - add(type,loc_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x,loc_y+pcb_loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+pcb_loc_y, loc_z, face, rotation, size, data, mask); } } // z axis accessory parametrics if(parametric[1] == false && parametric[2] == false && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - add(type,loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - add(type,loc_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - add(type,loc_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x,loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - add(type,loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - add(type,loc_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } // xy axis accessory parametrics if(parametric[1] == true && parametric[2] == true && parametric[3] == false) { if(parametric[0] == "case") { - add(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z, face, rotation, size, data, mask); } } // xz axis accessory parametrics if(parametric[1] == true && parametric[2] == false && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - add(type,loc_x+case_offset_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - add(type,loc_x+case_offset_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - add(type,loc_x+case_offset_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x+pcb_loc_x,loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - add(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - add(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } // yz axis accessory parametrics if(parametric[1] == false && parametric[2] == true && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - add(type,loc_x,loc_y+case_offset_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+case_offset_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - add(type,loc_x,loc_y+case_offset_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+case_offset_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - add(type,loc_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+pcb_loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - add(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x,loc_y+pcb_loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - add(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y+pcb_loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } // xyz axis accessory parametrics if(parametric[1] == true && parametric[2] == true && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - add(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - add(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - add(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - add(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } } @@ -194,170 +162,138 @@ module parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric DESCRIPTION: places parametric subtractive objects TODO: none - USAGE: parametric_move_sub(type, loc_x, loc_y, loc_z, face, rotation, parametric[], size_x, size_y, size_z, data_1, data_2, data_3, data_4) + USAGE: parametric_move_sub(type, loc_x, loc_y, loc_z, face, rotation, parametric[], size[], data[], mask[]) - type = - loc_x = - loc_y = - loc_z = - face = - rotation = - parametric[] = - size[0] = size_x - size[1] = size_y - size[2] = size_z - data[0] = - data[1] = - data[2] = - data[3] = + type = component type + loc_x = x location placement + loc_y = y location placement + loc_z = z location placement + face = "top", "bottom", "left", "right", "front", "rear" + rotation[] = object rotation + parametric[] = parametric movement array + size[] = size array x,y,z + mask[0] = true enables component mask + mask[1] = mask length + mask[2] = mask setback + mask[3] = mstyle "default" */ -module parametric_move_sub(type, loc_x, loc_y, loc_z, face, rotation, parametric, size_x, size_y, size_z, data_1, data_2, data_3, data_4) { +module parametric_move_sub(type, loc_x, loc_y, loc_z, face, rotation, parametric, size, data, mask) { // absolute no parametrics if(parametric[1] == false && parametric[2] == false && parametric[3] == false) { - sub(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask); } // x axis accessory parametrics if(parametric[1] == true && parametric[2] == false && parametric[3] == false) { if(parametric[0] == "case") { - sub(type,loc_x+case_offset_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x+pcb_loc_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y, loc_z, face, rotation, size, data, mask); } } // y axis accessory parametrics if(parametric[1] == false && parametric[2] == true && parametric[3] == false) { if(parametric[0] == "case") { - sub(type,loc_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x,loc_y+pcb_loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+pcb_loc_y, loc_z, face, rotation, size, data, mask); } } // z axis accessory parametrics if(parametric[1] == false && parametric[2] == false && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - sub(type,loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - sub(type,loc_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - sub(type,loc_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x,loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - sub(type,loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - sub(type,loc_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } // xy axis accessory parametrics if(parametric[1] == true && parametric[2] == true && parametric[3] == false) { if(parametric[0] == "case") { - sub(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y,loc_z, face, rotation, size, data, mask); } } // xz axis accessory parametrics if(parametric[1] == true && parametric[2] == false && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - sub(type,loc_x+case_offset_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - sub(type,loc_x+case_offset_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - sub(type,loc_x+case_offset_x,loc_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x+pcb_loc_x,loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - sub(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - sub(type,loc_x+pcb_loc_x,loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } // yz axis accessory parametrics if(parametric[1] == false && parametric[2] == true && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - sub(type,loc_x,loc_y+case_offset_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+case_offset_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - sub(type,loc_x,loc_y+case_offset_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+case_offset_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - sub(type,loc_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+pcb_loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - sub(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+pcb_loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - sub(type,loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x, loc_y+pcb_loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } // xyz axis accessory parametrics if(parametric[1] == true && parametric[2] == true && parametric[3] == true) { if(parametric[0] == "case" && face == "top") { - sub(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face == "bottom") { - sub(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "case" && face != "bottom" && face != "top") { - sub(type,loc_x+case_offset_x,loc_y+case_offset_y,loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+case_offset_x, loc_y+case_offset_y, loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc") { - sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+pcb_loc_z, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z+pcb_loc_z, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "top") { - sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_tz+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z+case_offset_tz+case_offset_bz, face, rotation, size, data, mask); } if(parametric[0] == "sbc-case_z" && face == "bottom") { - sub(type,loc_x+pcb_loc_x,loc_y+pcb_loc_y,loc_z+case_offset_bz, - face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + sub(type, loc_x+pcb_loc_x, loc_y+pcb_loc_y, loc_z+case_offset_bz, face, rotation, size, data, mask); } } } diff --git a/mod/sub.scad b/mod/sub.scad index db320ff..1872e52 100644 --- a/mod/sub.scad +++ b/mod/sub.scad @@ -20,24 +20,36 @@ DESCRIPTION: places subtractive objects TODO: none - USAGE: sub(type, loc_x, loc_y, loc_z, face, rotation, size_x, size_y, size_z, data_1, data_2, data_3, data_4) + USAGE: sub(type, loc_x, loc_y, loc_z, face, rotation, size[], data[], mask[]) - type = - loc_x = - loc_y = - loc_z = - face = - rotation = - size[0] = size_x - size[1] = size_y - size[2] = size_z - data[0] = - data[1] = - data[2] = + type = component type + loc_x = x location placement + loc_y = y location placement + loc_z = z location placement + face = "top", "bottom", "left", "right", "front", "rear" + rotation[] = object rotation + parametric[] = parametric movement array + size[] = size array x,y,z + mask[0] = true enables component mask + mask[1] = mask length + mask[2] = mask setback + mask[3] = mstyle "default" */ -module sub(type, loc_x, loc_y, loc_z, face, rotation, size_x, size_y, size_z, data_1, data_2, data_3, data_4) { +module sub(type, loc_x, loc_y, loc_z, face, rotation, size, data, mask) { + + size_x = size[0]; + size_y = size[1]; + size_z = size[2]; + data_1 = data[0]; + data_2 = data[1]; + data_3 = data[2]; + data_4 = data[3]; + enablemask = mask[0]; + mlen = mask[1]; + msetback = mask[2]; + mstyle = mask[3]; if(type == "rectangle") { translate([loc_x,loc_y,loc_z]) rotate(rotation) slab_r([size_x,size_y,size_z],data_4); diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index 177cc79..08245ca 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -298,9 +298,10 @@ if (view == "platter") { data_2 = accessory_data[a[0]][i+9][1]; data_3 = accessory_data[a[0]][i+9][2]; data_4 = accessory_data[a[0]][i+9][3]; + mask = accessory_data[a[0]][i+10]; if (class == "platter" && type != "button_top") { - add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z, face, rotation, [size_x, size_y, size_z], [data_1, data_2, data_3, data_4], mask); } if (class == "platter" && type == "button_top") { translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_3, size_x, size_z); @@ -574,22 +575,16 @@ if (view == "model") { face = accessory_data[a[0]][i+5]; rotation = accessory_data[a[0]][i+6]; parametric = accessory_data[a[0]][i+7]; - size_x = accessory_data[a[0]][i+8][0]; - size_y = accessory_data[a[0]][i+8][1]; - size_z = accessory_data[a[0]][i+8][2]; - data_1 = accessory_data[a[0]][i+9][0]; - data_2 = accessory_data[a[0]][i+9][1]; - data_3 = accessory_data[a[0]][i+9][2]; - data_4 = accessory_data[a[0]][i+9][3]; + size = accessory_data[a[0]][i+8]; + data = accessory_data[a[0]][i+9]; + mask = accessory_data[a[0]][i+10]; if (class == "model" && face == "top" && raise_top > -1) { - parametric_move_add(type,loc_x,loc_y,loc_z+raise_top,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type, loc_x, loc_y, loc_z+raise_top, face, rotation, parametric, size, data, mask); } else { if (class == "model"&& face != "top" ) { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric, - size_x,size_y,size_z,data_1,data_2,data_3,data_4); + parametric_move_add(type, loc_x, loc_y, loc_z, face, rotation, parametric, size, data, mask); } } } @@ -692,9 +687,10 @@ if (view == "part") { data_2 = accessory_data[a[0]][i+9][1]; data_3 = accessory_data[a[0]][i+9][2]; data_4 = accessory_data[a[0]][i+9][3]; + mask = accessory_data[a[0]][i+10]; if (class == "platter" && type != "button_top") { - add(type,loc_x,loc_y,loc_z,face,rotation,size_x,size_y,size_z,data_1,data_2,data_3,data_4); + add(type, loc_x, loc_y, loc_z, face, rotation, [size_x, size_y, size_z], [data_1, data_2, data_3, data_4], mask); } if (class == "platter" && type == "button_top") { translate([loc_x,loc_y,loc_z+1.25]) rotate([-90,0,0]) button_plunger(data_3, size_x, size_z);