15 plug_stem = [ 2.72 + 0.50,
18 palmrest_from_plug_z = 3.98;
19 laptop_th = 16.31 + 0.75;
26 plug_l_d[0][1]/2 + wall_th * sin(22.5);
28 hook_tongue_h = hook_hole + wall_th*2;
30 plug_l_d_smallest = plug_l_d[len(plug_l_d)-1];
31 plug_hook_x_min = -plug_l_d_smallest[0] - wall_th;
32 plug_hook_z_start = -plug_l_d_smallest[1]/2 - wall_th;
34 plug_hook_z_laptop_base = palmrest_from_plug_z - laptop_th;
35 plug_hook_z_min = plug_hook_z_laptop_base - hook_tongue_h;
37 module PlugMainPlan() {
38 for (l_d = plug_l_d) {
41 rectfromto([ -l, -d/2 ],
46 module PlugHolderPlan() {
52 rectfromto([-100,-100], [-0.1,+100]);
56 module PlugHookHookPlan(){
57 polygon([ [ plug_hook_x_min, 0 ],
58 [ plug_hook_x_min, plug_hook_z_start ],
59 [ plug_hook_x_min + (plug_hook_z_start - plug_hook_z_min),
61 [ 0, plug_hook_z_min ],
66 module PlugHookTonguePlan(){
67 rectfromto([ -1, plug_hook_z_min ],
68 [ tongue_len, plug_hook_z_laptop_base ]);
71 module RotateIntersect(n=6){
72 intersection_for (r = [0:n-1]) {
73 rotate([r/n * 360,0,0])
74 linextr(-100,100) children(0);
85 linextr_y_xz(-hook_th_plug_holder/2,
86 +hook_th_plug_holder/2)
89 linextr_y_xz(-hook_th/2,
98 linextr(-plug_stem[1]/2, 100)
99 rectfromto([ -100, -plug_stem[0]/2 ],
100 [ +100, +plug_stem[0]/2 ]);
105 translate([0,0,-5]) color("grey") PlugHolderPlan();
110 //PlugHookHookPlan();
111 render() PlugHolder();