cutout_tile11_x = cutout_l_end_x + cutout_l_end_curve;
cutout_tile11_y = cutout_l_end_y_total - cutout_tile01_y;
-// rear curve
+// front and rear curves
rearedge_len = 170;
-rearcurve_rad = 25.4;
-rearcurve_strt_len = 65;
-rearcurve_total_len = 84;
+rearcurve_strt_len = 52;
-rearcurve_rad_slop = 0.75;
+rearcurve_z_slop = 0.75;
-rearcurve_avoid_y = rearcurve_rad + 10;
+rearcurve_avoid_y = 35;
+
+rearcurve_double_inrad = 26.10 + 8.04;
reartablet_z = 2.54;
reartablet_x = 5 + 1;
reartablet_y = 5;
+frontcurve_side_skew = 3.5 / 72;
+frontcurve_avoid_y = 70;
+frontcurve_z_slop = 0.75;
+
// calculated
TEST = false;
interlock_sq_adj = 0.2; // arbitrary
+first_front = machine_front_profile[len(machine_front_profile)-1];
+
+m4_define(`POST_TCROSSSZ',
+ `2*( tile_hard_edge_hole_dist - test_edge + 1 )')
+
module Post(){
mirror([0,0,1]) {
difference(){
}
}
if (TEST) {
- tsz = tile_hard_edge_hole_dist - test_edge + 1;
translate([0,0, tile_th/2]) {
- cube([post_dia, tsz*2, tile_th], center=true);
- cube([tsz*2, post_dia, tile_th], center=true);
+ cube([post_dia, POST_TCROSSSZ, tile_th], center=true);
+ cube([POST_TCROSSSZ, post_dia, tile_th], center=true);
}
}
}
+ [0, thehd[1]]);
}
if (TEST) {
- translate( concat(botleft + [thehd[0], 0], [0]) )
- Commitid_BestCount([ size[0] - thehd[0]*2, thehd[1] ]);
+ crossoff = tile_hard_edge_hole_dist + POST_TCROSSSZ/2;
+ cidsz = [ size[0] - 2*crossoff, thehd[1] ];
+ translate( concat(botleft + [crossoff, 0] + cidsz, [0]) )
+ rotate([0,0,180])
+ Commitid_BestCount(cidsz);
difference(){
mirror([0,0,1]) {
translate(concat(botleft + [test_edge,test_edge], [test_tile_th]))
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, -40 ];
+ 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);
- rotate([0,0, -skew_angle ]){
- polygon(pol);
+ 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_FrontProfile(){
+ intersection(){
+ Machine_Profile();
+ translate([ 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;
+module Machine_Curves(){ ////toplevel
translate([ tile01_tr[0] - cutout_l_end_x + rearedge_len,
cutout_tile11_y,
0 ]){
cube([ reartablet_x+1,
reartablet_y+1,
20 ]);
+ }
+ translate([ tile01_tr[0] - cutout_l_end_x + rearedge_len,
+ cutout_tile11_y,
+ frontcurve_z_slop ]){
+ translate([ 0, -first_front[0] , 0 ])
+ multmatrix([[1, -frontcurve_side_skew, 0, 0],
+ [0, 1, 0, 0],
+ [0, 0, 1, 0],
+ [0, 0, 0, 1]])
+ translate([ 0, first_front[0] , 0 ])
+ mirror([1,0,0]){
+ rotate([0,-90,0])rotate([0,0,-90]){
+ linear_extrude(height= 200)
+ Machine_FrontProfile();
+ }
+ }
translate([ rearcurve_strt_len,
0,
- 0 ]){
- translate([ 0,
+ rearcurve_z_slop ]){
+ translate([ 1,
0,
- -rearcurve_rad
+ 0
]){
- rotate([0,-90,0]){
- rotate([0,0, 360/8/2])
- cylinder(r = small_rad, h= rearcurve_strt_len);
+ rotate([0,-90,0])rotate([0,0,-90]){
+ linear_extrude(height= rearcurve_strt_len + 1)
+ Machine_RearProfile();
}
}
translate([ 0,
0,
- big_rad - rearcurve_rad ]) {
+ rearcurve_double_inrad ]) {
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);
- }
+ rotate_extrude(convexity=10, $fn=32) {
+ rotate([0,0,90]) translate([ 0,
+ -rearcurve_double_inrad ]) {
+ Machine_RearProfile();
}
}
}
mirror([0,0,1])
- cube([150,150,150]);
+ translate([0,-75,0]) cube([150,150,150]);
}
}
}
module Machine(){ ////toplevel
Machine_Arm();
- Machine_Rear();
+ Machine_Curves();
}
function Rectangle_corners(c0, sz) =
tile_01_11_cnr = tile01_tr + [-cutout_tile11_x, 0];
tile_11_10_cnr = tile01_tr + [0, cutout_tile11_y];
+tile_01_00_cnr = tile01_tr - [0, cutout_tile01_y];
module Tile11(){ ////toplevel
sz = [250,250];
- c0 = tile02_tr + [0,0];
+ c0 = tile01_tr + [-sz[0],0];
c = Rectangle_corners(c0, sz);
cnr_posts = Rectangle_corners2posts(c);
posts = concat(
}
}
-tile_01_00_cnr = tile01_tr + [0, -cutout_tile01_y];
-
module Tile01(){ ////toplevel
sz = [250,170];
- c0 = tile02_tr + [0,-sz[1]];
+ c0 = tile01_tr + -sz;
c = Rectangle_corners(c0, sz);
cnr_posts = Rectangle_corners2posts(c);
posts = concat(
module Tile10(){ ////toplevel
sz = [250,250];
- c0 = tile02_tr + [sz[0],0];
+ c0 = tile01_tr + [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] + [ -sz[1] + rearedge_len - cutout_l_end_x, cty ],
+ cnr_posts[1] + [ -sz[0] + rearedge_len - cutout_l_end_x, cty ],
cnr_posts[1] + [ 0, rcy ],
cnr_posts[2],
cnr_posts[3] ];
RoundCornerAdd(rcs);
}
+module Tile00(){ ////toplevel
+ sz = [250,170];
+ c0 = tile01_tr + [0,-sz[1]];
+ c = Rectangle_corners(c0, sz);
+ cnr_posts = Rectangle_corners2posts(c);
+ cty = cutout_tile01_y;
+ rcy = cty + frontcurve_avoid_y;
+ posts = [ cnr_posts[0],
+ cnr_posts[1],
+ cnr_posts[2] + [ 0, -rcy ],
+ cnr_posts[2] + [ -sz[0] + rearedge_len - cutout_l_end_x, -cty ],
+ cnr_posts[3] + [ 0, -cty ]
+ ];
+ rcs = [R_EDGE(c,1)];
+ difference(){
+ union(){
+ Rectangle_TileBase(c);
+ Posts(posts);
+ RoundEdge(R_EDGE(c,0));
+ RoundEdge(R_EDGE(c,1));
+ InterlockEdge(tile_01_00_cnr, c[0]);
+ }
+ RoundCornerCut(rcs);
+ Machine();
+ }
+ RoundCornerAdd(rcs);
+}
+
module Demo(){ ////toplevel
translate(demo_slop*[-2,1]) color("blue") Tile12();
translate(demo_slop*[-2,0]) color("red") Tile02();
translate(demo_slop*[-2,1]) color("orange") Tile11();
translate(demo_slop*[-2,0]) color("purple") Tile01();
translate(demo_slop*[-3,1]) color("blue") Tile10();
+ translate(demo_slop*[-3,0]) color("red") Tile00();
%Machine();
}
//TestPiece2();
//Demo();
-Machine_Profile();
+//Machine_Profile();
+//Machine_RearProfile();