#!/usr/bin/env bash function bom() { openscad --export-format echo -o - assembly.scad |grep 'BOM: print' } function run_scad() { openscad --export-format echo -o - "$@" gen_parts.scad | sed -ne '/^ECHO: /{' -e 's/^ECHO: "\(.*\)"$/\1/' -e p -e '}' } function partcount() { run_scad -D id=0 } nparts=$(partcount |sed -e 's/Children: //') mkdir -p print for i in $(seq $nparts); do part_name="$(run_scad -D id=$i |grep 'BOM: print' |sed -e 's/BOM: print \([^(]*\).*/\1/')" printf "%s: <%s>\n" $i "$part_name" fname="print/${i}_${part_name}" openscad -o "${fname}.3mf" \ -D id=$i \ gen_parts.scad done #run_scad -D id=1