#!/bin/bash SRC="${1}" FILENAME=$(basename "${1}") NAME="${FILENAME%.*}" THEME=DeepOcean function generateStl () { openscad --enable manifold -D VERBOSE=false -D PART=\"${2}\" --export-format=asciistl -o "stl/${NAME}_${2}.stl" "${1}" } function sortStl () { python3 scad/common/c14n_stl.py "stl/${NAME}_${1}.stl" } function generateJpeg () { openscad --enable manifold --viewall --render --imgsize=512,512 --colorscheme=${THEME} -o "img/${NAME}_${2}.png" "${1}" convert "img/${NAME}_${2}.png" -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB "img/${NAME}_${2}.jpg" rm -f "img/${NAME}_${2}.png" } function generateScad () { generateStl "${SRC}" "${1}" sortStl "${1}" generateJpeg "${SRC}" "${1}" } function getParts () { tmpFile=$(mktemp) cat "${SRC}" | grep "PART ==" | awk -F'==' '{print $2}' | awk -F'"' '{print $2}' | awk -F'"' '{print $1}' | sort > "${tmpFile}" echo "${tmpFile}" } if [[ -z "${2}" ]]; then echo "Generate all parts in ${SRC}..." partsList=$(getParts) while read part; do echo "Generating ${part}..." generateScad "${part}" done < "${partsList}" else echo "Generating ${2} in ${SRC}..." generateScad "${2}" fi