- 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>
52 lines
2.0 KiB
Python
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')
|