57 lines
1.1 KiB
Bash
Executable File
57 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Export OpenSCAD file to STL
|
|
# Usage: export-stl.sh input.scad output.stl [-D 'var=value' ...]
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
source "$SCRIPT_DIR/common.sh"
|
|
|
|
check_openscad
|
|
|
|
if [ $# -lt 2 ]; then
|
|
echo "Usage: $0 input.scad output.stl [-D 'var=value' ...]"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " $0 box.scad box.stl"
|
|
echo " $0 box.scad box_large.stl -D 'width=80' -D 'height=60'"
|
|
exit 1
|
|
fi
|
|
|
|
INPUT="$1"
|
|
OUTPUT="$2"
|
|
shift 2
|
|
|
|
# Collect -D parameters
|
|
DEFINES=()
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
-D)
|
|
shift
|
|
DEFINES+=("-D" "$1")
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Ensure output directory exists
|
|
mkdir -p "$(dirname "$OUTPUT")"
|
|
|
|
echo "Exporting STL: $INPUT -> $OUTPUT"
|
|
if [ ${#DEFINES[@]} -gt 0 ]; then
|
|
echo "Parameters: ${DEFINES[*]}"
|
|
fi
|
|
|
|
$OPENSCAD \
|
|
"${DEFINES[@]}" \
|
|
-o "$OUTPUT" \
|
|
"$INPUT"
|
|
|
|
# Show file info
|
|
SIZE=$(ls -lh "$OUTPUT" | awk '{print $5}')
|
|
echo "STL exported: $OUTPUT ($SIZE)"
|