pre-bemis

This commit is contained in:
Marcelo
2026-04-22 05:04:19 +00:00
parent ac1a7900c8
commit 80d27f83b6
91 changed files with 11769 additions and 820 deletions

View File

@@ -0,0 +1,91 @@
#!/bin/bash
# Render OpenSCAD with parameters from a JSON file
# Usage: render-with-params.sh input.scad params.json output.stl|output.png
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "$SCRIPT_DIR/common.sh"
check_openscad
if [ $# -lt 3 ]; then
echo "Usage: $0 input.scad params.json output.[stl|png]"
echo ""
echo "params.json format:"
echo ' {"width": 60, "height": 40, "include_lid": true}'
exit 1
fi
INPUT="$1"
PARAMS_FILE="$2"
OUTPUT="$3"
if [ ! -f "$INPUT" ]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
if [ ! -f "$PARAMS_FILE" ]; then
echo "Error: Params file not found: $PARAMS_FILE"
exit 1
fi
# Build -D arguments from JSON
DEFINES=()
while IFS= read -r line; do
# Parse each key-value pair
key=$(echo "$line" | cut -d'=' -f1)
value=$(echo "$line" | cut -d'=' -f2-)
if [ -n "$key" ]; then
DEFINES+=("-D" "$key=$value")
fi
done < <(
# Use python or jq to parse JSON to key=value lines
if command -v python3 &> /dev/null; then
python3 -c "
import json
with open('$PARAMS_FILE') as f:
params = json.load(f)
for k, v in params.items():
if isinstance(v, bool):
print(f'{k}={str(v).lower()}')
elif isinstance(v, str):
print(f'{k}=\"{v}\"')
else:
print(f'{k}={v}')
"
elif command -v jq &> /dev/null; then
jq -r 'to_entries | .[] | "\(.key)=\(.value)"' "$PARAMS_FILE"
else
echo "Error: Requires python3 or jq to parse JSON"
exit 1
fi
)
echo "Rendering with parameters from: $PARAMS_FILE"
echo "Parameters: ${DEFINES[*]}"
# Determine output type and set appropriate options
EXT="${OUTPUT##*.}"
case "$EXT" in
stl|STL)
$OPENSCAD "${DEFINES[@]}" -o "$OUTPUT" "$INPUT"
;;
png|PNG)
$OPENSCAD "${DEFINES[@]}" \
--camera="0,0,0,55,0,25,0" \
--imgsize="800,600" \
--colorscheme="Tomorrow Night" \
--autocenter --viewall \
-o "$OUTPUT" "$INPUT"
;;
*)
echo "Unsupported output format: $EXT"
echo "Supported: stl, png"
exit 1
;;
esac
echo "Output saved: $OUTPUT"