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));
+
+module upp_app_Vars(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 ];
+
+ children();
+}
-bevel = max(minbevel, 2 * anchor_b * (1 + sqrt(0.5)));
-uppE = uppL + bevel * [0,1];
-uppF = uppL + bevel * [1,0];
+module upp_app_Profile(){
+ 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_Vars(bevel) upp_app_Profile();
+}
+
+module NearAnchorProfile(){
+ upp_app_Vars(a_bevel) upp_app_Profile();
+}
+
+module AnchorProfile(){
+ upp_app_Vars(a_bevel) {
+
+ upp_app_Profile();
+
+ 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();