Files
Pier_v1/RAG/design-model-box-sample_2/src/backend/BLOCK1_ALGORITHM_RULES.md
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

15 KiB

BLOCK1 승인 철근 배근 알고리즘 기준

이 문서는 BLOCK1에서 확인·승인된 배근 규칙을 이후 BLOCK2·BLOCK3 및 동일 형식 도면에 공통 적용하기 위한 기준이다. 문서에 없는 임의 보정, 철근명 중심의 형상 추론, 사용자 확인에 의존한 사후 수정은 허용하지 않는다.

1. 기준과 적용 범위

  1. 현재 대상 도면의 평면도, 정면도, 배면도, Top/Front/Right/Left, A-A/B-B 단면, 철근 상세도와 재료표를 함께 확인한다.
  2. BLOCK1 승인 형상은 제작 형상의 기준이다.
  3. 다른 블럭에서 바꿀 수 있는 값은 부모 객체 ID, 길이 방향 station, 도면 본수·간격, 시작/종료 포털 방향뿐이다.
  4. 절곡 형상, 절곡 순서, 정착 방향, 면 관계, 객체 종속 관계는 새로 추론하지 않고 BLOCK1 기준을 그대로 변환한다.

원본 치수 판독 우선순위

  1. DXF/DWG 원본의 TEXT·MTEXT·DIMENSION 엔티티와 레이어, 블록 경로, 삽입 X/Y 좌표를 치수값의 1차 근거로 사용한다.
  2. 반복치수, 양단 여유, 피복, 전체 치수는 같은 상세 영역의 좌표 관계로 묶고 산술적으로 폐합되는 경우에만 생성 변수로 채택한다.
  3. 이미지/OCR은 뷰와 형상의 사후 비교 자료이며 CAD에 존재하는 숫자를 이미지 눈대중으로 대체하거나 덮어쓰지 않는다.
  4. CAD 후보가 복수이거나 치수열이 폐합되지 않으면 임의 기본값을 적용하지 않고 해당 객체의 생성을 보류하며 미해결 근거를 남긴다.

2. 철근 대응 키

철근명은 추적용일 뿐 단독 대응 키가 아니다. 다음 형상 키가 모두 일치해야 같은 역할로 대응한다.

  • 순서가 있는 절곡 구간과 segment 수
  • 각 구간의 형상 길이
  • 절곡각과 반지름
  • 직선·후크·다단 절곡 topology
  • 상부슬래브·하부슬래브·좌측벽·우측벽 등 설치 면
  • 배근 축과 시작/종료 방향
  • 일반부/경사부 구분
  • 도면 재료표의 본수와 간격

3. 객체 종속

  • 상부슬래브, 하부슬래브, 좌·우 벽체, 상·하부 헌치, 연결철근, 난간벽은 독립 객체군이다.
  • 철근은 전체 모델 좌표가 아니라 자기 부모 콘크리트 객체의 로컬 좌표계에서 배치한다.
  • 객체 occurrence가 여러 개이면 각 occurrence를 유지한다. 좌·우, 전·후, 시작·종료 객체를 합치지 않는다.
  • 형상·부모 객체 장부에서는 CYCLE, 헌치, 연결철근, 난간벽을 서로 섞지 않는다.
  • 화면 조회 분류에서는 헌치철근을 소유 CYCLE에 편입하되, 헌치 부모 객체와 경로·수량 메타데이터는 그대로 유지한다.

4. CYCLE 배근

BLOCK1의 CYCLE-1은 다음 역할을 포함한다.

  • 하부슬래브 직선근
  • 하부슬래브 절곡근
  • 상부슬래브 절곡근
  • 상부슬래브 직선근
  • 벽체 W1 역할
  • 위 역할에 대응하는 스큐 단부 철근

W1은 벽체 D철근으로 대체하거나 CYCLE-1에서 제외하지 않는다.

기본 배근 station은 BLOCK1의 station spine을 그대로 사용한다.

  • 기본 spine: 250 mm
  • 125 mm 표기 행: 동일 station의 좌우/전후 발생 관계를 유지
  • 도면의 본수와 간격이 다르면 station 개수와 pitch만 도면값으로 치환
  • 빈 간격값을 0으로 처리하지 말고 동일 역할 일반부 pitch를 상속
  • CYCLE_*_LONGITUDINAL의 LONGITUDINAL은 횡단 형상이 반복되는 station 축을 뜻한다. 철근 자체의 방향으로 해석하여 CYCLE 생성·분류에서 제외하지 않는다.

