- offr= round_cnr_rad - round_edge_rad;
- INREFFRAME(this_cnr, right_cnr) INREFFRAME_EDGE {
- difference(){
- cube(offr*2 - 0.1, center=true);
- translate([offr, offr, 0])
- cylinder(center=true, h=20, r= offr);
+ bigr= round_cnr_rad - round_edge_rad;
+ l_uvec = unitvector2d(left_cnr - this_cnr);
+ r_uvec = unitvector2d(right_cnr - this_cnr);
+ lp1 = left_cnr + clockwise2d(l_uvec) * bigr;
+ lp2 = this_cnr + clockwise2d(l_uvec) * bigr;
+ lp3 = this_cnr - clockwise2d(r_uvec) * bigr;
+ lp4 = right_cnr - clockwise2d(r_uvec) * bigr;
+ ctr = line_intersection_2d(lp1,lp2,lp3,lp4);
+ ctr3 = concat(ctr,[0])
+')
+
+module RoundCorner_selector(ci, adj) {
+ ROUNDCORNER_VARS;
+ intersection(){
+ union(){
+ INREFFRAME(ctr3,concat(lp1,[4])){
+ translate([0,0,-bigr]) linear_extrude(height=bigr*2) {
+ translate([-bigr*2 + adj, -bigr])
+ square([bigr*2, bigr*3]);
+ }
+ }
+ }
+ union(){
+ INREFFRAME(ctr3,concat(lp4,[0])){
+ translate([0,0,-bigr]) linear_extrude(height=bigr*2) {
+ translate([-bigr*2, -bigr*2])
+ square([bigr*2 + adj, bigr*3]);
+ }
+ }