From e5937a67002892f5b4e1925ae0b379158bf02946 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 30 Dec 2016 16:18:18 +0000 Subject: [PATCH] sewing-table: introduce INREFFRAME --- .gitignore | 1 + Makefile | 2 +- sewing-table.scad => sewing-table.scad.m4 | 50 +++++++++++------------ 3 files changed, 25 insertions(+), 28 deletions(-) rename sewing-table.scad => sewing-table.scad.m4 (65%) diff --git a/.gitignore b/.gitignore index f53fd18..71fbe9e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ commitid-best-test.scad filamentspool-number-n*.dxf filamentspool-number-n*.eps sealing-box.scad +sewing-table.scad diff --git a/Makefile b/Makefile index c402fe3..1aac776 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ USING_AUTOS ?= $(FILAMENTSPOOL_AUTOS) xeno-drivebay-bracket dungeonquest-cone an AUTO_TOPLEVELS := $(foreach m,$(USING_AUTOS),$(shell $(PLAY)/toplevel-find $m)) -AUTO_INCS = funcs.scad utils.scad sealing-box.scad +AUTO_INCS = funcs.scad utils.scad sealing-box.scad sewing-table.scad default: autoincs scads diff --git a/sewing-table.scad b/sewing-table.scad.m4 similarity index 65% rename from sewing-table.scad rename to sewing-table.scad.m4 index 0da937c..3d2ce81 100644 --- a/sewing-table.scad +++ b/sewing-table.scad.m4 @@ -54,43 +54,39 @@ module TileBase(botleft_post, topright_post){ cube([size[0], size[1], tile_th]); } -module RoundEdge(left_post, right_post) { - length_vec = right_post - left_post; +m4_dnl INREFFRAME(left_post, right_post, morevars) { body; } +m4_define(`INREFFRAME',` + length_vec = ($2) - ($1); length = dist2d([0,0], length_vec); length_uvec = length_vec / length; ortho_uvec = [ -length_uvec[1], length_uvec[0] ]; - m = [ [ length_uvec[0], ortho_uvec[0], 0, left_post[0], ], - [ length_uvec[1], ortho_uvec[1], 0, left_post[1], ], + m = [ [ length_uvec[0], ortho_uvec[0], 0, ($1)[0], ], + [ length_uvec[1], ortho_uvec[1], 0, ($1)[1], ], [ 0, 0, 1, 0, ], [ 0, 0, 0, 1, ] ]; - tlength = length + thehd[1] * 2; - multmatrix(m) { - translate([-thehd[1], -thehd[0], -round_edge_rad]){ - difference(){ - rotate([0,90,0]) - cylinder(r= round_edge_rad, h= tlength, $fn=50); - translate([-1, 0, -20]) - cube([tlength+2, 20, 20]); - } + $3 + multmatrix(m) + 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 ' + difference(){ + rotate([0,90,0]) + cylinder(r= round_edge_rad, h= tlength, $fn=50); + translate([-1, 0, -20]) + cube([tlength+2, 20, 20]); } } } module RoundLeftCorner(this_post, right_post) { - length_vec = right_post - this_post; - length_uvec = length_vec - dist2d([0,0], length_vec); - ortho_uvec = [ -length_uvec[1], length_uvec[0] ]; - m = [ [ length_uvec[0], ortho_uvec[0], 0, this_post[0], ], - [ length_uvec[1], ortho_uvec[1], 0, this_post[1], ], - [ 0, 0, 1, 0, ], - [ 0, 0, 0, 1, ] ]; - multmatrix(m) { - translate([-thehd[1], -thehd[0], -round_edge_rad]){ - difference(){ - sphere(r= round_edge_rad, $fn=60); - translate([0,0, -20]) - cube([20,20,20]); - } + INREFFRAME(this_post, right_post){ + difference(){ + sphere(r= round_edge_rad, $fn=60); + translate([0,0, -20]) + cube([20,20,20]); } } } -- 2.30.2