5. 일반부와 경사부

스큐가 있는 블럭은 설치 범위를 일반부와 경사부로 분리한다.

  1. 일반부에는 BLOCK1의 일반부 형상을 배치한다.
  2. 도면에서 확인된 스큐 보강 구간에는 경사부 CYCLE 형상만 배치한다.
  3. 경사부 철근은 콘크리트 포털 경사와 같은 평면·방향을 갖는다.
  4. 시작 포털은 내부 방향으로, 종료 포털은 반대 방향으로 동일 형상을 변환한다.
  5. 포털 변환은 강체변환 한 번만 적용한다. 전단으로 길이를 늘리거나 이중 스큐변환하지 않는다.
  6. 일반부와 경사부의 경계에는 station 중복과 누락이 없어야 한다.
  7. 경사부 철근을 블럭 전체로 연장하거나 일반부 철근을 경사부 안으로 밀어 넣지 않는다.

6. 투영 규칙

  • Top에서 대응하는 상·하부 슬래브의 station은 같은 위치에 있어 한 줄로 보여야 한다.
  • 상·하부 형상 길이가 달라도 별도의 임의 XY 배근 위치를 만들지 않는다. 각 형상의 Z 및 절곡 길이는 해당 상세값을 유지한다.
  • 측면뷰에서 대응하는 좌·우 벽체 철근은 같은 높이 station을 공유해야 한다.
  • Front, Right, Left, A-A, B-B에서도 객체 면·배근 방향·정착 위치가 서로 일관되어야 한다.

7. 피복과 내부 배치

  1. 도면의 명목피복과 철근 반지름을 분리해 중심선 피복을 계산한다.
  2. 본체 중심선 피복은 확인된 BLOCK1 기준을 사용하며 임의로 20 mm를 사용하지 않는다.
  3. 스큐 포털에서는 경사 외곽선의 법선거리로 피복을 계산한다.
  4. 철근 직경을 포함한 튜브가 자기 콘크리트 객체 외곽을 벗어나면 실패다.
  5. 헌치·연결철근도 자기 부모 객체와 피복 조건을 만족해야 한다.

본체 종방향 면철근은 부모 occurrence를 먼저 확정한 뒤 본수를 전개한다.

  • 상부/하부 슬래브 역할은 해당 슬래브 하나에만 결속한다.
  • 좌측/우측 벽체 역할은 해당 벽체 하나에만 결속한다.
  • 한 벽체 행의 본수 N은 벽 두께 방향의 두 면에 같은 높이망 N/2개를 반복한다. 좌·우 벽체의 대응 행은 측면에서 같은 절대 높이망을 쓴다.
  • 부모가 잠시 복수로 남았다는 이유로 본수를 먼저 나누거나 중앙으로 압축하지 않는다. 설치 역할이 폐합되지 않으면 생성하지 않는다.
  • 이 판정에는 철근명을 사용하지 않고 block occurrence, 부모 객체 종류, 도면 설치면/방향 근거만 사용한다.

8. 헌치·연결철근·난간벽

  • 상부헌치와 하부헌치는 콘크리트 헌치 객체에 각각 종속한다.
  • 상부헌치의 좌·우를 임의로 나누지 않고 도면의 하나의 형상으로 유지한다.
  • 연결철근은 대응 CYCLE station에 체결되어야 하며, CYCLE과 무관한 자유 격자로 배치하지 않는다.
  • 난간벽 철근은 난간벽 객체 내부에 배치하고 본체 방향으로 뒤집지 않는다.
  • 도면에 있는 전면·배면·단부 철근을 누락하지 않는다.

9. 블럭 간 변환

BLOCK1 승인 객체의 형상 벡터
→ 대상 블럭의 대응 부모 객체 로컬 프레임
→ 대상 도면의 station·본수·간격 치환
→ 시작/종료 포털 방향 변환
→ 피복·객체 내부·정착 검사

이 과정에서 형상 자체를 재창작하거나, 철근명만 같다는 이유로 다른 상세를 매칭하지 않는다.

10. 적용 전 필수 검증

