chiark / gitweb /
ksafe-base: wip before $xpp
[reprap-play.git] / ksafe-base.scad
index b2536af81f05fa49f37732f7a265229a73b7b18c..b21b6939f94952fa26bd66ed445b3d8f3c8b79b1 100644 (file)
@@ -10,24 +10,69 @@ lidinner_thick_allow = 20;
 space = 25;
 anchor_thick = 4;
 anchor_rad = 4;
-minbevel = space/2;
+bevel = 15;
 
-// calculated
+// ----- calculated -----
 
-uppA = [0,0];
-uppB = uppA - [ wall_thick, 0 ];
+gppA = [0,0];
+gppB = gppA - [ wall_thick, 0 ];
+
+gppL = [ gppB[0], -(lidinner_thick_allow + space + base_thick) ];
+
+// anchor
 
-uppL = [ uppB[0], -(lidinner_thick_allow + space + base_thick) ];
 anchor_b = anchor_thick + anchor_rad;
-uppM = uppL + anchor_b * [1,1];
+appM = gppL + anchor_b * [1,1];
+
+a_bevel = 2 * anchor_b * (1 + sqrt(0.5));
 
-bevel = max(minbevel, 2 * anchor_b * (1 + sqrt(0.5)));
-uppE = uppL + bevel * [0,1];
-uppF = uppL + bevel * [1,0];
+module upp_app_Profile(t_bevel){
+  xppE = gppL + t_bevel * [0,1];
+  xppF = gppL + t_bevel * [1,0];
+
+  xppJ = xppE + wall_thick * [ 1, tan(22.5) ];
+  xppI = xppF + base_thick + [ tan(22.5), 1 ];
+
+  polygon([ gppA,
+           gppB,
+           xppE,
+           xppF,
+           xppF + [1,0],
+           xppI + [1,0],
+           xppJ ]);
+}
 
-uppJ = uppE + wall_thick * [ 1, tan(22.5) ];
-uppI = uppF + base_thick + [ tan(22.5), 1 ];
-uppH = upp
 
 module UsualProfile(){
-  
+  upp_app_Profile(bevel);
+}
+
+module NearAnchorProfile(){
+  upp_app_Profile(a_bevel);
+}
+
+module AnchorProfile(){
+  xppE = gppL + t_bevel * [0,1];
+  xppF = gppL + t_bevel * [1,0];
+
+  upp_app_Profile(a_bevel);
+
+  difference(){
+    hull(){
+      polygon([ xppE,
+               xppF,
+               xppF + [0,1],
+               xppE + [1,0] ]);
+      translate(appM) circle(r= anchor_b);
+    }
+    translate(appM) circle(r= anchor_rad);
+  }
+}
+
+module Demo(){
+  color("red") AnchorProfile();
+  translate([0,0,2]) color("black") NearAnchorProfile();
+  color("blue") UsualProfile();
+}
+
+Demo();