TEMPDIR=$(mktemp -d) INPUT_CSG='nix.scad' PARAMFILE='nix.json' function export_svg() { COLORS=$( openscad -p "${PARAMFILE}" -P "${PROFILE}" "$INPUT_CSG" -o "${TEMPDIR}/no_color.svg" -D "module color(c) {echo(mowmow = str(c));}" 2>&1 | grep -Po '(?<=(mowmow = \"))(#[0-9a-fA-F]{6}|[0-9a-fA-F]{8})' | sort -u ); SVGFILE=out/${PROFILE}.svg { cat < ${PROFILE} EOF for color in $COLORS; do openscad -p "${PARAMFILE}" -P "${PROFILE}" "$INPUT_CSG" --export-format svg -o - -D "module color(c) {if (c == \"${color}\") children();}" 2>/dev/null| sed "s/stroke=\"black\"//g" | sed "s/stroke-width=\"0.5\"//g" | sed "s/lightgray/${color}/g" | grep -Pzo '' | # drop the Null head -c-1 echo done cat < EOF } > ${SVGFILE} inkscape --actions="file-open:${SVGFILE};select-all;fit-canvas-to-selection;export-filename:${SVGFILE};export-do;file-close" } for profile in nix nix-megagrid nix-white; do export PROFILE=$profile export_svg done