import sys; sys.path.insert(0,".") import json, collections, io d=json.load(open('swdrw.json')); B=json.load(open('swpos.json',encoding='utf-8')) o=io.open('swcop2.txt','w',encoding='utf-8') CX=10473.9 V=[v for v in d['V'] if v[3]=='CS-RBAR-MAJR' and 5300400] D=collections.defaultdict(list) for x,y0,y1,l in V: D[round(x-CX,1)].append((y0,y1)) M=collections.defaultdict(list) for mk in ('C7','C8','C9','C10','C11','C12','C13','C14'): for b in B[mk]: bb=b['bb'] if bb[5]-bb[2]>300 and bb[3]-bb[0]<60: M[round((bb[0]+bb[3])/2,1)].append((mk,bb[2],bb[5])) res=[] for x,L in sorted(D.items()): if x not in M: continue dy0=min(a for a,b in L); dy1=max(b for a,b in L) mz0=min(m[1] for m in M[x]); mz1=max(m[2] for m in M[x]) res.append((x,dy0,dy1,mz0,mz1,sorted(set(m[0] for m in M[x])))) off1=[r[4]-r[2] for r in res]; off0=[r[3]-r[1] for r in res] o.write(u'위치 %d개. 모델 상단-도면 상단 오프셋: min %.1f max %.1f / 하단: min %.1f max %.1f\n'%(len(res),min(off1),max(off1),min(off0),max(off0))) c1=collections.Counter(round(v,1) for v in off1); c0=collections.Counter(round(v,1) for v in off0) o.write(u'상단 오프셋 분포 %s\n하단 오프셋 분포 %s\n'%(sorted(c1.items())[:20],sorted(c0.items())[:20])) for r in res[:6]+res[18:24]+res[-4:]: o.write(u'x %.0f 도면 y %.1f~%.1f / 모델 z %.1f~%.1f %s\n'%r)