round_edge_rad = 2.0;
+interlock_dia = 10;
+
// calculated
ply_edge_hole_dist = ply_edge_min + ply_hole_dia/2;
tile_hard_edge_hole_dist = ply_edge_hole_dist + hole_slop;
thehd = [ tile_hard_edge_hole_dist, tile_hard_edge_hole_dist ];
+interlock_rad = interlock_dia/2;
+interlock_negative_rad = interlock_rad + 0.25;
+
module Post(){
mirror([0,0,1]) {
difference(){
[ 0, 0, 0, 1, ] ];
$3
multmatrix(m)
+')
+
+m4_dnl INREFFRAME(left_post, right_post, morevars)
+m4_dnl INREFFRAME_EDGE { body; }
+m4_define(`INREFFRAME_EDGE',`
translate([-thehd[1], -thehd[0], -round_edge_rad])
')
module RoundEdge(left_post, right_post) {
INREFFRAME(left_post, right_post,
- `tlength = length + thehd[1] * 2;') { m4_dnl '
+ `tlength = length + thehd[1] * 2;') m4_dnl '
+ INREFFRAME_EDGE {
difference(){
rotate([0,90,0])
cylinder(r= round_edge_rad, h= tlength, $fn=50);
}
module RoundLeftCorner(this_post, right_post) {
- INREFFRAME(this_post, right_post){
+ INREFFRAME(this_post, right_post) INREFFRAME_EDGE {
difference(){
sphere(r= round_edge_rad, $fn=60);
translate([0,0, -20])
}
}
+module InterlockCore(r) {
+ translate([0, -thehd[0], 1]){
+ mirror([0,0,1]){
+ linear_extrude(height=tile_th+2){
+ circle(r=r, $fn=40);
+ }
+ }
+ }
+}
+
module InterlockNegative(this_post, right_post) {
+ INREFFRAME(this_post, right_post)
+ InterlockCore(interlock_negative_rad);
}
module TestPiece1(){