// -*- C -*-
include <funcs.scad>
+include <commitid.scad>
ply_th = 18;
ply_hole_dia = 15;
thehd = [ tile_hard_edge_hole_dist, tile_hard_edge_hole_dist ];
interlock_rad = interlock_dia/2;
-interlock_negative_rad = interlock_rad + 0.25;
+interlock_negative_rad = interlock_rad + 0.125;
module Post(){
mirror([0,0,1]) {
module TileBase(botleft_post, topright_post){
botleft = botleft_post - thehd;
size = topright_post - botleft_post + thehd * 2;
- mirror([0,0,1])
- translate([botleft[0], botleft[1], 0])
- cube([size[0], size[1], tile_th]);
+ difference(){
+ mirror([0,0,1])
+ translate([botleft[0], botleft[1], 0])
+ cube([size[0], size[1], tile_th]);
+ translate( [ botleft_post[0], botleft_post[1], -tile_th ]
+ + 0.5 * [ post_dia, post_dia, 0 ] )
+ Commitid_BestCount_M( topright_post-botleft_post
+ + [0, thehd[0] ]
+ + [-post_dia,-post_dia] );
+ }
}
m4_dnl INREFFRAME(left_post, right_post, morevars) { body; }
}
}
-module InterlockCore(r) {
- translate([0, -thehd[0], 1]){
- mirror([0,0,1]){
- linear_extrude(height=tile_th+2){
- circle(r=r, $fn=40);
+module InterlockCore(r, plusth, ymir) {
+ dx = sqrt(3) * r;
+ $fn= 80;
+ translate([0, -thehd[0], plusth]){
+ mirror([0,ymir,0]){
+ mirror([0,0,1]){
+ linear_extrude(height=tile_th+plusth*2, convexity=10){
+ circle(r=r);
+ difference(){
+ translate([-dx, -0.1])
+ square([ dx*2, r/2 + 0.1 ]);
+ for (xi = [-1, 1]) {
+ translate([ xi*dx, r ])
+ circle(r=r);
+ }
+ }
+ }
}
}
}
module InterlockNegative(this_post, right_post) {
INREFFRAME(this_post, right_post)
- InterlockCore(interlock_negative_rad);
+ InterlockCore(interlock_negative_rad, 1, 0);
+}
+
+module Interlock(this_post, right_post) {
+ INREFFRAME(this_post, right_post)
+ InterlockCore(interlock_rad, 0, 1);
}
-module TestPiece1(){
+module TestPiece1(){ ////toplevel
holes = [ [-100, 0],
[ 0, 0]
];
difference(){
TileBase(holes[0], holes[1]);
InterlockNegative(holes[1], holes[1] + [0,1]);
-
}
Posts(holes);
RoundEdge(holes[0], holes[1]);
RoundLeftCorner(holes[0], holes[1]);
}
-TestPiece1();
+module TestPiece2(){ ////toplevel
+ holes = [ [ 0, 0],
+ [ 50, 0]
+ ];
+ TileBase(holes[0], holes[1]);
+ Posts(holes);
+ RoundEdge(holes[0], holes[1]);
+ Interlock(holes[0], holes[0] + [0, -1]);
+}
+
+module Demo(){
+ translate([ -thehd[1], 0 ])
+ color("blue")
+ TestPiece1();
+ translate([ +thehd[1], 0 ])
+ TestPiece2();
+}
+
+//TestPiece1();
+//TestPiece2();
+//Demo();