diff --git a/doc/threedvis/src/threedvis/core.clj b/doc/threedvis/src/threedvis/core.clj index 49b7e4b..09cc6ac 100644 --- a/doc/threedvis/src/threedvis/core.clj +++ b/doc/threedvis/src/threedvis/core.clj @@ -5,6 +5,8 @@ (defn print-scad [shape] (spit "threedvis.scad" (write-scad shape))) +(def first-led (atom 1)) + (defn led [edge] (let [long-leg (cylinder 1.5 100)] (union @@ -19,17 +21,23 @@ (union (translate [0 5 -30] (cylinder 1.5 50)) (translate [7 5 -60] (rotate (/ pi 4) [0 -1 0] (cylinder 1.5 20)))) - (translate [14 5 -122] (cylinder 1.5 110)) + (translate [14 5 -117] (cylinder 1.5 100)) (rotate (/ pi 6) [0 1 0] (union (translate [4 -5 -10] (cylinder 1.5 15)) (if (not edge) (translate [4 -54 -17] (rotate (/ pi 2) [1 0 0] long-leg))))) (if edge (translate [44 -4 -17] (rotate (/ pi 2) [0 1 0] long-leg))))))) +(defn color-led [endpos] + (let [pos (swap! first-led inc)] + (if (= 6 pos) + (color [1 0 0] (led endpos)) + (led endpos)))) + (defn one-pos [endpos] (union - (translate [0 0 0] (led endpos)) - (translate [0 0 100] (led endpos)) - (translate [0 0 200] (led endpos)))) + (translate [0 0 0] (color-led endpos)) + (translate [0 0 100] (color-led endpos)) + (translate [0 0 200] (color-led endpos)))) (defn one-column [] (union diff --git a/doc/threedvis/threedvis.scad b/doc/threedvis/threedvis.scad index 7d72f52..4eea421 100644 --- a/doc/threedvis/threedvis.scad +++ b/doc/threedvis/threedvis.scad @@ -33,8 +33,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -80,8 +80,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -127,8 +127,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -178,8 +178,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -197,45 +197,47 @@ translate ([-100, -100, -100]) { } } translate ([0, 0, 100]) { - union () { - color ([0.5, 0.5, 2, ]) { - difference () { + color ([1, 0, 0, ]) { + union () { + color ([0.5, 0.5, 2, ]) { + difference () { + union () { + cylinder (h=20, r=10, center=true); + translate ([0, 0, 10]) { + sphere (r=10, center=true); + } + translate ([0, 0, -8]) { + cylinder (h=4, r=13, center=true); + } + } + translate ([0, 13, -7]) { + cube ([30, 5, 10], center=true); + } + } + } + color ([0.3, 0.3, 0.3, ]) { union () { - cylinder (h=20, r=10, center=true); - translate ([0, 0, 10]) { - sphere (r=10, center=true); + translate ([0, 5, -30]) { + cylinder (h=50, r=1.5, center=true); } - translate ([0, 0, -8]) { - cylinder (h=4, r=13, center=true); + translate ([7, 5, -60]) { + rotate (a=45.0, v=[0, -1, 0]) { + cylinder (h=20, r=1.5, center=true); + } } } - translate ([0, 13, -7]) { - cube ([30, 5, 10], center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } - } - } - color ([0.3, 0.3, 0.3, ]) { - union () { - translate ([0, 5, -30]) { - cylinder (h=50, r=1.5, center=true); - } - translate ([7, 5, -60]) { - rotate (a=45.0, v=[0, -1, 0]) { - cylinder (h=20, r=1.5, center=true); - } - } - } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); - } - rotate (a=29.999999999999996, v=[0, 1, 0]) { - union () { - translate ([4, -5, -10]) { - cylinder (h=15, r=1.5, center=true); - } - translate ([4, -54, -17]) { - rotate (a=90.0, v=[1, 0, 0]) { - cylinder (h=100, r=1.5, center=true); + rotate (a=29.999999999999996, v=[0, 1, 0]) { + union () { + translate ([4, -5, -10]) { + cylinder (h=15, r=1.5, center=true); + } + translate ([4, -54, -17]) { + rotate (a=90.0, v=[1, 0, 0]) { + cylinder (h=100, r=1.5, center=true); + } } } } @@ -272,8 +274,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -323,8 +325,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -370,8 +372,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -417,8 +419,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -472,8 +474,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -519,8 +521,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -566,8 +568,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -617,8 +619,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -664,8 +666,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -711,8 +713,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -762,8 +764,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -809,8 +811,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -856,8 +858,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -911,8 +913,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -958,8 +960,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1005,8 +1007,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1056,8 +1058,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1103,8 +1105,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1150,8 +1152,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1201,8 +1203,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1248,8 +1250,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () { @@ -1295,8 +1297,8 @@ translate ([-100, -100, -100]) { } } } - translate ([14, 5, -122]) { - cylinder (h=110, r=1.5, center=true); + translate ([14, 5, -117]) { + cylinder (h=100, r=1.5, center=true); } rotate (a=29.999999999999996, v=[0, 1, 0]) { union () {