import struct, glob, os, numpy as np from collections import Counter def load(path): data=open(path,"rb").read() verts=[];faces=[];cb=[0] def addpoly(idx,b): for k in range(1,len(idx)-1): faces.append((b+idx[0],b+idx[k],b+idx[k+1])) def parse(p,end): while p+3<=end: tw=struct.unpack_from("end:return ln=data[p] if lw==1 else(struct.unpack_from("end:return if cid==0x88: cb[0]=len(verts) for i in range(ln//20): o=p+i*20;x,y,z=struct.unpack_from("=1: ppf=data[p];n=(ln-1)//4 idx=[struct.unpack_from("0 else '-' axarea[s+'xyz'[ax]]+=area tot=sum(axarea.values()) or 1 dom=max(axarea,key=axarea.get) name=os.path.basename(path) frac={k:round(v/tot,2) for k,v in axarea.items()} print(f"{name:14s} verts={len(V):4d} faces={len(faces):4d} boundary={bound:4d} | area-by-axis {frac} | DOMINANT={dom}")