- 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>
38 lines
2.3 KiB
Python
38 lines
2.3 KiB
Python
"""Saejae-1 P1 footing rebar reading (G3: B1~B12, UM) -> 판독/g3_values.json.
|
|
|
|
Sheet 구조도(1): front CL x 225817.5, side CL x 242892.5, z = drawing y - 10329.7 (footing bottom EL 10.032 at y 20361.7).
|
|
Front dots = bars along Y (positions x), side dots = bars along X (positions y). X bars sit 22.5 above / below the Y bars
|
|
(bottom 10154.5 / 10132, top 12509.5 / 12532). Chains: front '100 | 2@75 | 60@125 = 7.500 | -300 | 2@75 | 100', side '52@150 = 7.800 -300'.
|
|
Plan (구조도(3)): B9 symbols (EREC) lower rows only; rows y -2850 + 1200 k (side legs at row -+ 600), columns from the front chain
|
|
'15@500 = 7.500' x -3600 + 500 j (even rows 8, odd rows 7 -> 45).
|
|
"""
|
|
import json
|
|
from pathlib import Path
|
|
|
|
from dxftools import entities
|
|
|
|
FX, SX, ZO = 225817.5, 242892.5, -10329.7
|
|
|
|
|
|
def dots(cx, z, lim=3800):
|
|
return sorted(round(e.dxf.insert.x - cx, 1) for e in entities("D1", cx - 4200, z - ZO - 5, cx + 4200, z - ZO + 5, "CS-RBAR")
|
|
if e.dxftype() == "INSERT" and abs(e.dxf.insert.x - cx) <= lim)
|
|
|
|
|
|
out = {"y_bars_bottom": {"z": 10132.0, "x": dots(FX, 10132.0)}, "y_bars_top": {"z": 12532.0, "x": dots(FX, 12532.0)},
|
|
"x_bars_bottom": {"z": 10154.5, "y": dots(SX, 10154.5)}, "x_bars_top": {"z": 12509.5, "y": dots(SX, 12509.5)}}
|
|
mid_y, mid_x = {}, {}
|
|
for z in (10732.0, 11332.0, 11632.0):
|
|
mid_y[str(int(z))] = [x for x in dots(FX, z) if abs(x) < 3700]
|
|
mid_x[str(int(z))] = [y for y in dots(SX, z) if abs(y) < 3770 or abs(y) == 3750.0]
|
|
out["mid_y_bars"], out["mid_x_bars"] = mid_y, mid_x
|
|
out["b10_levels"] = [z for z in (10432.0, 10732.0, 11332.0, 11632.0) if 3772.5 in dots(FX, z, 3800)]
|
|
out["b10_corner"] = 3772.5
|
|
out["b9"] = {"cols_even": [-3600.0 + 1000 * j for j in range(8)], "cols_odd": [-3100.0 + 1000 * j for j in range(7)],
|
|
"rows": [-2850.0 + 1200 * k for k in range(6)], "a": 1244.0, "b": 2444.0, "c": 100.0, "zt": 12554.0, "zb": 10110.0}
|
|
out["counts"] = {k: len(v["x"] if "x" in v else v["y"]) for k, v in out.items() if k.endswith(("bottom", "top")) and isinstance(v, dict) and k != "b9"}
|
|
p = Path(__file__).resolve().parent / "판독" / "g3_values.json"
|
|
p.write_text(json.dumps(out, ensure_ascii=False, indent=1), encoding="utf-8")
|
|
print(out["counts"], {k: len(v) for k, v in mid_y.items()}, {k: len(v) for k, v in mid_x.items()}, out["b10_levels"])
|
|
print("mid_x", mid_x)
|