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('swcop.txt','w',encoding='utf-8') CX=10473.9 V=[v for v in d['V'] if v[3]=='CS-RBAR-MAJR' and 5300400] xs=collections.defaultdict(list) for x,y0,y1,l in V: xs[round(x-CX,1)].append((y0,y1)) o.write(u'도면 코핑 정면도 수직 철근선: 선 %d개, 서로 다른 x %d개\n'%(len(V),len(xs))) dx=sorted(xs) o.write(u'%s\n'%dx) # 모델: 코핑 스터럽류 (정면도에서 수직으로 보이는 철근) 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) mx=sorted(M) o.write(u'모델 수직 철근 x %d개: %s\n'%(len(mx),mx)) import bisect dd=[min(abs(x-m) for m in mx) for x in dx] o.write(u'도면 선 → 가장 가까운 모델 x 최대 %.1f\n'%max(dd)) miss=[x for x in dx if min(abs(x-m) for m in mx)>3] o.write(u'모델에 없는 도면 선 x: %s\n'%miss) miss2=[m for m in mx if min(abs(x-m) for x in dx)>3] o.write(u'도면에 없는 모델 x: %s (%s)\n'%(miss2,[M[m] for m in miss2]))