bigr= round_cnr_rad - round_edge_rad;
l_uvec = unitvector2d(left_cnr - this_cnr);
r_uvec = unitvector2d(right_cnr - this_cnr);
- ctr = line_intersection_2d(
- left_cnr - clockwise2d(r_uvec) * round_cnr_rad,
- this_cnr - clockwise2d(r_uvec) * round_cnr_rad,
- this_cnr + clockwise2d(l_uvec) * round_cnr_rad,
- right_cnr + clockwise2d(l_uvec) * round_cnr_rad )
+ 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)
')
module RoundCorner_selector(ci, adj) {
ROUNDCORNER_VARS;
difference(){
RoundCorner_selector(ci, -0.1);
- INREFFRAME(this_cnr, right_cnr) INREFFRAME_EDGE {
- translate([bigr, bigr, 0])
- cylinder(center=true, h=20, r= bigr);
- }
+ translate(concat(ctr,[0]))
+ cylinder(center=true, h=20, r= bigr);
}
}
ROUNDCORNER_VARS;
intersection(){
RoundCorner_selector(ci, +0.1);
- INREFFRAME(this_cnr, right_cnr) INREFFRAME_EDGE {
- translate([bigr, bigr, 0])
+ INREFFRAME_EDGE {
+ translate(concat(ctr,[0])){
rotate_extrude(convexity=10, $fn=50)
- translate([bigr, 0])
- difference(){
+ translate([bigr, 0])
+ difference(){
circle(r= round_edge_rad, $fn=50);
mirror([1,1])
square([20,20]);
- }
+ }
+ }
}
}
}