#!/usr/bin/env python3 """Task 4 exploration: layers, arcs (radius + centre) and dimension-like texts of the standard section drawing (C0060303-001). Read-only.""" import collections import re import sys import ezdxf from ezdxf import bbox msp = ezdxf.readfile(sys.argv[1]).modelspace() print("layers:", collections.Counter(e.dxf.layer for e in msp).most_common(12)) ext = bbox.extents(msp) print("extents:", [round(v, 1) for v in ext.extmin], [round(v, 1) for v in ext.extmax]) print("== ARCs (layer, centre, radius, start/end deg) sorted by radius") arcs = sorted(msp.query("ARC"), key=lambda e: -e.dxf.radius) for e in arcs[:14]: c = e.dxf.center print(f" {e.dxf.layer:14s} c=({c.x:9.2f},{c.y:9.2f}) R={e.dxf.radius:9.2f} {e.dxf.start_angle:7.1f}->{e.dxf.end_angle:7.1f}") print("== R-labels and numeric dims") pat = re.compile(r"^(R\d'?|\d{2,5}(\.\d+)?|\d+\.\d+%?|-?\d+\.\d+)$") for e in msp.query("TEXT"): s = e.dxf.text.strip() if pat.match(s) or s.startswith("R"): print(f" {e.dxf.layer:14s} ({e.dxf.insert.x:9.2f},{e.dxf.insert.y:9.2f}) {s}")