Files
Pier_v1/Code/review_pipeline/ok_analyze.py
T
ahnyongjooandClaude Sonnet 5.5 964a841de1 chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합
- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환
- Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용
- pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관)
- worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md)
- D:\Rhino-MCP 경로 참조를 새 위치로 치환

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 11:20:18 +09:00

52 lines
2.0 KiB
Python

import json,re,io
S=json.load(open('ok_shapes.json',encoding='utf-8'))
Mo=json.load(open('ok_model_dims.json',encoding='utf-8'))
T=json.load(open('ok_texts.json',encoding='utf-8'))
# 표
rows={}
for x,y,l,t,h in T:
if l!='CS-TABL-TEX2' or not(324000<y<340000) or x<715000: continue
rows.setdefault(round(y/10),{})[round(x)]=t.strip()
tab={}
for y in sorted(rows,reverse=True):
r=rows[y]
if 715129 in r and re.match(r'^[A-Z]{1,2}\d+$',r[715129]):
tab[r[715129]]={'dia':r.get(715879),'L':float(r[717004])*1000,'n':int(r[717629]),'tot':float(r[719004])}
json.dump(tab,open('ok_table.json','w',encoding='utf-8'),ensure_ascii=False)
def mm(s):
s=s.strip()
out=[]
for p in s.split('~'):
p=re.sub(r'[^\d.]','',p)
if not p: continue
v=float(p); out.append(v*1000 if '.' in p and v<100 else v)
return out
D={}
for e in S:
if e['mark'] in D: continue
D[e['mark']]=e
o=io.open('ok_analysis.txt','w',encoding='utf-8')
for mk,t in tab.items():
m=Mo.get(mk)
if not m:
o.write(u'%s 모델 없음 table n=%d L=%.0f\n'%(mk,t['n'],t['L'])); continue
n=m['n']//(2 if mk in('P3','P4') else 1)
dl=m['dl']; mean=sum(dl)/len(dl)
if mk in ('P3','P4'): mean*=2
tot=sum(dl)/1000.0
if mk in ('P3','P4'): pass
line=u'%s n 표%d/모델%d L 표%.0f 모델평균%.0f(min%.0f max%.0f) 총 표%.3f 모델%.3f'%(mk,t['n'],n,t['L'],mean,min(dl)*(2 if mk in('P3','P4') else 1),max(dl)*(2 if mk in('P3','P4') else 1),t['tot'],tot)
d=D.get(mk)
if d:
miss=[]
vals=m['values']
for s in d['dims']:
k,_,v=s.partition('=')
k=k.strip()
if k in('j','r','d') and False: continue
if k.startswith('j') or k.startswith('x'): continue
for val in mm(v):
if not any(abs(val-q)<=3 for q in vals): miss.append('%s=%s'%(k,v))
line+=u' | 도면 %s | 모델값 %s | 못 찾음 %s'%(' '.join(d['dims']), m['values'][:14], miss)
o.write(line+u'\n')