#!/bin/sh # Grouper: every check, one Blender at a time (sh build/run_checks.sh). Tender_Grouper.blend, the ship file and the docking-arm # file are opened read-only and never saved. Results in build/checks/*.json; the README's checks table quotes them. B="/e/Steam/steamapps/common/Blender/blender.exe" P="/e/Tools/Programs/Python/python.exe" SHIP=../M_Ship_v2_interior_season2.blend ARM=../docking-arm/DockArm_Carousel.blend cd "$(dirname "$0")/.." # the model itself "$B" -b Tender_Grouper.blend --python build/gr_dump.py 2>&1 | grep -E "DUMP drivers|Traceback|Error" | cut -c1-400 ; true "$B" -b Tender_Grouper.blend --python build/gr_motion_check.py 2>&1 | grep -E "MOTION|Traceback|Error" ; true "$B" -b Tender_Grouper.blend --python build/gr_view_check.py 2>&1 | grep -E "VIEW|Traceback|Error" | cut -c1-400 ; true "$B" -b Tender_Grouper.blend --python build/gr_cabin_check.py 2>&1 | grep -E "CABIN|Traceback|Error" | cut -c1-600 ; true "$B" -b Tender_Grouper.blend --python build/gr_clamp_probe.py 2>&1 | grep -E "CLAMP|Traceback|Error" | cut -c1-600 ; true "$B" -b Tender_Grouper.blend --python build/gr_clash_audit.py 2>&1 | grep -E "CLASH pieces|Traceback|Error" ; true "$B" -b Tender_Grouper.blend --python build/gr_fold_audit.py 2>&1 | grep -E "TWIST summary|Traceback|Error" ; true # (round 3) the skin's topology and its design lines (build/checks/skin_struct.json, written by the build) "$P" build/gr_topo_check.py | grep -E "TOPO (A lines|B_|C_|valence)" | cut -c1-300 # critique round 2: see-through holes (faces seen from behind from outside) and the claw pockets (the Critique's scripts) "$B" -b Tender_Grouper.blend --python build/gr_holes.py 2>&1 | grep -E "CR2|Traceback|Error" | cut -c1-300 ; true "$B" -b Tender_Grouper.blend --python build/gr_collar_rays.py 2>&1 | grep -E "CR2|Traceback|Error" ; true # the Tender against the docking arm and the ship (the docked pose: antenna folded 70 deg; GR_VARIANT=raised: as drawn) "$B" -b Tender_Grouper.blend --python build/gr_dump_tris.py 2>&1 | grep -E "DUMP|Traceback|Error" ; true "$B" -b "$ARM" --python build/gr_clamp_check.py 2>&1 | grep -E "CLAMP|HIT|Traceback|Error" | cut -c1-700 ; true GR_VARIANT=raised "$B" -b "$ARM" --python build/gr_clamp_check.py 2>&1 | grep -E "CLAMP|HIT|Traceback|Error" | cut -c1-700 ; true "$B" -b "$SHIP" --python build/gr_clamp_check.py 2>&1 | grep -E "CLAMP|HIT|Traceback|Error" | cut -c1-700 ; true GR_VARIANT=raised "$B" -b "$SHIP" --python build/gr_clamp_check.py 2>&1 | grep -E "CLAMP|HIT|Traceback|Error" | cut -c1-700 ; true "$B" -b "$SHIP" --python build/gr_sweep_check.py 2>&1 | grep -E "Traceback|Error" ; true "$B" -b "$SHIP" --python build/gr_carousel_bvh.py 2>&1 | grep -E "CAROUSEL|Traceback|Error" | cut -c1-400 ; true GR_VARIANT=raised "$B" -b "$SHIP" --python build/gr_carousel_bvh.py 2>&1 | grep -E "CAROUSEL|Traceback|Error" | cut -c1-400 ; true "$B" -b "$SHIP" --python build/gr_descent_check.py 2>&1 | grep -E "DESCENT|Traceback|Error" | cut -c1-500 ; true "$P" -c " import json d = json.load(open('build/checks/sweep_and_moonpool.json')) print('moon pool at BOARD (limit 1 m):', d['moonpool_board_grouper']) print('carousel margins, antenna folded:', d['grouper'][0]) print('carousel margins, antenna raised:', d['grouper_antenna_raised'][0]) print('carousel margins, Kazah:', d['kazah'][0]) " echo CHECKS DONE