- 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>
4.0 KiB
4.0 KiB
기존 스크립트 재사용 계획 (T-004)
대상: D:\★Pier 자료\pier_v1\Pier_T_rebar\Code\rebar_pipeline\rhino\ 의 스크립트 8개. 원본은 수정하지 않습니다.
먼저 알아둘 점
- 8개 모두 Rhino 안에서만 실행되고, 계산과 Rhino 호출이 섞여 있습니다. 그대로는 테스트를 만들 수 없습니다.
- 대호지교 P1 전용 숫자(원점
480714926 / 153833329.5, 각도atan2(4255, 12284), 마크 이름, 객체 ID)가 코드 안에 박혀 있습니다. - 기존 스크립트는 IronPython 2.7용이라 f-string, lambda, 리스트 컴프리헨션을 못 씁니다. 새 모듈(
rebar_calc.py,rebar_layout.py)은 이 제한을 지켜서 썼지만, 실제 Rhino에서 불러 쓰는 것은 아직 확인하지 않았습니다. - 그래서 방법은 따라가되, 계산 부분만 뽑아 테스트 가능한 모듈로 새로 만드는 방식을 권합니다.
선별표
| 스크립트 | 하는 일 | 판단 | 이유 |
|---|---|---|---|
| 01_section_profile.py | 코핑의 길이방향 각도와 단면 외곽 (s, z) 추출 | 재사용 (우선순위 높음) | 모든 교각에서 가장 먼저 필요합니다. 각도 히스토그램과 좌표 변환은 순수 계산으로 분리 가능합니다. |
| 02_build_shape_VII.py | 단면을 안쪽 120 오프셋한 직선의 교점으로 철근 중심선을 만들고 필렛과 파이프로 생성 | 재사용 (핵심) | 오프셋 교점은 순수 2D 계산이라 테스트 가능합니다. 필렛과 파이프 생성은 Rhino 쪽에 둡니다. 숫자가 형식 VII에 고정돼 있어 일반화가 필요합니다. |
| 03_audit.py | 생성된 철근을 다시 중심선으로 복원해 치수, 각도, 피복 검사 | 재사용 (보통) | 검증용으로 유용합니다. 08과 중심선 복원 부분이 겹칩니다. |
| 04_table_writer.py | 철근재료표 DXF 작성 | 재사용 (우선순위 높음) | DXF 문자열 만들기는 순수 계산이라 테스트 가능합니다. 단위중량이 rebar_layout.UNIT_WEIGHT와 중복되므로 한곳으로 합칩니다. |
| 05_realign_base_pieces.py | ⊔ 바닥 조각을 ⊓ 뚜껑 평면에 맞춰 재정렬 | 재사용 안 함 (참고만) | P1에서 생긴 어긋남을 고친 일회성 보정 코드입니다. 새 프로그램이 처음부터 맞게 만들면 필요 없습니다. |
| 06_flip_hooks.py | 갈고리 방향이 반대인 철근을 거울 반전 | 재사용 안 함 (참고만) | 도면과 달랐던 부분을 고친 일회성 코드입니다. 대신 갈고리 방향을 입력값으로 받게 설계합니다. |
| 07_ctc_extract.py | 철근 중심을 코핑 로컬 좌표로 뽑아 도면 @ 간격과 비교 |
재사용 (보통) | 검증에 유용합니다. 좌표 변환은 01과 공통 모듈로 합칩니다. |
| 08_clash_check.py | 철근 중심선끼리 간섭 검사 | 재사용 (우선순위 높음) | 선분 사이 최단거리 계산은 순수 수학이라 테스트가 쉽고, 어느 프로젝트에나 필요한 품질 검사입니다. |
공통 문제: 좌표 변환이 5곳에 복붙되어 있음
02, 05, 06, 07, 08 모두 OX, OY, ANG로 월드 좌표와 코핑 로컬 좌표 (s, t, z)를 바꾸는 코드를 각자 갖고 있습니다.
가장 먼저 이 변환을 하나의 모듈(frame.py)로 만들고 테스트하는 것을 권합니다. 이후 모든 스크립트가 이 모듈을 씁니다.
권장 순서 (tasks.md에 T-005~T-009로 추가)
- 코핑 좌표 변환
frame.py(월드 ↔ 로컬) - 단면 오프셋 교점으로 중심선 꺾임점 계산 (02의 순수 계산 부분)
- 선분 최단거리와 간섭 판정 (08의 순수 계산 부분)
- 재료표 DXF 작성 (04)
- Rhino 연결 코드 (필렛, 파이프, 블록, 레이어): 위 모듈을 불러서 실행
확인이 필요한 결정
- 레이어 이름 규칙과 형식 코드(I~VIII)를 새 프로그램에서 어떻게 일반화할지 (
design_rules.md의 "확인 필요"와 같은 항목) - 새 모듈을 Rhino 8의 IronPython 2.7에서
import할 때 경로를 어떻게 지정할지 (실제 Rhino에서 확인 필요)