다음 중 하나라도 실패하면 모델을 승인하거나 다음 블럭으로 진행하지 않는다.

  • 철근 상세도 형상과 segment/각도/반지름 불일치
  • 재료표 본수·간격·단위 길이 불일치
  • Top 상·하부 station 불일치
  • 측면 좌·우 벽체 높이 station 불일치
  • 일반부/경사부 경계 중복 또는 누락
  • 포털 경사 방향 반대
  • 연결철근 미체결
  • 헌치·난간벽·벽체 occurrence 누락
  • 피복 부족 또는 콘크리트 객체 외곽 이탈
  • Front/Right/Left/A-A/B-B 중 어느 한 뷰라도 도면과 불일치

검증 결과에는 형상 일치율, 본수 일치율, 간격 일치율, 단위 길이 일치율, 객체 종속 상태, 피복 상태, 뷰별 통과 여부를 기록한다.

11. CYCLE-1/CYCLE-2 교대 스테이션 폐합

  • 일반 CYCLE-1은 도면 pitch 250 mm를 그대로 유지한다.
  • CYCLE-2는 연속한 일반 CYCLE-1의 정확한 중점에 놓여 C1/C2 간격이 125 mm가 된다.
  • CYCLE-1 본수에 포함된 양단 폐합근 2본은 일반 @250 격자와 분리한다.
  • BLOCK1은 일반 C1 65 + 양단 폐합 2 = 67, C2 64로 폐합한다.
  • BLOCK2는 일반 C1 63 + 양단 폐합 2 = 65, C2 62로 폐합한다.
  • C2의 좌우 두 상세가 교대 역할이면 한 station에 2본으로 나누지 않는다. 각 station에 좌/우를 번갈아 1본씩 배치한다.
  • 슬래브·헌치·연결근은 독립적인 시작점을 만들지 않고 소유 CYCLE의 동일 station 배열을 상속한다. 벽체 내측 수직근은 아래 15절의 자체 벽체 치수열을 적용한다.
  • pitch를 줄여 중앙에 압축하거나 끝까지 억지로 늘리는 보정은 금지한다.
  • 본수와 station 수가 맞아도 상세 절곡이 BLOCK1에서 확정된 상·하부 상대면과 다르면 실패다. 3절곡 상세는 segment 길이 multiset으로 역순 표기를 같은 형상으로 정규화하고, BLOCK1의 승인된 부모 occurrence에서 상·하부 역할만 상속한다. 대상 BLOCK의 철근명·과거 좌표·상부 같은 누적 문구는 면 판정에 쓰지 않는다.

12. 객체별 철근 존재 검증

  • 날개벽 본체(kind=wingwall)만 현재 철근 작업 범위에서 제외한다.
  • 본체 슬래브·벽체·헌치, 날개벽-본체 헌치, 난간벽 등 나머지 각 콘크리트 occurrence는 승인된 실제 철근 경로가 최소 1개 있어야 한다.
  • 난간벽의 동일 상세 반복행은 시작/종료 난간벽에 종방향 순서로 하나씩 대응하며, 과거 실패상태를 유지한 채 경로를 다시 지우면 안 된다.

13. 판형 부재 상·하부 공통 station

  • 본체 슬래브뿐 아니라 접속슬래브를 포함한 모든 판형 부재에 적용한다.
  • TOP 투영에서 같은 배치축과 같은 기준 피치를 갖는 상·하부 대응 철근은 별도의 중앙정렬 배열을 만들지 않고 하나의 공유 station spine을 사용한다.
  • 하면이 125 mm, 상면이 250 mm이면 상면 station은 하면 station의 매 두 번째 값과 정확히 같아야 하며 TOP에서 한 줄로 겹쳐 보여야 한다.
  • 단부 경사부도 같은 원칙으로 상면 station을 하면 station의 대응 부분집합으로 선택한다. 시작·끝 여유, 경사 방향, 단부 치수사슬은 현재 도면에서 읽는다.
  • station 수와 간격만 맞고 상·하부 투영 좌표가 다르면 검증 실패다.

