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())