- 재료표(B5–B8 9150 = 9350 − 2c, B1–B4 7600 = 7800 − 2c)와 같은 방향 배정으로 맞춤
- 격자 키를 물리 방향으로 정리: sL = L 방향 간격, sW = W 방향 간격 (기존 sAxis → sL, sPerp → sW)
- B1–B4: L 격자로 개수, 길이 W − 2c. B5–B8: W 격자로 개수, 길이 L − 2c
- B9: 열(L)은 sL, 행(W)은 sW 격자 (물리 격자 일치), 개수 불변
- B11은 L 방향 간격(sL), B12는 W 방향 간격(sW)
- 3D 확대기초 철근과 단면 그림의 역할을 교환 (B1–B4 선, B5–B8 점)
- 철근표 간격과 규칙 값, 설정 라벨을 방향 기준으로 수정
- 테스트 기대값 갱신 (B1–B4 40, B5–B8 31, B6 13646 분할 경고)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- B10-2 최하단(z = c_b)도 하면 1단 B2·B4와 같은 높이에서 간섭하므로 삭제 (승인 2026-10-26)
- B10-2: 18 → 16본 (8단 × 2면). 표와 3D가 같은 규칙
- 단면 그림의 측면 B2 다리선을 굵은 주황 실선으로 그려 모서리 연결을 드러냄
- 테스트 기대값 갱신 (B10-2 16)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- assemblyEvenStart: 짝수 시작칸 중 양끝 여유 차이가 가장 작은 값 선택
- B12(W 방향, n 61)는 시작칸이 1(홀수)이던 것을 2(짝수)로 바꿔 B9 행선과 겹치지 않게 함
- 개수(B11 30, B12 24)와 가운데 정렬(차이 ≤ 1칸)은 그대로, 엇갈림 2칸 유지
- 테스트: 조립 철근 인덱스가 모두 짝수
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- 간격 = k·s: B11은 L 방향 격자(교각축 직각 s), B12는 W 방향 격자(교각축 s). 기본 k = 8 (1000 mm, s = 125)
- 개수는 격자 k칸마다, 조립 단 엇갈림 2칸 유지. 3D 철근도 같은 간격
- 기본 k = 8이므로 P1 기본값의 B11·B12 개수가 60 / 47 → 30 / 24로 바뀜 (k = 4이면 문서값 60 / 47을 재현, 테스트로 확인)
- 패널에 k 두 칸, 규칙 표시에 B11·B12 간격 (k·s)
- FT02를 n·kB11·kB12 정수 검사로 확장
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- footing-settings: s → sAxis(교각축) · sPerp(교각축 직각), 범위는 동일 (100–150)
- grid·gridPositions가 방향 키를 받음. B1–B4 grid는 sAxis, B5–B8 grid는 sPerp, B9 행·열은 sAxis, B11·B12는 sPerp
- 철근표 간격·실간격과 근거가 방향별 값을 씀 (B12는 교각축 직각 값, 승인 2026-10-26)
- 3D 확대기초 그림의 위치도 방향별 값을 씀
- 패널 입력 두 칸으로 분리
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- core/rebar/footing-settings.ts: 입력 정의, 기본값(확대기초철근 (1).md), 범위(제안), 검사 (FT01 범위, FT02 n 정수)
- 확대기초 계산 함수가 설정을 인자로 받음 (기본값 = 기존 값, 기존 호출은 그대로)
- 3D 확대기초 그림의 125·100 하드코딩 제거, 철근표·3D·기둥 층 높이가 같은 설정을 씀
- 패널: 상면·측면·하면 피복을 칸 분리, s_v와 e_top 분리. 고정 규칙(k=2, Δ₂=100, 전단 4s·엇갈림 2s, cycle 교대)과
B2·B6 디리는 읽기 전용으로 표시
- 기본값에서 P1 결과 불변 (기존 테스트 통과)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- 기본 '이음 무시' (사양 결정). '반영'이면 정척(12000) 초과 철근을 l_s 겹침 2조각으로 나눔
- 위치: 기둥 중심 = 전체의 절반, 단부 = 정척 안에서 가장 끝 쪽 (짧은 조각 = 전체 + l_s − 12000, 긴 조각 = 12000)
- 철근표 조각 목록과 비고, 3D 두 조각(l_s 겹침)에 반영
- STANDARD_BAR를 common.ts로 옮겨 순환 import 방지
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- 단마다 양끝이 안으로 들어가는 양을 2d에서 d로 변경
- 상면 단 길이 12744 / 12686.8 / 12629.6 (기존 12744 / 12629.6 / 12515.2)
- 3D 상면 주철근의 굽힘 시작점도 같은 값을 쓴다
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- 세로 단 간격은 입력(기본 100, 범위 80–120)으로 상면 C1–C6, C14 상면, 기둥 C3 높이에 쓴다
- 가로 단 간격은 2d(H29, 57.2 mm)로 고정 (코핑철근.md의 s_lay 하나를 둘로 나눔)
- P1 기준 값 갱신: 상면 높이 43.284 / 43.184 / 43.084, C14 상면 43.208 / 43.108, P1 위 끝 zTop1 14776
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- core/rebar/coping-settings.ts: 입력 정의, 기본값(코핑철근.md), 범위(코핑_입력범위_제안.md), 검사 함수
- 다리 수는 4·6·8 목록으로 두고 홀수는 CP02로 막음
- 값은 적용 버튼을 누를 때만 draft에 쓰고 다시 생성 (범위 밖이면 반영하지 않음)
- PierInput.copingRebar, 모델 copingRebar, 변경 추적 키 추가
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Six inputs with their ranges and P1 defaults; a change regenerates the pier.
- The 적용 블럭 line shows the blocks (분리 n개 or 일체 n쌍, 전체).
- view/block-rebar-svg.ts: the section C–C along the 교축 with the S2 dots, the
S1 lines and legs, and the dimensions (block widths, the S2 layout).
- 받침블럭 철근 설정 is tracked for changes (defaults vs the current draft).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- RB01 a setting outside its range (cover 50–100, side cover 50–100, first gap
0–150, spacing S1/S2 100–200, leg 500–1000); RB02 S1 depth at or above the
block height; RB03 the legs do not reach into the coping.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- PierInput.blockRebar (partial): cover top, side cover, first gap, spacing S1
and S2 (separate), leg length. Defaults are the P1 values, so P1 is unchanged.
- S2 depth = top cover; S1 depth = top cover + S1/2 + S2/2 (H19: 69.1 at the default).
- The model carries the settings; the bearing-block rebar, the 3D bars, and the
summary use them.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- bearingEdgeDistances measures along the 교각축: 분리 600 / 600; 일체 from the
pair block centred on the mean 교각축 position (P1 outer margins 557).
- Table headings updated; C1 · C2 · C3 on the plan are measured on the 교축 from the drawn positions.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- A 일체 pair's inner sides face the other bearing, so they are not C4 or C5:
they are null and shown as "—" in the 배치 규칙 table.
- The table headings now describe the 교축 margins (bearing to the outer block edge).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- bearingEdgeDistances now reads the block geometry: 분리 1200 blocks are
centred on the bearing (600 / 600); 일체 uses the pair's 2500 block (outer
margins 601, within the 5 mm tolerance of 600).
- The plan labels C4 and C5 from these values; the coping-edge definition is removed.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- C4·C5 measured across the coping width (교각축 직각): the two coping edges
at ±B/2 to the bearing centre. The former along-the-axis definition is replaced.
- view/bearing-plan-svg.ts: the plan of one pair with the model's solplates
and the block outline(s) (일체: one 2500 × 1200; 분리: two 1200 × 1200), and
the drawing A/B overlaid as dashed outlines.
- ② bearing card: 상세 보기 pair chips (①·⑥ …) and the overlay toggle.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- integrated-block.ts: per pair (전열 k · 후열 k) one block centred on the
pair midpoint, 2500 across the 교축 and 1200 along the 교각축, with a
stepped top (each half to its own bearing row top). Only when 일체 is chosen
and every pair is within 100 mm; otherwise 분리 is kept (B02).
- Rebar: S2 19 bars at 125 across the 2500 (10 front half, 9 back half), each
leg from its half's top; S1 8 bars across the 1200, 3800 long, depth from
the lower top. Totals per pier: S1 40, S2 95 (분리: 80 / 80).
- Scene and 3D rebar draw the stepped blocks instead of the per-bearing blocks.
- The per-bearing blocks stay for the solplate, the pads, and the body.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- PierInput.bearingLayout: 분리 (default) or 일체, tracked for changes.
- 일체 is selectable only when there is at least one pair and every pair is
within 100 mm; otherwise the chip is disabled with the reason.
- Validation: B01 (info) when 일체 is chosen and allowed, the block shape is
still the 분리 shape; B02 (warning) when it is not allowed and the model
falls back to 분리.
- The 일체 block shape (2500 × 1200) is not modelled yet.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- C4/C5 = distance from the coping edge to the bearing centre along the
coping length, from the model; the drawing value is for comparison only.
- A pair is a front and back bearing of the same order within their row. A
pair with an eccentricity above 100 mm forbids 일체 (분리 first).
- ② bearing card: read-only table of C4/C5 and the pair eccentricities.
- The 일체 block model is not built yet.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- PierInput.bearingType: text, absent = 탄성받침. Tracked for changes, so it
can be reverted. Saved in the project; no rule yet, so it does not change the model.
- Shown on the ② bearing card above the 공통 규칙.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Rules confirmed (승인 2026-10-26): datum MSL; 고조위 HWL and 저조위 LWL as
two levels; 세굴 깊이 as for 하상; 파랑과 선박 하중 excluded from this scope.
- Checks: G13 levels missing, G10 해저면 not below 고조위, G11 저조위 not
below 고조위, G14 pile wall at or below the corrosion allowance reference.
- CORROSION_ALLOWANCE_MM = 1 is a PLACEHOLDER reference (not in the RAG
documents); the card and G14 mark it as to be confirmed.
- Card: the 해상 inputs; the section draws 고조위 (solid), 저조위 (dashed),
and labels the ground line 해저면 EL.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- shape-options: a per-option "confirmed" flag; 하상 is confirmed, 해상 is not.
- The 위치 chips store the choice in the pier's draft; 선택 shows it.
- 하상: the groundwater inputs give way to 설계홍수위 DHWL (floodLevelEl) and
세굴 깊이 (scourDepthM). The groundwater value is kept (남겨두기).
- Checks: G07 DHWL missing, G08 DHWL below the 지반고, G09 scour negative or
the scour line below the footing bottom. The groundwater check is skipped for 하상.
- Section: the DHWL as a solid line and the 세굴선 dashed.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- StrataRow.nValue: text. "23" is a blow count (0–100), "50/5" a refusal
(50 blows for 5 mm, 1–300 mm). Empty means not known yet.
- G06 (warning): a malformed N value. Strict, because the values will feed the
bearing-capacity and liquefaction checks.
- The layer table has an N값 column; the project file checks that the rows
are well formed.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- ground.ts: G04 when a pile tip is above the 연암 상면 minus 1.0 × D; G05
(info) when layers are entered but there is no 연암 row. No message while
no layers are entered at all.
- ground-model.ts: reads the Python soil.layers as strata rows; the project
file keeps and checks them.
- ② card: a button fills the layer rows from the ground model for the pier.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- types/ground.ts: 위치 (육상·하상·해상), 지하수위 고려 and EL, 지층 행
(name and 하단 EL, from the top down). Checks G01 (layer order), G02 (water
level range), G03 (layer name).
- The 지반고 still feeds the soil cover check; the layer rows and water level
are inputs and do not change the 3D model.
- view/ground-svg.ts: the 삽도 drawn from the inputs and the generated
footings and piles on one EL scale.
- 일괄 적용 copies 위치 and 지하수위 to the checked piers (속성 복사 item,
off by default). Changes list shows arrays and booleans as text.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- A file without a schema number is refused again; the example output in
RAG/pierzainer_ground now has schema 2, so the temporary path is not needed.
- The legacy fixture is removed; tests cover the missing and null schema
numbers and a pier without a ground object.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- ground-model.ts: read schema 2 terrain_grid (origin, step, nx, ny, z),
checked the same way as the stored project form; schema 1 is still read.
- view/terrain.ts: the grid as a mesh in pier-scene coordinates
(x = E − pivot E, z = −(N − pivot N), y = EL), same as the pier frame.
Cells with a missing corner are not drawn.
- scene.ts: draws the terrain in place of the 60 m plane when the model has a
grid; the camera fits the members, not the terrain.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- A file with no `schema` key is read as schema 1, but every pier must have a
`ground` object, so a renamed field is refused instead of loading as empty.
- `schema` null or any other number is still refused.
- The project file keeps the normalised model and checks it with its own
check (checkStoredGroundModel), so a saved model reopens.
- Temporary: remove the no-schema branch once examples/out is regenerated.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- ground-model.ts: read and check schema 1 of the Python ground model.
- ② 지반·지층 card: import the json, show the DTM value beside the excel
value, and apply it only when the user presses the button (tracked as an
override, revertible).
- groundEl becomes an editable, tracked input; the project file keeps the
imported model and checks it on open.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The card only checked the minimum spacing. A 12000 mm footing with 5 piles per 열 gives 2650 mm, above the maximum. The card
now marks such a row ("최대 2250 mm를 넘습니다. 본수를 늘리세요") and the alert list gets a warning (P02). Tests check 5 and 6
piles on a 12000 mm footing.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The footing card takes L, W, h1 (default 2000), the blinding margin on each side (100) and thickness (100). The pile is picked
from the 강관 or PHC list by outer diameter and wall; the inner diameter, area and weight are read from the list. Defaults are
the 1단계 constants, so P1 is unchanged. The model reads them (footing width, height, blinding, pile diameter; the footing
length for grouping). 복합 말뚝 and the rule-pending items stay disabled; the footing rebar is not yet tied to these
inputs (1·2단계 후).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Single-piece lengths such as the B9 and C7 pieces showed long unrounded decimals (2128.1174619702915). They are rounded to
0.1 mm for display and in the Excel rows; the totals are unchanged.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
D is an input on the column card (default 2000 mm). The 3D column, the piles of a cast-in pier and the column rebar follow it;
n_div stays 46. Three checks run on each regenerate and appear in 알림: D below the Level width (2100), D + 2c within the
coping width, and the 주철근 arc spacing ≥ max(1.5·d_b, 40). Spec §5.2 records the rule (approved 2026-10-23).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The drawing has two "S(%)" labels; the first one in the file belonged to another table, so the solplate header was missing.
The header is now the S(%) label with the most solplate column names on its row. The full 운곡교 교각도(2) DXF reads all ten
solplate rows; a test adds a stray label.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The solplate's L (A + margin) runs across the 교각축 직각 and its W (B + margin) along the 교축; the top tapers across L with
T1 at the (−) side (T1 = T + L·|S|/200). The 교량받침 본체 is one box per bearing: the solplate plan less 100 mm on each
side, from the mortar top (EL.X) up h3 = 181 mm, turned with the bearing row. It is shown with the bearing group.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Each bearing gets a solplate wedge: tapered along the 교축 with T1 on the 시점 side, underside at the bearing top (block
top + h3). A, B come from the drawing's ELEVATION table, S and T1/T2 from the SOLPLATE table (NO, S(%), L, W, T, T1, T2),
read by position. The 공통 규칙 (T 30, margin 100, h3 181) feed the plan; changing them regenerates the piers. A new
"솔플레이트" part can be shown or hidden. A solplate table is read only when its S values are found; a missing S is reported.
Also commits the option-1 test change (drawing EL.X minus Excel z).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Per bearing: L = A + margin along the 교축 (s), W = B + margin across it; the underside is the bearing top (block top
EL.X + h3); the top tapers from T1 = T + L·|S|/200 at the 시점 side (−s) to T2 = T − L·|S|/200 at the 종점 side, so
T1 + T2 = 2T and the volume is L·W·T. Corners follow the bearing row (rowSkew). Tests cover L, W, T1, T2, the underside,
the volume and the centring. The model and the 3D do not use it yet.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The drawing has other "EL.X" and "NO" labels. The header is now the EL.X label with the most table column names to its right
on the same row; the No header is the NO label on that row. The full 운곡교 교각도(2) DXF reads all ten bearings (EL.X, h1, h2)
without errors. Tests add the distractor labels.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The reader takes TEXT and MTEXT entities (x, y, text). The EL.X header row names the columns; the No column holds the
bearing numbers; each value is the nearest entry under its header on the same row. On the 운곡교 교각도(2) drawing all ten
bearings read back the reference values (EL.X, h1, h2). The 도면 불러오기 button accepts .dxf as well as sheets. The test
fixture holds only the table's text entries.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>