From 4ff8fa021be304a99da30647d8db60e189d32b4d Mon Sep 17 00:00:00 2001 From: TQ Hirsch Date: Sat, 5 Mar 2022 15:32:19 +0100 Subject: [PATCH] Added tool to generate BOM --- gen_parts.scad | 19 +++++++++++++++++++ genbom.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 gen_parts.scad create mode 100644 genbom.sh diff --git a/gen_parts.scad b/gen_parts.scad new file mode 100644 index 0000000..80a51f2 --- /dev/null +++ b/gen_parts.scad @@ -0,0 +1,19 @@ +use ; + +module genpart(id = 0) { + if (id <= 0) { + echo(str("Children: ", $children)); + } else { + children(id-1); + } +} + +genpart(id) { + flcorner(); + frcorner(); + brcorner(); + blcorner(); + ysled_slider(177.8); + ysled_slider(177.8); + xsled2(); +} diff --git a/genbom.sh b/genbom.sh new file mode 100644 index 0000000..bac166e --- /dev/null +++ b/genbom.sh @@ -0,0 +1,27 @@ +#!/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