- The S1 layout runs along the 교각축 (vertical in the plan), so its text sits
beside the block, turned to match, instead of across the gap between blocks.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- The S2 layout along the 교축 (below the block), the S1 layout along the 교각축
(beside it), and the block width, in the same form as the C–C section.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- view/block-rebar-plan-svg.ts: the selected pair from above — S2 lines along the
교각축 (spaced at S2 across the 교축), S1 lines along the 교축 (spaced at S1),
each end a dot (leg); the bar sets carry the row numbers only (S1, S2).
- The ③ card switches between the C–C section and the plan.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- The section was drawing every bearing on the same 교축 line, so the blocks and
dimension text stacked on top of each other. It now cuts through the selected
pair (①·⑥ …), which the ③ card also shows as chips, shared with ②.
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>
- Blocks, solplates, and the dashed drawing outlines are turned by the bearing's
방위 (rowSkewDeg), the same turn as the 3D block; each bearing is labelled
with its 방위 in degrees.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Blocks, solplates, and bearing centres sit at their real 교각축 positions;
the pair's offset is not aligned away. The 편심 is written on the figure.
- C4 and C5 dimensions run from the block edges to the bearings.
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>
- C4 runs from the block top edge to the bearing row, C5 from the bearing row
to the bottom edge. The values are the model's C4 and C5.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Blocks and solplates are drawn on one line across the 교축; the 교각축 offset
of the bearings is written as text.
- Arrows for the 교축 (horizontal) and the 교각축 방향 (vertical).
- Dimensions along the bottom: C1 (bearing to block edge), C2 (between the
bearings), C1, and C3 (block span).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- view/bearing-section-svg.ts: the pair's elevation — blocks (일체: one stepped
outline), mortar, bearing body and solplate per bearing from the model; the
drawing heights overlaid dashed. EL.X at the mortar top, E = h1 + h2 + h3 + h4.
- view/solplate-svg.ts: per bearing, the plan L × W and the taper T1 · T2
(S %), with the drawing values dashed.
- ② bearing card: section figure and the two solplate figures under the plan.
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>
- The 위치 buttons duplicated the 형상 옵션 chips above the card. The chips
stay the one place for 위치 (only the default is selectable until Q6).
- The water-level row lays out as a flex row, so its label and input do not
overlap.
- The 연암 상면 caption sits just under the line instead of over the band label.
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 B-bar counts are computed from the footing dimensions already, so no formula change was needed. Tests check the P1
values, that a wider and longer footing adds B1–B8 bars, and that a 2200 mm height builds rebar and 3D.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The plan has overall dimension lines (length along the top, width at the right) and two chains: along the length, the
distances from the footing edge to the first pile and between piles; across the width, the same for the pile rows. The
chains are read from the pile positions, so they follow the layout.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The side view has dimension lines with 45° ticks: the footing length (mm) above the footing, the footing height h1 at its right,
and the visible pile length (끊음) at its left. The margins are wider (1.5 m) for the labels; the plan uses the same margin so the
two views stay aligned. The old h1 label is replaced by the dimension label.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The dimension labels were 0.28 m, about 6 px on screen. They are 0.5 m now, so the mm values can be read.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The break lines ran across the members at a slant. They are now two short slanted strokes on the column stub and across the
pile group, and the pile label is moved below the break.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Plan and side use the same scale (22 px per m) and share their horizontal extent, so the footing lines up. The side view breaks
the column (3 m above the footing) and the piles (4 m below it) so its height stays near the plan's. The row is three columns
from 1100 px, the side view drops to its own row between 800 and 1100 px, and it stacks below 800 px.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The pile-count card (−/+ and the 20본 total) is on the left and the plan on the right, in one row; the side view is below.
Changing a count is now seen on the plan next to it. The layout stacks below 800 px.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The footing card shows a plan (footing rectangle, pile circles, column, pier axis, mm labels) and an elevation (footing,
piles to their tips, column, h1 and pile length). The drawings are SVG strings built from the model, so they follow the
inputs. θ is noted as not yet applied. Tests check the pile count, the mm labels and the width input.
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>
"도면값 채우기" set only EL.X, h1 and h2, so no solplate was drawn. It now also sets A, B and the solplate slope S from the
reference values. The bearing card warns how many bearings lack A, B or S.
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>
The sheet needs the header names No, EL.X, h1 and h2 (case, spaces, dots and units in parentheses are ignored). Rows are
checked: No must be a unique positive integer, EL.X must be in metres (30–100), h1 and h2 must be positive mm up to 1000.
Any error stops the import with the first messages; a valid sheet fills this pier's drawing values and regenerates the
pier. The parser is pure and tested.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The project has one basis: 엑셀 z (default) or 도면 EL.X. On ②, the bearing card lists EL.X, h1 and h2 for each bearing
(per pier), with a button to fill the reference values. With the drawing basis the model takes the drawing EL.X as the
bearing height; the coping tops stay within the 5 mm tolerance, the front block is 164 mm and the back 139 mm (excluding the
pad). The check compares EL.X − h1 − h2 with the Excel-basis coping top. The basis and the drawing values are saved in the
project file (optional fields). Changes regenerate every pier at once.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
With this definition the drawing's coping top matches the model's coping top to within 1 mm on all ten bearings. The earlier
0.211 m offset came from reading EL.X as the solplate top, which was wrong. The reference table now uses EL.X − h1 − h2,
and the check tests the match.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
On the bearing card, four inputs drive E = h1 + h2 + h3 + h4, L = A + margin, W = B + margin and T1/T2 = T ± L·|S|/2. The
defaults are the drawing values, so every row gives back the drawing values; changed rows are marked. The values are screen
state for now and do not change the model or the project file (Q16 stays open).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The solplate tapers along the bridge axis. T is the centre thickness (30), T1 the thickness on the 교각축 직각 (−) side
(38) and T2 on the (+) side (22); T1 + T2 = 2T. The table's T column had shown the (−) side value, so T is now 30 on every
row. A test checks T1 + T2 = 2T.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The P1 상세도 ELEVATION TABLE and 솔플레이트 TABLE are shown on the bearing card. The model does not use them (Q16). The
ELEVATION table compares the drawing's coping top (EL.X − E) with the model's coping top; the difference is a constant
0.211 m on all ten bearings. The solplate table checks T1 and T2 against T ± L·|S|/2 with the 공통 규칙 T = 30 mm; all
rows match. Tests check E = h1+h2+h3+h4, L and W, the T1/T2 rule, and the constant offset.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The coping middle level is (Level underside + step top)/2. P3's top and P6's upper limit are this level, and e_top is the
step top minus it (P1: 1322, replacing the 1623 reverse-engineered value). On P1 P3 goes from 38 to 39 ties and P6 stays at
8 levels. With taper h2 = 3000 the middle level is 13275: P3 37 ties, P6 8 levels (32 bars), e_top 2072.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
e_P1 is no longer an input: P1 top = C3 (lowest coping top − 127 − 2·57.2 = 43.170) − 100 = 43.070, so e_P1 = step top −
43.070 = 485 mm. The P1 top moves from 15147 to 14862 mm; the top piece shortens by 285 mm. Couplers are placed at k·3000
with at least 2500 mm below the P1 top (a value to confirm). On P1 the coupler count stays at four (3, 6, 9, 12 m). P2 and
the tie top do not change.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Hc = Level underside − footing top, and h_cop = step top at the column centre − Level underside. P1 gives 12703 and 2644,
unchanged. With taper h2 = 3000 the Level underside moves down, so Hc = 11203 and the P2 top (Level underside + l_d)
moves to 13039, while the P1 top stays at the step top (15147). The 3D and the 철근표 use the same heights.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
C12 and C13 come from one grid from the Level underside + 127 at 250 mm, up to top − 400 mm (상면 여유). The fixed count of
seven rows is kept only for callers that give no top. P1 is unchanged (C12 5, C13 2); a taper of 3000 mm now gives C12 11
and C13 2, and the C13 first row is always the last C12 row plus 250.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The 250 grid runs from the Level underside + 127 for C12 and C13 together. The drawing's sixth C12 row at the bottom is the
bottom bar C7·C8 (코핑철근.md §6.1), so no bars are added and the counts stay the same.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The split between C12 and C13 follows the end underside, not a fixed level: C12 rows lie between the Level underside and
the end underside (taper height h2), C13 rows between the end underside and the top (end height h1). The break is the end
underside + 127 mm, the taper line's start at the end face. P1 is unchanged (C12 41.288–42.288, C13 42.538–42.788). Tests
check the band rule for h1 and h2 changes.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The three values are inputs on the coping card, with the P1 values (1000 · 1500 · 2100) when absent, and they are tracked
like the other shape inputs. The geometry and the coping rebar read them from one CopingGeom: the U heights follow the
closed form (h1 − 2c) + h2·min(x_s, x_L0)/x_L0, which reproduces the P1 values. The side rows are assumed to keep their
position relative to the Level underside (명세 확인 필요). P1 results are unchanged; the full suite passes.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The coping card lists d_IP2 and a table of the step segments: range, front and back coping tops, the lateral step, and
the block heights including the 50 mm pad (150 / 200 as in the 삽도). The table is read from the model; nothing new is
computed or entered. Tests check the P1 values against the 삽도.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The four panels are in one stack on the right of the 3D view, 180 px wide, with the ⓘ origin note opening to its left.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The right stack is gone. 색 기준 and the ⓘ origin note now sit under 시점 in the left stack, so every 3D info panel is on the
left. The stack is 180 px wide; the origin note opens to the right of its button.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
On wide screens the pier name moves to the 교각 목록 (name · type), the band is gone and the 3D view takes the full height.
A left stack holds 부재 표시 and then 시점; a right stack holds 색 기준 and then the ⓘ origin note. The active pier is scrolled
into view when it changes. Below 600 px the title is kept above the model and the stacks sit below it.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The title stays. The view buttons become a menu that shows the current view and closes on a choice, Esc or an outside
click. The origin note is an ⓘ toggle. 부재 표시 and 색 기준 are collapsed by default and show their state in the summary
(e.g. 부재 표시 7/7 ▾, 색 기준: 역할 ▾); their open state is remembered per viewer, with guarded storage access.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Between 601 and 1100 px the title stays on the left and the view buttons and origin note sit on the right. Wider windows
keep the current order; below 600 px the band wraps as before.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The title, view buttons and origin sit in one 44 px band on the model. 부재 표시 is a collapsible panel on the left and
색 기준 (③ only) a collapsible panel on the right, both over the canvas, about 170 px wide, with 44 px touch targets.
Below 600 px the band wraps and the panels fall below the model.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
On wide screens the page is one fixed-height frame: the left list, the centre (model band on top, table below) and the
right results each scroll on their own. The model band is 280–560 px (48vh) and the 3D view follows its container
through a ResizeObserver. The table header stays on top. Below 1100 px the panels stack with a 60vh height limit.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Each block takes the skew of its bearing row against the perpendicular of its stretch axis (rowSkewDeg, from the bearing
azimuth). The blocks and pads are turned to that skew, and the S1/S2 bars are drawn in the block frame and turned with
it, so their lengths and embedments do not change. ② shows the row skew (P1: front −4.42°, back −3.11°). Approved
2026-10-23 with the drawing as reference.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The status line and the backup banner share one row (the banner appears only when a backup exists). Results and notices
show as toasts that close after 4 s; problems stay until closed. The status line keeps only the empty-state hint.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
A row can now carry pieces (length, count). C9, C10, C11 and C9·C11 사이 have U and 삿갓 pieces per position (3 loops each);
C12 and C13 have 일자 and ㄷ pieces per bar; P1 and P2 have their splice pieces, each counting all the bars. The
재료표 totals from the pieces, so no bar is left out. 개수 stays the 철근표 count; the piece count is kept beside it. The
삿갓 length h − 100 is an assumption (Q-K5) and is noted on the ④ screen.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The 철근재료표 moves from ③ to a new stage ④ in the header. It shows the checked piers (or the current one), one table
per pier with 강종 → 직경 → 번호 and subtotals, and a total across piers. The Excel export has one sheet per pier and a
합계 sheet. Print uses A4 landscape without the header and buttons. ③ keeps a summary line and a link to ④.
Spec §5, §6.9 and §7 record the stage (approved 2026-10-23).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The quantity table sits below the 철근표 for the whole pier. Lines group by grade and nominal diameter, with
subtotals, unit weight 0.00617·d² (kg/m), the total in kg and ton, and a 할증 total. 할증 is an input in 공통 설정,
default 0 as an assumption. Couplers are counted, not weighed. Bars with no length yet (C9, C10, C11, C12, P1, P2) are
listed as missing and kept out of the totals. The table exports to Excel with SheetJS.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Bars drawn through several points are one tube each, with every bend rounded by R·tan(φ/2) at the centre-line radius
(inner factor × d + d/2). The inside-radius factors (D16 and below, D19–D25, D29–D35, D38 and above) are inputs in 공통
설정, with KDS-based defaults 2 / 3 / 4 / 5. The size-class limits sit in one place (SIZE_CLASS), which also fixes
D25 (25.4) being read as the D29–D35 class in hookLength. The helper bendDeduction gives the centre-line deduction for
the length option, which is not yet applied to the 철근표 lengths.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The three 폐합 of one position were drawn at the same x, so their U bars overlapped. Loop i now sits at x + i·2d and its
삿갓 one bar (d) beside its U, so no U meets another loop's U or 삿갓. The 철근표 counts and lengths are unchanged.
The rule is geometry only; the spec (§4.3) needs the stacking note.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The 철근표 has a selection checkbox per row. Select-all / clear and 선택만 보기 sit above the table. In 선택만 보기 the other
bars are hidden in 3D and the members stay at 50% for context. A 3D click or an alert [보기] selects one bar; the
selection clears when the member tab or the pier changes. The selection is screen state and is not saved to the project.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
fyH and fyS become a grade per prefix (D · H · S), chosen from SD300 · SD400 · SD500. The defaults are the P1 values, so
the P1 results do not change. Each bar takes its grade from its 규격 (fyOf). The 철근표 has a 강도 column. Older files
that stored fyH / fyS are read into the grade map. Only fck is still an assumed value (I02). Approved 2026-10-23.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
On ③ the members, the ground and the blinding concrete are drawn at half opacity without depth writes, so the bars show
through. Outside ③ each part returns to its own opacity. Rebar colours are shaded to 0.8 and slightly glossier so they
read through the members. Approved 2026-10-23.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The colour basis control sits in the 교각 3D 뷰 title row between the 시점 buttons and the origin note.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The colour basis control and legend sit below the 3D canvas and show only on ③, so they belong to the model window.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Role colours stay the default (spec §6.7). A control on ③ switches to diameter (nominal size, H and S of one size
share a colour, Okabe–Ito palette) or member (받침블럭 · 코핑 · 기둥 · 확대기초). The legend lists only the items
the model has. Highlighting and the state colours are unchanged. Approved 2026-10-23.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The fck row on ② no longer uses the orange changed style, since fck does not change the shape and is not counted in 변경 n건.
The row says 배근에만 반영 instead.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Each member can take its own fck on its ② card. A member without one uses the ③ 공통 fck, and fy stays common.
The rebar table and the 3D model both read the resolved value. The I02 note stays until every fck member has its
own value. The project file stores the values as optional fckByMember and refuses a bad value on open.
Changing the fck is not a shape change, so it is not counted in the pending changes.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The stair bars in the 철근표 and the 3D model, and the 3D bottom and column bars, were built with the default fck,
so a changed fck did not reach them. buildRebar3D now takes the material, and a material change rebuilds the scene.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The model sits at the top of the centre column and the table or member card
below it, between the pier list on the left and the results on the right, as in
the ① screen and the 시안.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- The 3D model of ③ draws each bar family from the rebar modules (coping top and
bottom bars, shear loops, side bars, column bars and ties, footing B1–B8, bearing
S1/S2) and names every bar as its 철근표 number.
- A table row click highlights the bar in 3D (the others dim); a click on a 3D bar
selects its row in the table and sets the member tab. Drags still rotate.
- The rebar is shown only on ③. Not drawn yet: C14, C15/C16, B9–B12, the couplers,
and the bars of a bent coping.
- Tests: family names and counts (P1 46), highlight behaviour.
- Not verified in a browser.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The 3D viewer (views, canvas, part toggles) moves into a slot at the top of ②
and ③ while those screens are shown, and back to ① otherwise. Moving the
element keeps the WebGL context; the viewer is measured after its screen is
visible.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The ③ screen had no pier list. The left column now has the 교각 목록 with
checkboxes and a 배근 status (계산됨 / 오류), the 선택 n기 line with 속성 복사…,
then 부재 · 배근 타입. The checks are shared with ① and ②.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The segment table lists each column's Level and the segments between columns
(추천안, Q-K2), so a 2주형 shows 좌 경사 3, Level 1 9, Level 2 9, 기둥 사이 1 18,
우 경사 3. One column is unchanged.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Coping §9: C10 at each column centre (@300, k_max as for one column), C9 / C11
outside, and the gaps between columns filled @250 from both C10 groups with the
remaining length shared evenly (추천안, Q-K2). One column gives the T형 result.
- Column bars and couplers repeat per column (P1 230 × 2 for 2주형, × 3 for 3주형).
- Footings: each footing's bars are summed per name; the longest length governs.
- C14 is kept as the T형 layout with an RB-M01 note (per-column rule open, Q-K11).
- Tests: counts for 2주형 and 3주형; T형 unchanged; too-close columns refused.
- Not yet: the ③ shear-segment table for multi columns (still single column), the
C14 per column, and a drawing for multi columns. Not verified in a browser.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
- Segments of C9 (좌 경사), C10 (Level), C11 (우 경사): first and last bar in
metres, spacing, count, and bar number. From the bar positions (코핑철근.md §3).
- Test: 0.300–4.550 (18 @250), 4.800–7.200 (9 @300), 7.450–11.700 (18 @250).
- Not verified in a browser.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
[보기] only switched the member tab. The alert now names its bar (RB-F08 → B2),
and [보기] switches to the member, highlights that row, and scrolls to it.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The text columns were right-aligned and the table pushed the 비고 column out of
view. Text columns are now left-aligned, numbers (길이, 개수) right-aligned, and
the table scrolls sideways inside its panel.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>