function Posts_interpolate_one(c0,c1) = [c0, (c0+c1)/2, c1];
-module FitTest_general(c0,sz, dobrace=false){
- c = Rectangle_corners(c0, sz);
- brace = [7,7,9];
- difference(){
- union(){
- Rectangle_TileBase(c);
- if (dobrace) {
- translate(concat(c0, [-brace[2] + 0.1])){
- difference(){
- cube(concat(sz,[brace[2]]) - [5,0,0]);
- translate(brace + [0,0, -25])
- cube(concat(sz, [50]) - brace*2 + [10,0,0]);
- }
- }
- }
- RoundEdge(R_EDGE(c,1));
- }
- Machine();
- }
-}
-
-module FitTest_Entire(){ ////toplevel
- FitTest_general([-40,-80], [275,180], dobrace=true);
-}
-
-module FitTest_RearCurve(){ ////toplevel
- FitTest_general([110,0], [170,100]);
-}
-
module Tile02(){ ////toplevel
sz = [100,170];
c0 = tile02_tr + -sz;
RoundCornerAdd(rc2);
}
+module FitTest_general(c0,sz, dobrace=false){
+ c = Rectangle_corners(c0, sz);
+ brace = [7,7,9];
+ difference(){
+ union(){
+ Rectangle_TileBase(c);
+ if (dobrace) {
+ translate(concat(c0, [-brace[2] + 0.1])){
+ difference(){
+ cube(concat(sz,[brace[2]]) - [5,0,0]);
+ translate(brace + [0,0, -25])
+ cube(concat(sz, [50]) - brace*2 + [10,0,0]);
+ }
+ }
+ }
+ RoundEdge(R_EDGE(c,1));
+ }
+ Machine();
+ }
+}
+
+module FitTest_Entire(){ ////toplevel
+ FitTest_general([-40,-80], [275,180], dobrace=true);
+}
+
+module FitTest_RearCurve(){ ////toplevel
+ FitTest_general([110,0], [170,100]);
+}
+
module FitTest_FrontCurve(){ ////toplevel
p0 = [110,-80];
sz = [170,80];
}
}
+module FitTest_PairLink(cut=false){ ////toplevel
+ cy0=-55; cy1=85; cx=127;
+ bar = [10,10];
+ legrad = 12;
+ footrad_min = 2; footrad_max = 4; footrad_depth = 3;
+ strap = [3,5];
+
+ // calculated
+ straphole_x_max = legrad/sqrt(2) + footrad_max;
+
+ translate([cx - bar[0]/2, cy0, 0])
+ cube([bar[0], cy1-cy0, bar[1]]);
+ for (endy=[cy0,cy1]) {
+ $fn=32;
+ translate([cx,endy,0]){
+ for (rot=[45:90:315]) {
+ rotate(rot){
+ translate([legrad,0,0]){
+ hull(){
+ cylinder(r= footrad_max, h=1);
+ translate([0,0,-footrad_depth])
+ cylinder(r= footrad_min, h=1);
+ }
+ }
+ }
+ }
+ for (rot=[45,135]) {
+ rotate(rot){
+ hull(){
+ for (s=[-1,+1]){
+ translate([s*legrad,0,0])
+ cylinder(r= footrad_max, h=bar[1]);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+module FitTest_PairDemo(){ ////toplevel
+ translate([-120,0,0]){
+ FitTest_PairLink();
+ %FitTest_FrontCurve();
+ %FitTest_RearCurve();
+ }
+}
+
module RoundCornerDemo_plat(cnr){
mirror([0,0,1]) linear_extrude(height=1) polygon(cnr);
}