chiark / gitweb /
sewing-table: interlocks sorted
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 30 Dec 2016 16:54:02 +0000 (16:54 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 30 Dec 2016 16:54:02 +0000 (16:54 +0000)
Makefile
sewing-table.scad.m4

index 1aac776..306f4f4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -30,7 +30,7 @@ CONFIG=$(PLAY)/slic3r-config.ini
 FILAMENTSPOOL_AUTOS = filamentspool filamentspool-lt filamentspool-sm
 FILAMENTSPOOL_AUTOS += filamentspool-storarm3
 
-USING_AUTOS ?= $(FILAMENTSPOOL_AUTOS) xeno-drivebay-bracket dungeonquest-cone anke-gps-bracket cable-hole-trunking-cover anglepoise-neck crossbar-computer-led-mount wardrobe-hook knifeblock pandemic-counter pattress-boxes-3-cover bike-lipo-box earring-stand
+USING_AUTOS ?= $(FILAMENTSPOOL_AUTOS) xeno-drivebay-bracket dungeonquest-cone anke-gps-bracket cable-hole-trunking-cover anglepoise-neck crossbar-computer-led-mount wardrobe-hook knifeblock pandemic-counter pattress-boxes-3-cover bike-lipo-box earring-stand sewing-table
 
 AUTO_TOPLEVELS := $(foreach m,$(USING_AUTOS),$(shell $(PLAY)/toplevel-find $m))
 
index eb7dc2a..37c2be0 100644 (file)
@@ -30,7 +30,7 @@ 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;
+interlock_negative_rad = interlock_rad + 0.125;
 
 module Post(){
   mirror([0,0,1]) {
@@ -102,19 +102,21 @@ module RoundLeftCorner(this_post, right_post) {
   }
 }
 
-module InterlockCore(r) {
+module InterlockCore(r, plusth, ymir) {
   dx = sqrt(3) * r;
   $fn= 80;
-  translate([0, -thehd[0], 1]){
-    mirror([0,0,1]){
-      linear_extrude(height=tile_th+2){
-       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);
+  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);
+           }
          }
        }
       }
@@ -124,17 +126,21 @@ module InterlockCore(r) {
 
 module InterlockNegative(this_post, right_post) {
   INREFFRAME(this_post, right_post)
-    InterlockCore(interlock_negative_rad);
+    InterlockCore(interlock_negative_rad, 1, 0);
 }
 
-module TestPiece1(){
+module Interlock(this_post, right_post) {
+  INREFFRAME(this_post, right_post)
+    InterlockCore(interlock_rad, 0, 1);
+}
+
+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]);
@@ -142,4 +148,24 @@ module TestPiece1(){
   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();