#! /bin/sh set -e # paramsets contains the location of the OpenSCAD parameter sets. # see https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Customizer#Saving_Parameters_value_in_JSON_file paramsets=params.json # run executes a program after printing the commandline to stdout. run () { echo "=== $*" "$@" } # render turns OpenSCAD echo into 3mf temperature changes. # # It does this by kludging together a PrusaSlicer-specific Metadata file. render () { basename=$1; shift run openscad -o $basename "$@" temp-tower.scad 2>&1 | tee $basename.log mkdir -p Metadata custom=Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml ( echo '' echo '' sed -n 's/ECHO: "CUSTOM##\(.*\)"/\1/p' $basename.log echo '' echo '' ) > $custom run zip $basename $custom rm $custom $basename.log rmdir Metadata } # paramsets lists all defined parameter sets, one per line. paramsets () { cat $paramsets | jq -r '.parameterSets | keys[] | select(length > 0)' } case "$1" in -h|-help|--help) cat <