// cutout
+machine_rear_to_front = 85;
+
+machine_rear_profile = [
+ [ - 0, -0.00 ],
+ [ - 2, -0.10 ],
+ [ - 4, -0.20 ],
+ [ - 5, -0.30 ],
+ [ - 6, -0.40 ],
+ [ - 7, -0.50 ],
+ [ - 8, -0.75 ],
+ [ - 10, -1.50 ],
+ [ - 12, -2.25 ],
+ [ - 14, -3.25 ],
+ [ - 16, -4.25 ],
+ [ - 18, -5.75 ],
+ [ - 20, -8.00 ]
+ ];
+
+machine_front_profile = [
+ [ 128, -3.70, ],
+ [ 124, -2.90, ],
+ [ 120, -2.45, ],
+ [ 116, -2.10, ],
+ [ 112, -1.80, ],
+ [ 108, -1.55, ],
+ [ 104, -1.25, ],
+ [ 100, -1.00, ],
+ [ 96, -0.80, ],
+ [ 92, -0.65, ],
+ [ 88, -0.55, ],
+ [ 84, -0.50, ]
+ ];
+
cutout_l_end_y_front_slop = 0.5;
cutout_l_end_y_rear_slop = 0.5;
cutout_l_end_x_slop = 0.25;
cutout_l_end_x = 22;
-cutout_l_end_y = 85;
+cutout_l_end_y = machine_rear_to_front;
cutout_l_end_curve = 1;
cutout_l_end_y_total = cutout_l_end_y
+ cutout_l_end_y_front_slop + cutout_l_end_y_rear_slop;
-tile01_tr = [250, 0];
+tile02_tr = [-250, 0];
+tile01_tr = [ 0, 0];
cutout_tile01_y = 170 - 147 + cutout_l_end_y_front_slop;
cutout_tile11_x = cutout_l_end_x + cutout_l_end_curve;
rearcurve_strt_len = 65;
rearcurve_total_len = 84;
-rearcurve_rad_slop = 0.5;
+rearcurve_rad_slop = 0.75;
rearcurve_avoid_y = rearcurve_rad + 10;
+reartablet_z = 2.54;
+reartablet_x = 5 + 1;
+reartablet_y = 5;
+
// calculated
TEST = false;
}
}
+module Machine_Profile(){
+ first_rear = machine_rear_profile[0];
+ first_front = machine_front_profile[len(machine_front_profile)-1];
+ below_point = 0.5 * ( first_rear + first_front ) + [ 0, -10 ];
+ pol = concat( machine_rear_profile,
+ [ below_point ],
+ machine_front_profile);
+ skew_angle = atan2( first_front[1] - first_rear[1],
+ first_front[0] - first_rear[0] );
+ echo(below_point, pol, skew_angle);
+ hull(){
+ for (z=[0,-40]) {
+ translate([0,z]) {
+ //scale([1,5])
+ rotate([0,0, -skew_angle ]){
+ //translate( - first_front )
+ polygon(pol);
+ }
+ }
+ }
+ }
+}
+
+module Machine_RearProfile(){
+ intersection(){
+ Machine_Profile();
+ translate([ -200 + machine_rear_to_front/2, -100 ]) {
+ square([200,200]);
+ }
+ }
+}
+
module Machine_Rear(){ ////toplevel
big_rad = rearcurve_total_len - rearcurve_strt_len + rearcurve_rad;
small_rad = rearcurve_rad + rearcurve_rad_slop;
- translate([ 250 + rearedge_len - cutout_l_end_x + big_rad + rearcurve_rad,
+ translate([ tile01_tr[0] - cutout_l_end_x + rearedge_len,
cutout_tile11_y,
0 ]){
- translate([ 0,
+ //%cube([20,20,20]);
+ translate([ -reartablet_x,
+ -1,
+ -reartablet_z])
+ mirror([0,0,1])
+ cube([ reartablet_x+1,
+ reartablet_y+1,
+ 20 ]);
+ translate([ rearcurve_strt_len,
0,
- -rearcurve_rad
- ]){
- rotate([0,-90,0]){
- rotate([0,0, 360/8/2])
- cylinder(r = small_rad, h= rearcurve_strt_len);
+ 0 ]){
+ translate([ 0,
+ 0,
+ -rearcurve_rad
+ ]){
+ rotate([0,-90,0]){
+ rotate([0,0, 360/8/2])
+ cylinder(r = small_rad, h= rearcurve_strt_len);
+ }
}
- }
- translate([ 0,
- 0,
- big_rad - rearcurve_rad ]) {
- intersection(){
- rotate([90,0,0]){
- rotate_extrude(convexity=10) {
- translate([ big_rad,
- 0 ]) {
- hull(){
- circle(r= small_rad);
- translate([200,0])
+ translate([ 0,
+ 0,
+ big_rad - rearcurve_rad ]) {
+ intersection(){
+ rotate([90,0,0]){
+ rotate_extrude(convexity=10) {
+ translate([ big_rad,
+ 0 ]) {
+ hull(){
circle(r= small_rad);
+ translate([200,0])
+ circle(r= small_rad);
+ }
}
}
}
+ mirror([0,0,1])
+ cube([150,150,150]);
}
- mirror([0,0,1])
- cube([150,150,150]);
}
}
}
module Tile02(){ ////toplevel
sz = [100,170];
- c0 = -sz;
+ c0 = tile02_tr + -sz;
c = Rectangle_corners(c0, sz);
posts = Rectangle_corners2posts(c);
rcs = [R_EDGE(c,0)];
module Tile12(){ ////toplevel
sz = [100,250];
- c0 = [-sz[0], 0];
+ c0 = tile02_tr + [-sz[0], 0];
c = Rectangle_corners(c0, sz);
posts = Rectangle_corners2posts(c);
rcs = [R_EDGE(c,3)];
RoundCornerAdd(rcs);
}
-tile_01_11_cnr = [250, 0] + [-cutout_tile11_x, 0];
-tile_11_10_cnr = [250, 0] + [0, cutout_tile11_y];
+tile_01_11_cnr = tile01_tr + [-cutout_tile11_x, 0];
+tile_11_10_cnr = tile01_tr + [0, cutout_tile11_y];
module Tile11(){ ////toplevel
sz = [250,250];
- c0 = [0,0];
+ c0 = tile02_tr + [0,0];
c = Rectangle_corners(c0, sz);
cnr_posts = Rectangle_corners2posts(c);
posts = concat(
}
}
-tile_01_00_cnr = [250, 0] + [0, -cutout_tile01_y];
+tile_01_00_cnr = tile01_tr + [0, -cutout_tile01_y];
module Tile01(){ ////toplevel
sz = [250,170];
- c0 = [0,-sz[1]];
+ c0 = tile02_tr + [0,-sz[1]];
c = Rectangle_corners(c0, sz);
cnr_posts = Rectangle_corners2posts(c);
posts = concat(
module Tile10(){ ////toplevel
sz = [250,250];
- c0 = [sz[0],0];
+ c0 = tile02_tr + [sz[0],0];
c = Rectangle_corners(c0, sz);
cnr_posts = Rectangle_corners2posts(c);
cty = cutout_tile11_y;
rcy = cty + rearcurve_avoid_y;
- posts = [ cnr_posts[0] + [ 0, cty ],
- cnr_posts[1] + [ -rearedge_len + cutout_l_end_x, rcy ],
- cnr_posts[1] + [ 0, rcy ],
+ posts = [ cnr_posts[0] + [ 0, cty ],
+ cnr_posts[1] + [ -sz[1] + rearedge_len - cutout_l_end_x, cty ],
+ cnr_posts[1] + [ 0, rcy ],
cnr_posts[2],
cnr_posts[3] ];
+ rcs = [R_EDGE(c,2)];
difference(){
union(){
Rectangle_TileBase(c);
Posts(posts);
+ RoundEdge(R_EDGE(c,1));
RoundEdge(R_EDGE(c,2));
- //InterlockEdge(tile_01_11_cnr, c[3]);
- //InterlockEdge(R_EDGE(c,3));
+ InterlockEdge(c[3], tile_11_10_cnr);
}
- //InterlockEdge(c[1], tile_01_00_cnr, 1);
+ RoundCornerCut(rcs);
Machine();
}
+ RoundCornerAdd(rcs);
}
module Demo(){ ////toplevel
//TestPiece1();
//TestPiece2();
//Demo();
+
+//Machine_Profile();
+Machine_RearProfile();