temperature-tower

3d printable temperature tower
git clone https://git.woozle.org/neale/temperature-tower.git

commit
78ae418
parent
2d9aff4
author
Neale Pickett
date
2023-11-26 15:34:26 -0700 MST
More general file creation
2 files changed,  +53, -37
M build.sh
+9, -10
 1@@ -17,20 +17,19 @@ run () {
 2 # It does this by kludging together a PrusaSlicer-specific Metadata file.
 3 render () {
 4     basename=$1; shift
 5-    run openscad -o $basename "$@" temp-tower.scad 2>&1 | tee $basename.log
 6+    logfile=$basename.log
 7+    run openscad -o $basename "$@" temp-tower.scad 2>&1 | tee $logfile
 8 
 9+    rm -rf Metadata
10     mkdir -p Metadata
11-    custom=Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml
12-    (
13-        echo '<?xml version="1.0" encoding="utf-8"?>'
14-        echo '<custom_gcodes_per_print_z>'
15-        sed -n 's/ECHO: "CUSTOM##\(.*\)"/\1/p' $basename.log
16-        echo '<mode value="SingleExtruder"/>'
17-        echo '</custom_gcodes_per_print_z>'
18-    ) > $custom
19+    cat $logfile | while IFS=# read _ _ custom type path text _; do
20+        [ "$custom#$type" = "CUSTOM#3mf" ] || continue
21+        echo $text >> $path
22+    done
23+
24     run zip $basename $custom
25     
26-    rm $custom $basename.log
27+    rm $custom $logfile
28     rmdir Metadata
29 }
30 
M temp-tower.scad
+44, -27
 1@@ -84,35 +84,52 @@ module EngraveText(text) {
 2         text(text, size=3.2, valign="center", font=Font);
 3 }
 4 
 5-module Custom(text) {
 6-    echo(str("CUSTOM##", text));
 7+// Ouptut special code to add to 3mf file
 8+module ZCodeWrite(text) {
 9+    echo(str(
10+        "#",
11+        "#CUSTOM",
12+        "#3mf",
13+        "#Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml",
14+        "#", text,
15+        "##"
16+    ));
17 }
18 
19-difference() {
20-    union() {
21-        cube([25, 5, PlateHeight]); // Floor plate
22-        for (tier = [0 : 1 : Tiers-1]) {
23-            z = PlateHeight + (5 * tier);
24-            temp = TempBase + (TempIncrease * tier);
25-            Custom(str(
26-                "<code print_z=\"", z, "\"",
27-                    " type=\"4\"",
28-                    " extruder=\"1\"", 
29-                    " color=\"\"",
30-                    " extra=\"M104 S", temp, "\"",
31-                    " gcode=\"M104 S", temp, "\"/>",
32-                ""
33-            ));
34-            translate([0, 0, z]) Tier(temp);
35+module main() {
36+    ZCodeWrite("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
37+    ZCodeWrite("<custom_gcodes_per_print_z>");
38+    difference() {
39+        union() {
40+            cube([25, 5, PlateHeight]); // Floor plate
41+            for (tier = [0 : 1 : Tiers-1]) {
42+                z = PlateHeight + (5 * tier);
43+                temp = TempBase + (TempIncrease * tier);
44+                ZCodeWrite(str(
45+                    "<code print_z=\"", z, "\"",
46+                        " type=\"4\"",
47+                        " extruder=\"1\"", 
48+                        " color=\"\"",
49+                        " extra=\"M104 S", temp, "\"",
50+                        " gcode=\"M104 S", temp, "\"/>",
51+                    ""
52+                ));
53+                translate([0, 0, z]) Tier(temp);
54+            }
55+        }
56+        if (FullTower) {
57+            translate([25 - EngraveDepth, 2.5, 1+PlateHeight])
58+                rotate([90, -90, 90])
59+                    EngraveText(SideText);
60+        } else {
61+            translate([4 + EngraveDepth, 2.5, 1+PlateHeight])
62+                rotate([90, -90, -90])
63+                    EngraveText(SideText);
64         }
65     }
66-    if (FullTower) {
67-        translate([25 - EngraveDepth, 2.5, 1+PlateHeight])
68-            rotate([90, -90, 90])
69-                EngraveText(SideText);
70-    } else {
71-        translate([4 + EngraveDepth, 2.5, 1+PlateHeight])
72-            rotate([90, -90, -90])
73-                EngraveText(SideText);
74-    }
75+    ZCodeWrite("<mode value=\"SingleExtruder\"/>");
76+    ZCodeWrite("</custom_gcodes_per_print_z>");
77 }
78+
79+main();
80+