+ difference(){
+ union(){
+ ArchCircle(arch_in_rad + arch_thick);
+ for (m=[0,1])
+ mirror([m,0])
+ translate([arch_width/2,0])
+ multmatrix([[1,pbase ? -0.75 : 0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]])
+ square([end_width, pbase ? pbase_tab : end_thick]);
+ }
+ }
+ }
+}
+
+module Holes(){
+ for (m=[0,1]) {
+ mirror([1-m,0])
+ translate([arch_width/2, 50, 0])
+ rotate([90,0,0])
+ for (h=holes[m]) {
+ translate(h)
+ cylinder(r=hole_dia/2, h=100, $fn=20);
+ }
+ }
+}
+
+module MainCutout(){
+ ArchCircle(arch_in_rad);
+}
+
+module Arch(){
+ difference(){
+ rotate([0,0,180]){
+ linear_extrude(height=arch_breadth) {