- 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>
84 lines
4.6 KiB
Python
84 lines
4.6 KiB
Python
# execute_rhino_code (IronPython 2.7) - 재료표 DXF(R12, 나중에 CP949 변환) 작성기
|
|
# rows: (마크, 형식, 직경 or '"', 개수, [A,B,C,D,E,R,X1,X2,J], 길이m, 비고, 차이여부[, 총길이m(V형 직접지정)])
|
|
# 저장 후 bash: iconv -f UTF-8 -t CP949 matl_utf8.dxf > "YYMMDD_철근재료표 작업중.dxf"
|
|
import System
|
|
UW = {"H16":1.560, "H19":2.250, "H22":3.040, "H25":3.980, "H29":5.040}
|
|
PCT = {"H16":0.03, "H19":0.03, "H22":0.06, "H25":0.06, "H29":0.06}
|
|
groups = [
|
|
("H29", [("C9", "I", "H29", 14, ["8.539", "", "", "", "", "", "", "", ""], 8.539, "재료표 동일", False)]),
|
|
# ("H25", [...]), ("H22", [...]), ("H19", [...])
|
|
]
|
|
X = [0,1200,2400,3600,4800,6800,8800,10800,12800,14800,16800,18800,20800,22800,24800,26400,28000,29600,31200,40000]
|
|
RH = 480.0; HH = 960.0
|
|
ents = []
|
|
def L(x1, y1, x2, y2, lay="TABL-LIN", ents=ents):
|
|
ents.append("0\nLINE\n8\n%s\n10\n%.3f\n20\n%.3f\n30\n0.0\n11\n%.3f\n21\n%.3f\n31\n0.0" % (lay, x1, y1, x2, y2))
|
|
def T(x, y, s, h=200.0, lay="TABL-TEX", ents=ents):
|
|
ents.append("0\nTEXT\n8\n%s\n10\n%.3f\n20\n%.3f\n30\n0.0\n40\n%.1f\n1\n%s\n7\nKOR\n72\n1\n11\n%.3f\n21\n%.3f\n31\n0.0\n73\n2" % (lay, x, y, h, s, x, y))
|
|
def mid(i, X=X):
|
|
return (X[i] + X[i+1])/2.0
|
|
T(X[-1]/2.0, 1500, "철 근 재 료 표(두부보) - Rhino 모델 실측 기준 (작업중)", 560, "TITLE")
|
|
T(1400, 300, "(SD400)")
|
|
heads = ["번 호","형 식","직 경","개 수","A","B","C","D","E","R","X1(º)","X2(º)","J"]
|
|
i = 0
|
|
while i < 13:
|
|
T(mid(i), -HH/2, heads[i]); i += 1
|
|
top2 = [("길 이","(M)"),("총길이","(M)"),("단위중량","(KG/M)"),("총중량","(TON)"),("총중량(할증)","(TON)")]
|
|
i = 0
|
|
while i < 5:
|
|
T(mid(13+i), -RH/2, top2[i][0]); T(mid(13+i), -RH*1.5, top2[i][1]); i += 1
|
|
T(mid(18), -HH/2, "비 고 (원 재료표 대비)")
|
|
L(X[0], 0, X[-1], 0); L(X[0], -HH, X[-1], -HH)
|
|
for xx in X: L(xx, 0, xx, -HH)
|
|
y = -HH
|
|
gl = 0.0; gw = 0.0; gwh = 0.0; gwl = 0.0; gwlh = 0.0
|
|
for dia, rows in groups:
|
|
tlen = 0.0
|
|
for rw in rows:
|
|
yc = y - RH/2
|
|
T(mid(0), yc, rw[0]); T(mid(1), yc, rw[1]); T(mid(2), yc, rw[2]); T(mid(3), yc, str(rw[3]))
|
|
k = 0
|
|
while k < 9:
|
|
if rw[4][k] != "": T(mid(4+k), yc, rw[4][k])
|
|
k += 1
|
|
if len(rw) > 8: tl = rw[8]
|
|
else: tl = round(rw[3]*rw[5], 3)
|
|
tlen += tl
|
|
T(mid(13), yc, "%.3f" % rw[5]); T(mid(14), yc, "%.3f" % tl)
|
|
if rw[7]: T(mid(18), yc, rw[6], 200.0, "DIFF")
|
|
else: T(mid(18), yc, rw[6])
|
|
L(X[0], y-RH, X[-1], y-RH)
|
|
for xx in X: L(xx, y, xx, y-RH)
|
|
y -= RH
|
|
w = tlen*UW[dia]/1000.0; wh = w*(1+PCT[dia]); wl = w*1.068; wlh = wl*(1+PCT[dia])
|
|
pc = "(%d%%)" % int(round(PCT[dia]*100))
|
|
T(mid(9), y-RH/2, "소 계"); T(mid(14), y-RH/2, "%.3f" % tlen); T(mid(15), y-RH/2, "%.3f" % UW[dia])
|
|
T(mid(16), y-RH/2, "%.3f" % w); T(mid(17), y-RH/2, "%.3f%s" % (wh, pc))
|
|
L(X[0], y-RH, X[-1], y-RH)
|
|
for xx in [X[0]] + X[13:]: L(xx, y, xx, y-RH)
|
|
y -= RH
|
|
T(mid(9), y-RH/2, "소 계(겹이음 할증 6.80%)"); T(mid(16), y-RH/2, "%.3f" % wl); T(mid(17), y-RH/2, "%.3f%s" % (wlh, pc))
|
|
L(X[0], y-RH, X[-1], y-RH)
|
|
for xx in [X[0]] + X[13:]: L(xx, y, xx, y-RH)
|
|
y -= RH
|
|
gl += tlen; gw += round(w, 3); gwh += round(wh, 3); gwl += round(wl, 3); gwlh += round(wlh, 3)
|
|
T(mid(9), y-RH/2, "총 계"); T(mid(14), y-RH/2, "%.3f" % gl); T(mid(16), y-RH/2, "%.3f" % gw); T(mid(17), y-RH/2, "%.3f" % gwh)
|
|
L(X[0], y-RH, X[-1], y-RH)
|
|
for xx in [X[0]] + X[13:]: L(xx, y, xx, y-RH)
|
|
y -= RH
|
|
T(mid(9), y-RH/2, "총 계(겹이음 할증 6.80%)"); T(mid(16), y-RH/2, "%.3f" % gwl); T(mid(17), y-RH/2, "%.3f" % gwlh)
|
|
L(X[0], y-RH, X[-1], y-RH)
|
|
for xx in [X[0]] + X[13:]: L(xx, y, xx, y-RH)
|
|
hdr = "0\nSECTION\n2\nHEADER\n9\n$ACADVER\n1\nAC1009\n9\n$DWGCODEPAGE\n3\nANSI_949\n0\nENDSEC\n"
|
|
tbl = "0\nSECTION\n2\nTABLES\n0\nTABLE\n2\nLTYPE\n70\n1\n0\nLTYPE\n2\nCONTINUOUS\n70\n0\n3\nSolid line\n72\n65\n73\n0\n40\n0.0\n0\nENDTAB\n"
|
|
lays = [("0",7),("TITLE",2),("TABL-LIN",8),("TABL-TEX",7),("DIFF",1),("NOTE",3)]
|
|
tbl += "0\nTABLE\n2\nLAYER\n70\n%d\n" % len(lays)
|
|
for lay in lays:
|
|
tbl += "0\nLAYER\n2\n%s\n70\n0\n62\n%d\n6\nCONTINUOUS\n" % (lay[0], lay[1])
|
|
tbl += "0\nENDTAB\n0\nTABLE\n2\nSTYLE\n70\n1\n0\nSTYLE\n2\nKOR\n70\n0\n40\n0.0\n41\n1.0\n50\n0.0\n71\n0\n42\n200.0\n3\nmalgun.ttf\n4\n\n0\nENDTAB\n0\nENDSEC\n"
|
|
body = "0\nSECTION\n2\nENTITIES\n" + "\n".join(ents) + "\n0\nENDSEC\n0\nEOF\n"
|
|
p = "C:\\temp\\matl_utf8.dxf" # 스크래치 경로로 변경해서 사용
|
|
System.IO.File.WriteAllText(p, (hdr + tbl + body).replace("\n", "\r\n"), System.Text.UTF8Encoding(False))
|
|
result = "ents=%d total=%.3fm %.3ft" % (len(ents), gl, gw)
|
|
print(result)
|