bakje/render.sh

91 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
OPENSCAD=openscad
PRUSASLICER="flatpak run com.prusa3d.PrusaSlicer"
function slice(){
part=$1
size=$2
count=$3
fileName="${part}/${size}/${count}-{print_time}.gcode"
mkdir -p "${part}/${size}"
${PRUSASLICER} \
--slice \
--load \"bakje.ini\" \
--duplicate ${count} \
--output "${fileName}" \
stl/${part}-${size}.stl || exit 1
sleep 0.5
}
function renderBakjes(){
for part in bakje grid ;
do
for x in {1..4}
do
for y in {1..4}
do
echo "$0: render $part ${x}x${y}"
${OPENSCAD} -o stl/"${part}-${x}x${y}.stl" \
-D "RENDER=\"${part}\"" \
-D WIDTH=${x} \
-D DEPTH=${y} \
"bakje.scad" || exit 1
max=$(echo -e "$x\n$y" | sort --numeric-sort --reverse | head --lines 1)
min=$(echo -e "$x\n$y" | sort --numeric-sort | head --lines 1)
if [ "$max" == "$min" ]
then
if [ "${x}" == "1" ]
then
dubs=(1 2 4 6 9 12 16)
elif [ "${x}" == "2" ]
then
dubs=(1 2 4)
else
dubs=(1)
fi
elif [ "${min}" == "1" ]
then
if [ "${max}" == "2" ]
then
dubs=(1 2 4 6 8)
elif [ "${max}" == "3" ]
then
dubs=(1 2 3 4)
elif [ "${max}" == "4" ]
then
dubs=(1 2 4)
fi
elif [ "${min}" == "2" ]
then
dubs=(1 2)
else
dubs=(1)
fi
for dub in ${dubs[*]}
do
echo "$0: slice $dub dublicates of $part ${x}x${y}"
slice ${part} ${x}x${y} ${dub}
done
done
done
done
# bakje bobbin
echo "$0: render bakje bobbin"
${OPENSCAD} -o "stl/bakje-bobbin-2x2.stl" \
-D WIDTH=${x} \
-D DEPTH=${y} \
"bakje_bobbin.scad" || exit 1
slice "bakje" "bobbin-2x2" 1
}
mkdir -p stl bakje grid koffer
rm stl/*
rm -r bakje/* grid/*
renderBakjes