update puzzle to latest version to match solution instructions
[ozzloy@gmail.com/3d-printables] / place-value-manipulative.scad
index 2ac9ecb268e92879b79c5f9f69b534a9a72b1c58..85cf0fd7fb32b71a01aff28b1276aa16768f3638 100644 (file)
@@ -4,16 +4,39 @@
   please do not remove this notice.
 */
 
-//$fn = 30; // use this while editing
-$fn = 100; // use this for generating STL
+/*****************************************************/
+/* binary */
+//ones_place();
+//twos_place();
+//fours_place();
+//eights_place();
+
+/*****************************************************/
+/* trinary */
+//ones_place();
+//threes_place();
+//nines_place();
+twenty_sevens_place();
+
+/*****************************************************/
+/* decimal */
+//ones_place();
+//tens_place();
+//hundreds_place();
+//thousands_place();
 
-// how big each ones place side is
+// use this while editing so previewing is faster:
+//$fn = 30;
+// use this for generating STL so model is more accurate:
+$fn = 100;
+
+// how big each ones place side is in millimeters
 side_length = 20;
 
 // modify this to your aesthetic taste
 corner_radius = side_length / 6;
 
-connector_thickness = corner_radius;
+connector_thickness = side_length / 4;
 
 fudge = 0.1;
 
@@ -26,7 +49,7 @@ module round_inside_corners(r) {
 module round_outside_corners(r) {
   fillet(-r) children(); }
 
-module connector_base(connector_thickness) {
+module connector_tab(connector_thickness) {
   rotate([0, -90, -90]) {
     translate([corner_radius / 2, 0, 0]) {
       linear_extrude(height = connector_thickness) {
@@ -42,47 +65,71 @@ module ones_place() {
     linear_extrude(height = side_length) {
       round_outside_corners(corner_radius) {
         square(side_length); } }
-    translate([side_length / 2, -0.1, -0.1]) {
-      connector_base(connector_thickness); }
+    translate([side_length / 2, -fudge, -fudge]) {
+      connector_tab(connector_thickness); }
     translate([side_length / 2,
                side_length - connector_thickness + fudge,
                -fudge]) {
-      connector_base(connector_thickness); } }
+      connector_tab(connector_thickness); } }
   translate([side_length / 2,
              0,
-             side_length - 3 * fudge]) {
-    connector_base(connector_thickness - 3 * fudge); }
+             side_length - 2 * fudge]) {
+    connector_tab(connector_thickness - 2 * fudge); }
   translate([side_length / 2,
-             side_length - connector_thickness + 3 * fudge,
-             side_length - 3 * fudge]) {
-    connector_base(connector_thickness - 3 * fudge); } }
+             side_length - connector_thickness + 2 * fudge,
+             side_length - 2 * fudge]) {
+    connector_tab(connector_thickness - 2 * fudge); } }
 
+/*****************************************************/
+/* decimal */
 module tens_place() {
   for(ones_index = [0 : (10 - 1)]) {
-    translate([ones_index * side_length, 0]) {
+    translate([ones_index * side_length, 0, 0]) {
       ones_place(); } } }
 
 module hundreds_place() {
   for(tens_index = [0 : (10 - 1)]) {
-    for(ones_index = [0 : (10 - 1)]) {
-      translate([ones_index * side_length,
-                 tens_index * side_length]) {
-        ones_place(); } } } }
+    translate([0, tens_index * side_length, 0]) {
+      tens_place(); } } }
 
 module thousands_place() {
   for(hundreds_index = [0 : (10 - 1)]) {
-    for(tens_index = [0 : (10 - 1)]) {
-      for(ones_index = [0 : (10 - 1)]) {
-        translate([ones_index * side_length,
-                   tens_index * side_length,
-                   hundreds_index * side_length]) {
-          ones_place(); } } } } }
+        translate([0, 0, hundreds_index * side_length]) {
+          hundreds_place(); } } }
 
 
+/*****************************************************/
+/* binary */
+module twos_place() {
+  for(ones_index = [0 : (2 - 1)]) {
+    translate([ones_index * side_length, 0, 0]) {
+      ones_place(); } } }
 
-//connector_base(connector_thickness);
+module fours_place() {
+  for(twos_index = [0 : (2 - 1)]) {
+    translate([0, twos_index * side_length, 0]) {
+      twos_place(); } } }
+
+module eights_place() {
+  for(fours_index = [0 : (2 - 1)]) {
+        translate([0, 0, fours_index * side_length]) {
+          fours_place(); } } }
+
+/*****************************************************/
+/* trinary */
+module threes_place() {
+  for(ones_index = [0 : (3 - 1)]) {
+    translate([ones_index * side_length, 0, 0]) {
+      ones_place(); } } }
 
-ones_place();
-//tens_place();
-//hundreds_place();
-//thousands_place();
+module nines_place() {
+  for(threes_index = [0 : (3 - 1)]) {
+    translate([0, threes_index * side_length, 0]) {
+      threes_place(); } } }
+
+module twenty_sevens_place() {
+  for(nines_index = [0 : (3 - 1)]) {
+        translate([0, 0, nines_index * side_length]) {
+          nines_place(); } } }
+
+//connector_tab(connector_thickness);