// -*- C -*- laptop_w = 310; laptop_th_rear = 14; laptop_th_front = 11; laptop_halfdepth = 125; laptop_inner_x_clear = 95; include bar_w = 20; bar_th = 10; flex_allow = 3; claw_th = 5; claw_overlap = 10; module ClawProfile(laptop_th){ laptop_zmin = bar_th + flex_allow; laptop_zmax = laptop_zmin + laptop_th; difference(){ rectfromto([-claw_overlap, 0], [claw_th, laptop_zmax + claw_th]); rectfromto([-claw_overlap-1, laptop_zmin ], [ 0, laptop_zmax ]); } } module ClawBar(inner_len, laptop_th){ rotate([0,0,180]) linextr_y_xz(-bar_w/2, +bar_w/2) { rectfromto([0,0], [inner_len, bar_th]); translate([inner_len, 0]) ClawProfile(laptop_th); } } module Body(){ for (m=[0,1]) { mirror([m,0]) { ClawBar(laptop_w/2, laptop_th_rear); translate([ laptop_w/2 - laptop_inner_x_clear + bar_w/2, 0]) rotate([0,0,-90]) ClawBar(laptop_halfdepth, laptop_th_front); } } } //ClawProfile(laptop_th_front); //ClawBar(125, laptop_th_front); Body();