14. BLOCK별 철근 분류·표시 명칭

  • 내부 선택 ID는 B{번호}_{역할} 형식으로 고정한다. 예: B1_CYCLE1, B1_CONNECTION, B2_PARAPET.
  • 화면 표시명은 블럭{번호} · {역할명} 형식으로 통일한다.
  • 역할명은 사이클-1, 사이클-2, 연결철근, 난간벽 철근, 날개벽 철근, 브래킷 철근, 접속슬래브 철근만 사용한다.
  • 화면 선택기는 BLOCK1, BLOCK2, BLOCK3 순으로 묶고 각 BLOCK 안에서는 사이클-1 → 사이클-2 → 연결철근 → 난간벽/날개벽 순으로 둔다.
  • 헌치철근은 별도 조회 필터를 만들지 않고 자신의 station spine을 소유한 사이클-1/사이클-2 필터에 표시한다.
  • 철근명은 분류 근거가 아니다. 제작 상세의 절곡 토폴로지가 연결근이면 연결철근, 헌치근이면 헌치철근으로 분류하며 과거 분류 메타데이터보다 현재 상세 형상을 우선한다.
  • selection_component_ids는 자기 rebar_assembly_id 하나와 정확히 같아야 하며 다른 BLOCK의 ID가 섞이면 저장·표시를 거부한다.

15. 벽체 내측 수직근의 설치 위치

  • 좌측·우측 벽체 내측의 수직 직선근은 각 벽체 입면도의 내측 치수열을 독립적으로 읽는다. 앞 절의 공통 CYCLE 평면 복제 규칙보다 이 설치면별 규칙이 우선한다.

  • 일반부 CYCLE에 배치한 뒤 경사부 CYCLE 형상을 별도로 복제하여 중복 수량을 만들지 않는다. 도면의 내측 치수열 전체를 한 번만 전개한다.

  • 치수열의 여러 반복 구간은 각각의 원본 치수문자를 읽고 연결한다. 미확인 치수를 선 길이 또는 재료표 수량으로 역산하지 않는다.

  • 두 종류의 수직근이 교대로 배근된 도면은 원본 CYCLE 간격과 내측 치수열 간격으로 교대 위치를 분리한다. 같은 전체 격자를 두 제작행에 각각 복제하지 않는다.

  • 단면도의 직경·제작 길이·벽 두께 방향 위치를 유지하고, 각 벽체의 로컬 내측 면과 상단 표고에 배치한다. 조회 분류는 기존 소유 CYCLE을 유지한다.

  • 철근명은 원본 제작행 추적에만 사용한다. 이 규칙의 적용 여부는 수직 직선 형상, 양쪽 벽체 내측 설치면과 원도면 치수 근거로 판단한다.

  • 본수·제작 길이·중복·호스트 관단면 검사가 통과한 행만 기존 모델에 교체한다. 수량 차이를 없애기 위해 단부 한 본을 임의 삭제하거나 추가하지 않는다.

  • 도면 우선·수량 차이 별도 기록이 명시적으로 허용된 피드백 작업은 원본 치수열의 본수와 재료표 본수를 각각 유지한다. 이 경우 제작 길이·중복·호스트 관단면 검사는 면제하지 않으며, 재료표 수량 검사는 미일치 상태로 남긴다. 검토 초안 교체와 수량/설계 승인을 구분한다.

  • 모델별 단부 제외 목록은 배치 입력으로 사용하지 않는다. 이전 확인값은 이력일 뿐이며, 현재 도면의 치수열과 지시선·실제 배근선의 귀속으로 설치점을 공통 판독한다. 치수열 끝점이라는 이유만으로 철근을 추가하거나 수량을 맞추기 위해 단부점을 삭제하지 않는다. 근거가 충돌하면 해당 행을 보류한다.

16. 명시적으로 허용된 체결근 수량 기준 분배

  • 사용자가 도면 수량 기준 분배 허용으로 승인한 본체 체결근에만 적용한다. 다른 철근이나 새 도면에 자동 확대하지 않는다.
  • 현재 도면 제작행의 본수를 입력으로 사용하고, 원본 단면의 설치 줄마다 실제 해당 객체의 양면 철근 쌍을 확인한다. 설치 가능한 길이에 따라 본수를 나누고 줄별 등간격 셀 중앙에 배치한다.
  • 제작 상세는 강체 이동·회전만 허용한다. 제작 길이, 본수, 두 대상 철근 접촉, 원호 처리 후 접촉 및 콘크리트 관단면 이탈 검사를 모두 통과해야 교체한다.
  • 보고서에 도면 수량 기준 분배로 표시한다. 단부 위치를 도면에서 그대로 복원했다고 기록하거나 엔지니어 승인으로 간주하지 않는다.
  • 해당 제작행을 재생성할 때도 저장된 명시적 허용을 확인해 같은 공통 분배 코드를 사용한다. 새 좌표가 예전 검증을 상속하지 않으며 원호 검증 전에는 정상 표시 게이트를 통과하지 않는다.