common/scad.sh

46 lines
1.2 KiB
Bash

#!/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