// -*- C -*- arch_height = 24; arch_width = 75; end_width = 25; arch_thick = 5; // computed arch_alpha = atan(arch_height / (arch_width/2)); arch_beta = 2*arch_alpha; echo(arch_alpha,arch_beta); arch_in_rad = arch_width/2 / sin(arch_beta); arch_to_chord = arch_in_rad * cos(arch_beta); end_thick = arch_thick; //arch_to_chord = (arch_width/2)*(arch_width/2)/arch_height; //arch_in_rad = arch_to_chord + arch_height; //arch_in_rad2 = sqrt(arch_to_chord*arch_to_chord + // (arch_width/2)*(arch_width/2)); //echo(arch_in_rad, arch_in_rad2); module ArchProfile(){ intersection(){ translate([-200,0]) square([400,200]); union(){ translate([0,-arch_to_chord]){ difference(){ circle(arch_in_rad + arch_thick, $fa=0.1); circle(arch_in_rad, $fa=0.1); } } for (m=[0,1]) mirror([m,0]) translate([arch_width/2,0]) square([end_width, end_thick]); } } %square([arch_width/2,arch_height]); } ArchProfile();