2025-02-03 00:51:24 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
SRC="${1}"
|
|
|
|
FILENAME=$(basename "${1}")
|
|
|
|
NAME="${FILENAME%.*}"
|
|
|
|
THEME=DeepOcean
|
|
|
|
|
|
|
|
function generateStl () {
|
2025-02-03 01:05:25 +00:00
|
|
|
openscad --enable manifold -D VERBOSE=false -D PART=\"${2}\" --export-format=asciistl -o "stl/${NAME}_${2}.stl" "${1}"
|
2025-02-03 00:51:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function sortStl () {
|
2025-02-03 01:05:25 +00:00
|
|
|
python3 scad/common/c14n_stl.py "stl/${NAME}_${1}.stl"
|
2025-02-03 00:51:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function generateJpeg () {
|
2025-02-03 01:05:25 +00:00
|
|
|
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"
|
2025-02-03 00:51:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function generateScad () {
|
|
|
|
generateStl "${SRC}" "${1}"
|
|
|
|
sortStl "${1}"
|
|
|
|
generateJpeg "${SRC}" "${1}"
|
|
|
|
}
|
|
|
|
|
|
|
|
function getParts () {
|
|
|
|
tmpFile=$(mktemp)
|
2025-02-03 01:05:25 +00:00
|
|
|
cat "${SRC}" | grep "PART ==" | awk -F'==' '{print $2}' | awk -F'"' '{print $2}' | awk -F'"' '{print $1}' | sort > "${tmpFile}"
|
2025-02-03 00:51:24 +00:00
|
|
|
echo "${tmpFile}"
|
|
|
|
}
|
|
|
|
|
|
|
|
if [[ -z "${2}" ]]; then
|
2025-02-03 01:05:25 +00:00
|
|
|
echo "Generate all parts in ${SRC}..."
|
2025-02-03 00:51:24 +00:00
|
|
|
partsList=$(getParts)
|
|
|
|
while read part; do
|
2025-02-03 01:05:25 +00:00
|
|
|
echo "Generating ${part}..."
|
2025-02-03 00:51:24 +00:00
|
|
|
generateScad "${part}"
|
|
|
|
done < "${partsList}"
|
|
|
|
else
|
2025-02-03 01:05:25 +00:00
|
|
|
echo "Generating ${2} in ${SRC}..."
|
2025-02-03 00:51:24 +00:00
|
|
|
generateScad "${2}"
|
|
|
|
fi
|
|
|
|
|