# -*- coding: utf-8 -*-
"""Pass 5c: 단품도를 그림으로 직접 읽어(VLM) 확정한 두께를 pass6 이 쓰는 블록 형식으로 변환.
   - 판독 원문(raw)을 그대로 근거로 남긴다.
   - 채널/각파이프 같은 형강은 '2D 외곽 압출 = 평판' 가정이 성립하지 않으므로 제외한다.
     (형강을 평판으로 뽑으면 단면이 틀린 모델이 나온다 — 숫자 튜닝이 아니라 형상 종류의 문제)
"""
import json, os, re
import product
from pass7_tiles import load, locate, PN

# 판독원문(vlm_readings.json)·출력(vlm_blocks.json) 모두 제품별 작업폴더 기준.
# pass6_multi 가 product.SCR\vlm_blocks.json 을 읽으므로 여기와 짝이 맞아야 한다.
SCR = product.SCR
형강 = ('채널형강', '각파이프')

vr = json.load(open(SCR + r'\vlm_readings.json', encoding='utf-8'))['판독']
d1, d2, T = load()
pts = locate(T, list(vr))

ok, drop = [], []
for pn, v in vr.items():
    if v['형태'] in 형강:
        drop.append((pn, v['형태'], v['raw'])); continue
    p = pts.get(pn)
    if not p:
        drop.append((pn, '도면상 위치 없음', v['raw'])); continue
    ok.append({'pn': [pn], 'thk': [float(v['thk'])], 'at': [p[0][0], p[0][1]],
               'at_all': [[x, y] for x, y in p],
               'lines': ['VLM판독: ' + v['raw']], 'src': 'VLM'})

json.dump({'ok': ok, 'drop': drop}, open(SCR + r'\vlm_blocks.json', 'w', encoding='utf-8'),
          ensure_ascii=False, indent=1)
print('VLM 두께 블록 %d개 (형강/제외 %d개)' % (len(ok), len(drop)))
for pn, why, raw in drop:
    print('  제외 %-18s %-10s %s' % (pn, why, raw))
