| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 | 
							- include <../config/laptop_pocket.scad>
 
- include <../config/thread.scad>
 
- include <../config/wall.scad>
 
- include <../config/cord.scad>
 
- include <../config/hole.scad>
 
- include <thread.scad>
 
- include <hole.scad>
 
- module laptop_pocket_object() {
 
-     module back_shape() {
 
-         handle_height = laptop_pocket_handle_back_height;
 
-         handle_width = laptop_pocket_handle_width;
 
-         width = laptop_pocket_width;
 
-         height = laptop_pocket_height;
 
-         rounding = laptop_pocket_rounding;
 
-         
 
-         module corner(x, y) {
 
-             translate([x, y]) {
 
-                 circle(r = rounding);   
 
-             }
 
-         }
 
-         module handle(reverse = false) {
 
-             move_left_x = width / 2 - rounding;
 
-             move_right_x = move_left_x - handle_width + rounding * 2;
 
-             move_y = handle_height / 2 - rounding;
 
-             hull() {
 
-                 corner(reverse ? move_left_x : -move_left_x, move_y);
 
-                 corner(reverse ? move_right_x : -move_right_x, move_y);
 
-                 corner(reverse ? move_left_x : -move_left_x, -move_y);
 
-                 corner(reverse ? move_right_x : -move_right_x, -move_y);
 
-             }
 
-         }
 
-         module center(scale_x = 0, scale_y = 0) {
 
-             move_x = width / 2 - rounding - scale_x;
 
-             move_bottom_y = rounding - handle_height / 2 + scale_y;
 
-             move_top_y = move_bottom_y + height - rounding * 2 - scale_y * 2;
 
-             hull() {
 
-                 corner(move_x, move_top_y);
 
-                 corner(move_x, move_bottom_y);
 
-                 corner(-move_x, move_top_y);
 
-                 corner(-move_x, move_bottom_y);
 
-             }
 
-         }
 
-         
 
-         module connectors() {
 
-             rounding = laptop_pocket_rounding;
 
-             module connector(left) {
 
-                 move_x = left ? (-rounding / 2) : (rounding / 2);
 
-                 translate([move_x, rounding / 2]) {
 
-                     difference() {
 
-                         square(rounding * 2, center = true);
 
-                         circle(r = rounding);
 
-                         
 
-                         translate([0, rounding / 2]) {
 
-                             square([rounding * 2, rounding], center = true);
 
-                         }
 
-                         move_x = left ? (-rounding / 2) : (rounding / 2);
 
-                         
 
-                         translate([move_x, -rounding / 2]) {
 
-                             square(rounding, center = true);
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             
 
-             width = laptop_pocket_width - laptop_pocket_handle_width * 2;
 
-             height = laptop_pocket_height;
 
-             handle_height = laptop_pocket_handle_back_height;
 
-             move_x = width / 2 - rounding / 2;
 
-             move_y = height - handle_height / 2 + rounding / 2;
 
-             
 
-             translate([move_x, move_y]) {
 
-                 connector(true);
 
-             }
 
-             translate([-move_x, move_y]) {
 
-                 connector(false);
 
-             }
 
-         }
 
-         module base_shape() {
 
-             handle(false);
 
-             handle(true);
 
-             center();
 
-             connectors();
 
-         }
 
-         module hole_shape() {
 
-             min_thickness = laptop_pocket_base_thickness * 2 
 
-             + thread_top_diameter;
 
-         
 
-             default_thickness = laptop_pocket_handle_width;
 
-             thickness = max(min_thickness, default_thickness);
 
-             center(thickness, thickness);
 
-         }
 
-         render() {
 
-             difference() {
 
-                 base_shape();
 
-                 hole_shape();
 
-             }
 
-         }
 
-     }
 
-     module front_shape() {
 
-         rounding = laptop_pocket_rounding;
 
-         width = laptop_pocket_width;
 
-         height = laptop_pocket_handle_back_height;
 
-         front_height = thread_top_diameter + laptop_pocket_base_thickness * 2;
 
-         move_x = width  / 2 - rounding;
 
-         move_bottom_y = rounding - height / 2;
 
-         move_top_y = move_bottom_y + front_height - rounding * 2;
 
-         
 
-         module corner(x, y) {
 
-             translate([x, y]) {
 
-                 circle(r = rounding);   
 
-             }
 
-         }
 
-         
 
-         hull() {
 
-             corner(move_x, move_top_y);
 
-             corner(move_x, move_bottom_y);
 
-             corner(-move_x, move_top_y);
 
-             corner(-move_x, move_bottom_y);
 
-         }
 
-     }   
 
-     module base_object() {
 
-         back_thickness = thread_height + laptop_pocket_base_thickness;
 
-         front_thickness = laptop_pocket_laptop_thickness;
 
-         thickness = front_thickness + back_thickness;
 
-         back_center = back_thickness / 2 - thickness / 2;
 
-         front_center = thickness / 2 - front_thickness / 2;
 
-         translate([0, back_center, 0]) {  
 
-             rotate([90, 0, 0]) {
 
-                 linear_extrude(height = back_thickness, center = true) {
 
-                     back_shape();
 
-                 }
 
-             }
 
-         }
 
-         translate([0, front_center, 0]) {
 
-             rotate([90, 0, 0]) {
 
-                 linear_extrude(height = front_thickness, center = true) {
 
-                     front_shape();
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     module final_object() {
 
-         module thread(move_x, move_z, front = false) {
 
-             move_y = thread_height / 2
 
-             - laptop_pocket_laptop_thickness / 2
 
-             - thread_height / 2
 
-             - laptop_pocket_base_thickness / 2;
 
-             translate([move_x, front ? -move_y : move_y, move_z]) {
 
-                 rotate([front ? 90 : 270, 0, 0]) {
 
-                     thread_object();
 
-                 }
 
-             }
 
-         }
 
-         module back_threads() {
 
-             base_width = laptop_pocket_width - thread_top_diameter;
 
-             base_height = laptop_pocket_height - thread_top_diameter;
 
-             width = base_width - base_width % wall_holes_space;
 
-             height = base_height - base_height % wall_holes_space;
 
-             move_x = width / 2;
 
-             move_y = height / 2;
 
-             center_y = laptop_pocket_handle_back_height / 2 
 
-             - laptop_pocket_height / 2;
 
-             for (count_x = [-move_x : wall_holes_space : move_x]) {
 
-                 for (count_y = [-move_y : wall_holes_space : move_y]) {
 
-                     thread(count_x, count_y - center_y);
 
-                 }
 
-             }
 
-         }
 
-         module front_threads() {
 
-             move_y = thread_top_diameter / 2
 
-             - laptop_pocket_handle_back_height / 2
 
-             + laptop_pocket_base_thickness;
 
-            
 
-             base_width = laptop_pocket_width - 
 
-             thread_top_diameter;
 
-             width = base_width 
 
-             - base_width % wall_holes_space;
 
-             move_x = width / 2;
 
-             
 
-             for (count_x = [-move_x : wall_holes_space : move_x]) {
 
-                 thread(count_x, move_y, true);
 
-             }
 
-         }
 
-         module single_cord(move_x) {
 
-             radius = cord_hole_diameter / 2;
 
-             height = thread_height + laptop_pocket_base_thickness;
 
-             move_y = height / 2
 
-             - laptop_pocket_laptop_thickness / 2
 
-             - height / 2;
 
-             move_z = laptop_pocket_handle_back_height / 2
 
-             - radius / 2
 
-             - laptop_pocket_base_thickness * 2;
 
-             translate([move_x, move_y, move_z]) {
 
-                 rotate([90, 0, 0]) {
 
-                     cylinder(r = radius, h = height, center = true);
 
-                 }
 
-             }
 
-         }
 
-         module cords() {
 
-             move_x = laptop_pocket_width / 2
 
-             - laptop_pocket_handle_width / 2;
 
-             single_cord(move_x);
 
-             single_cord(-move_x);
 
-         }
 
-         color("#37c887") {
 
-             render() {
 
-                 difference() {
 
-                     base_object();
 
-                     back_threads();
 
-                     front_threads();
 
-                     cords();
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     final_object();
 
- }
 
- module laptop_pocket_front_shape() {
 
-     module base_shape() {
 
-         width = laptop_pocket_width;
 
-         height = laptop_pocket_handle_front_height;
 
-         rounding = laptop_pocket_rounding;
 
-         move_x = width / 2 - rounding;
 
-         move_y = height / 2 - rounding;
 
-         module corner(move_x, move_y) {
 
-             translate([move_x, move_y]) {
 
-                 circle(r = rounding);
 
-             }
 
-         }
 
-         hull() {
 
-             corner(move_x, move_y);
 
-             corner(move_x, -move_y);
 
-             corner(-move_x, move_y);
 
-             corner(-move_x, -move_y);
 
-         }
 
-     }
 
-     module center_holes() {
 
-         move_y = 0;
 
-         base_width = laptop_pocket_width;
 
-         width = base_width - base_width % wall_holes_space;
 
-         move_x = width / 2;
 
-         module hole(move_x) {
 
-             translate([move_x, move_y]) {
 
-                 circle(r = thread_screw / 2); 
 
-             }
 
-         }
 
-         for (count = [-move_x : wall_holes_space : move_x]) {
 
-             hole(count);
 
-         }
 
-     }   
 
-     module feature_holes(move_y, split) {
 
-         module hole(move_x) {
 
-             translate([move_x, move_y]) {
 
-                 rotate(split ? 180 : 0) {
 
-                     hole_shape();
 
-                 }
 
-             }
 
-         }
 
-         base_width = laptop_pocket_width;
 
-         width = base_width - base_width % wall_holes_space;
 
-         move_x = width / 2;
 
-         for (count = [-move_x : wall_holes_space : move_x]) {
 
-             hole(count);
 
-         }
 
-     }
 
-     feature_holes_y = laptop_pocket_handle_front_height / 2
 
-     - hole_full_height() / 2
 
-     - laptop_pocket_rounding;
 
-     module top_holes() {
 
-         feature_holes(feature_holes_y, false);
 
-     }
 
-     module bottom_holes() {
 
-         feature_holes(-feature_holes_y, true);
 
-     }
 
-     difference() {
 
-         base_shape();
 
-         center_holes();
 
-         top_holes();
 
-         bottom_holes();
 
-     }
 
- }
 
- module laptop_pocket_front_object() {
 
-     color("#3b71c4") {
 
-         render() {
 
-             thickness = laptop_pocket_front_thickness;
 
-             linear_extrude(height = thickness, center = true) {
 
-                 laptop_pocket_front_shape();
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |