File size: 1,253 Bytes
06759f1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | """Batch measurement cache builder; malformed meshes do not abort the batch."""
import argparse
import json
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from labeler.dataset import discover, cached_measure
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--data', required=True)
parser.add_argument('--out', default='cache')
parser.add_argument('--method', choices=['pca', 'minimum', 'axis_aligned'], default='pca')
parser.add_argument('--trim', type=float, default=0.0)
args = parser.parse_args()
objects = discover(args.data)
if not objects:
parser.error('No mesh files found.')
failed = []
for item in objects:
try:
cached_measure(item, args.out, args.method, args.trim)
print(f"OK {item['object_id']}")
except Exception as exc:
failed.append({'object_id': item['object_id'], 'error': str(exc)})
print(f"FAILED {item['object_id']}: {exc}", file=sys.stderr)
Path(args.out).mkdir(parents=True, exist_ok=True)
(Path(args.out) / 'failures.json').write_text(json.dumps(failed, indent=2))
return bool(failed)
if __name__ == '__main__':
sys.exit(main())
|