--- a/ldverify.py Thu Dec 21 10:46:41 2017 +0200 +++ b/ldverify.py Thu Dec 21 12:27:16 2017 +0200 @@ -1,6 +1,12 @@ #!/usr/bin/env python3 +from sys import version_info +if version_info < (3, 4): + raise RuntimeError('Python 3.4 or newer required') + from parse import parse_ldraw_code +from colours import load_colours from geometry import * +from pathlib import Path def read_ldraw(file, *, libraries): result = list() @@ -8,17 +14,31 @@ result.append(parse_ldraw_code(line)) return result +def find_ldconfig_ldr_paths(libraries): + for library in libraries: + ldconfig_paths = [ + library['path'] / 'LDConfig.ldr', + library['path'] / 'ldconfig.ldr', + ] + for path in ldconfig_paths: + if path.is_file(): + yield path + def hairline_score(smallest_angle): from math import log10 return max(0, -log10(smallest_angle)) if __name__ == '__main__': from sys import argv - libraries = [{'path': '/home/teemu/ldraw', 'role': 'official'}] + libraries = [{'path': Path('~/ldraw').expanduser(), 'role': 'official'}] + for ldconfig_ldr_path in find_ldconfig_ldr_paths(libraries): + with ldconfig_ldr_path.open() as ldconfig_ldr: + load_colours(ldconfig_ldr) with open(argv[1], 'r') as file: model = read_ldraw(file, libraries = libraries) - min_angle_tup = (1e12,) for line_number, entry in enumerate(model, 1): + if hasattr(entry, 'colour'): + print(repr(entry.colour)) if hasattr(entry, 'geometry') and len(entry.geometry) >= 3: if hairline_score(entry.geometry.smallest_angle) >= 2.0: print(str.format(