#!/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 h in {2..10} do for x in {1..4} do for y in {1..4} do for mode in {0..1} do size=${x}x${y}x${h} if [[ "$mode" = "0" ]] then size="$size-default" elif [[ "$mode" = "1" ]] then size="$size-deep" elif [[ "$mode" = "2" ]] then size="$size-full" fi echo "$0: render $part ${size}" ${OPENSCAD} -o stl/"${part}-${size}.stl" --cache=file \ -D "RENDER_GF_BASE=true" \ -D WIDTH=${x} \ -D DEPTH=${y} \ -D HIEGHT=${h} \ -D MODE=${mode} \ "gridfinity.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 "$size"" slice ${part} "$size" ${dub} done done done done done done echo "$0: render bakje sewing_spools" ${OPENSCAD} -o "stl/bakje-gf_sewing_spools-2x2.stl" \ "gf_sewing_spools.scad" || exit 1 slice "bakje" "gf_sewing_spools-2x2" 1 slice "bakje" "gf_sewing_spools-2x2" 2 slice "bakje" "gf_sewing_spools-2x2" 4 } mkdir -p stl bakje grid koffer # rm stl/* # rm -r bakje/* grid/* renderBakjes