pre-bemis
This commit is contained in:
68
rpi-case/.claude/skills/openscad/tools/multi-preview.sh
Executable file
68
rpi-case/.claude/skills/openscad/tools/multi-preview.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
# Generate preview images from multiple angles
|
||||
# Usage: multi-preview.sh input.scad output_dir/ [-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_dir/ [-D 'var=value' ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INPUT="$1"
|
||||
OUTPUT_DIR="$2"
|
||||
shift 2
|
||||
|
||||
# Collect -D parameters
|
||||
DEFINES=()
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-D)
|
||||
shift
|
||||
DEFINES+=("-D" "$1")
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
|
||||
# Get base name without extension
|
||||
BASENAME=$(basename "$INPUT" .scad)
|
||||
|
||||
echo "Generating multi-angle previews for: $INPUT"
|
||||
echo "Output directory: $OUTPUT_DIR"
|
||||
echo ""
|
||||
|
||||
# Define angles as name:camera pairs
|
||||
# Camera format: translate_x,translate_y,translate_z,rot_x,rot_y,rot_z,distance
|
||||
ANGLES="iso:0,0,0,55,0,25,0
|
||||
front:0,0,0,90,0,0,0
|
||||
back:0,0,0,90,0,180,0
|
||||
left:0,0,0,90,0,90,0
|
||||
right:0,0,0,90,0,-90,0
|
||||
top:0,0,0,0,0,0,0"
|
||||
|
||||
echo "$ANGLES" | while IFS=: read -r angle camera; do
|
||||
output="$OUTPUT_DIR/${BASENAME}_${angle}.png"
|
||||
|
||||
echo " Rendering $angle view..."
|
||||
$OPENSCAD \
|
||||
--camera="$camera" \
|
||||
--imgsize="800,600" \
|
||||
--colorscheme="Tomorrow Night" \
|
||||
--autocenter \
|
||||
--viewall \
|
||||
"${DEFINES[@]}" \
|
||||
-o "$output" \
|
||||
"$INPUT" 2>/dev/null
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Generated previews:"
|
||||
ls -la "$OUTPUT_DIR"/${BASENAME}_*.png
|
||||
Reference in New Issue
Block a user