Files
Aislo/common_util/common_util_structure_parts.json
T
eomsangdonandClaude Opus 5.5 c45814f910 feat(구조물표): 323-4 형상 얹기 한 벌(TS · 파이썬 짝) — 저장분 · 초안 · 미리 뜬 횡단 같은 길(저장 전 그림 = 저장 뒤 그림) · 빈칸 경고 한 꼴(카드 칩 「종류 칸 빈칸」) · 3D 지문 = 그림 자료 통째 · C군 벽 3D 한 번 · 소단 원천 = 표 형상 berm
- 짝 `common_util_structure_attach.ts` attachShapes ↔ `B06_Section_Engine_Attach.py` attach_shapes — 열쇠 걷고 관 세트 → 벽 → 포장 → 맹암거 → 빈칸 경고(측점 계획 자리 · 「옹벽 높이」 · 「배관 관경」 · 「맹암거 암거 높이」 · 「물넘이포장 월류 높이」)
- 서버 `_read_section_detail` · 재생성 응답 = attach_saved_shapes 하나 · 화면 `withDraftShapes`(현황 = 초안 ?? 저장분 · 초안 없어지면 저장분으로 한 번) — decorate 관 세트 · withDraftPipeKinds · 맹암거 · 포장 · 벽 블록 걷음 · 구조물 초안 없을 때 미리 뜬 횡단에 포장 · 벽 · 맹암거 빠지던 것 · 반폭 넓힘 뒤 날 상세(초안 빠짐) 고침
- 파이썬 얹기 = 목록 함수(culvert_sets_from · attach_culvert_specs · wall_specs_from · attach_wall_specs · underdrains_from · attach_underdrain_specs) + 옛 파일 함수는 감쌈
- 3D 지문 = SHAPE_KEYS(`common_util_structure_shape_keys.ts`) + 조작값 통째(손 해시 걷음 · 벽 기초 · 단 · 포장 · 맹암거 빠짐) · C군 벽 = 기준 측점과 가장 가까운 측점에서만 시작 ~ 끝 스윕(`wallSweepAt`)
- 소단 = 표 형상 berm(BERM_TYPE_ID 걷음 · 화면 isBermType · 서버 catalog_row)
- 시험: test_323_4_attach_mirror(42종 + 빈칸 · 서버 = 화면 · 옛 자리 걷힘 · 벽 한 번 · 지문) · 전수 표 ★ 둘(물넘이포장 걸친 격자 100 = 서버와 같음 · STAGE 4) · 옛 도움 파일 = 측점 → 형상 차례

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ji4nuyLVHcxrXWHTdb5nRD
2026-10-14 17:26:53 +09:00

515 lines
13 KiB
JSON

{
"comment": "구조물 부품 상자(PLAN 322-1) — 코드가 그리는 방법 한 벌. TS(import) · 파이썬(json.load)이 같은 파일을 읽음. parts = 갈래(횡단도 · 카드이름 · 형상 · 3D)마다 부품 id → {이름 · 읽는 칸(옵션 키) · 자리꼴 · 정본 · 필수 칸(비면 그 그림이 안 섬 = 빈칸 경고 · 형상만)}. 처음값 = 종류마다 정의 `반영` 이 없을 때 쓰는 값(지금 동작 · ★ = PLAN_구조물표 4장). 칸 이름 = 어느 종류 정의에도 없는 읽는 칸의 화면 글(빈칸 경고 · 323-4). 표 읽기 = common_util_structure_catalog.ts · .py(짝).",
"parts": {
"횡단도": {
"anchor": {
"이름": "기준 한 장",
"읽는 칸": [],
"자리꼴": ["point", "interval", "site"],
"정본": ["pipe_points", "structures"]
},
"span3": {
"이름": "시작 · 기준 · 끝",
"읽는 칸": ["length_m", "before_m", "after_m"],
"자리꼴": ["interval"],
"정본": ["pipe_points", "structures"]
}
},
"카드이름": {
"pipe": {
"이름": "관종 D관경",
"읽는 칸": ["pipe_kind", "pipe_diameter_mm"],
"자리꼴": ["point"],
"정본": ["pipe_points"]
}
},
"형상": {
"pipe_set": {
"이름": "배관 세트(관 · 유입 · 유출 · 흙막이 · 도수로)",
"읽는 칸": [
"pipe_kind",
"pipe_diameter_mm",
"revet_foundation",
"inlet_type",
"inlet_revet_form",
"inlet_revet_length_m",
"inlet_revet_before_m",
"inlet_revet_after_m",
"inlet_revet_height_m",
"inlet_basin_length_m",
"inlet_basin_before_m",
"inlet_basin_after_m",
"inlet_basin_height_m",
"outlet_type",
"outlet_revet_form",
"outlet_revet_length_m",
"outlet_revet_before_m",
"outlet_revet_after_m",
"outlet_revet_height_m"
],
"자리꼴": ["point"],
"정본": ["pipe_points"],
"필수 칸": ["pipe_diameter_mm"]
},
"box": {
"이름": "BOX 본체 · 날개벽",
"읽는 칸": [
"body_width_m",
"body_height_m",
"wall_thickness_m",
"slab_thickness_m",
"wing_in",
"wing_in_height_m",
"wing_in_length_m",
"wing_in_angle_deg",
"wing_out",
"wing_out_height_m",
"wing_out_length_m",
"wing_out_angle_deg"
],
"자리꼴": ["point"],
"정본": ["pipe_points"]
},
"ford": {
"이름": "세월교(관 · 월류 · 날개벽)",
"읽는 칸": [
"pipe_kind",
"pipe_diameter_mm",
"pipe_count",
"ford_width_m",
"ford_height_m",
"wing_in",
"wing_in_height_m",
"wing_in_length_m",
"wing_in_angle_deg",
"wing_out",
"wing_out_height_m",
"wing_out_length_m",
"wing_out_angle_deg"
],
"자리꼴": ["point"],
"정본": ["pipe_points"]
},
"ford_pavement": {
"이름": "물넘이 포장(파인 노면 · 도수로)",
"읽는 칸": ["ford_width_m", "ford_height_m", "ford_slope_deg", "ford_slope_pct"],
"자리꼴": ["point"],
"정본": ["pipe_points"],
"필수 칸": ["ford_height_m"]
},
"hidden_revet": {
"이름": "독립 기슭막이(관 숨김 벽)",
"읽는 칸": [
"form",
"height_m",
"length_m",
"before_m",
"after_m",
"tiers",
"side",
"foundation",
"face_role",
"face_slope_ratio"
],
"자리꼴": ["interval"],
"정본": ["pipe_points"],
"필수 칸": ["height_m"]
},
"wall": {
"이름": "벽(옹벽 · 흙막이 · 돌쌓기)",
"읽는 칸": [
"form",
"height_m",
"side",
"foundation",
"tiers",
"lift_m",
"shift_m",
"face_role",
"face_slope_ratio"
],
"자리꼴": ["interval"],
"정본": ["structures"],
"필수 칸": ["height_m"]
},
"berm": {
"이름": "소단(사면 계단)",
"읽는 칸": ["width_m", "interval_m", "slope_deg", "depth_m"],
"자리꼴": ["interval"],
"정본": ["structures"]
},
"underdrain": {
"이름": "맹암거",
"읽는 칸": ["culvert_height_m", "culvert_slope_pct"],
"자리꼴": ["point"],
"정본": ["structures"],
"필수 칸": ["culvert_height_m"]
},
"pavement": {
"이름": "포장층",
"읽는 칸": ["pave_spec", "height_m", "widening_off"],
"자리꼴": ["interval"],
"정본": ["structures"]
},
"spoil": {
"이름": "사토(성토 채움)",
"읽는 칸": ["capacity_m3"],
"자리꼴": ["site"],
"정본": ["structures"]
}
},
"3D": {
"pipe": {
"이름": "관 · 유입 · 유출 벽",
"읽는 칸": [],
"자리꼴": ["point"],
"정본": ["pipe_points"]
},
"box": {
"이름": "BOX 본체 · 날개벽",
"읽는 칸": [],
"자리꼴": ["point"],
"정본": ["pipe_points"]
},
"ford": {
"이름": "세월교 몸체 · 관",
"읽는 칸": [],
"자리꼴": ["point"],
"정본": ["pipe_points"]
},
"chute": {
"이름": "물넘이 도수로 띠",
"읽는 칸": [],
"자리꼴": ["point"],
"정본": ["pipe_points"]
},
"wall": {
"이름": "벽",
"읽는 칸": [],
"자리꼴": ["interval"],
"정본": ["pipe_points", "structures"]
},
"surface": {
"이름": "설계선만(몸체 없음)",
"읽는 칸": [],
"자리꼴": ["point", "interval", "site"],
"정본": ["pipe_points", "structures"]
}
}
},
"칸 이름": { "ford_height_m": "월류 높이" },
"처음값": {
"pipe": {
"목록": "both",
"횡단도": "anchor",
"카드이름": "pipe",
"형상": "pipe_set",
"3D": "pipe"
},
"box_culvert": {
"목록": "both",
"횡단도": "anchor",
"카드이름": "name",
"형상": "box",
"3D": "box"
},
"ford_pavement": {
"목록": "both",
"횡단도": "anchor",
"카드이름": "name",
"형상": "ford_pavement",
"3D": "chute"
},
"ford_bridge": {
"목록": "both",
"횡단도": "anchor",
"카드이름": "name",
"형상": "ford",
"3D": "ford"
},
"cross_drain_exposed": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"open_ditch": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"cross_underdrain": {
"목록": "both",
"횡단도": "anchor",
"카드이름": "name",
"형상": "underdrain",
"3D": "surface"
},
"ditch_side": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"ditch_ridge": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"ditch_berm": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"chute": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"slope_drain": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"underdrain": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"retaining_wall": {
"목록": "both",
"횡단도": "span3",
"카드이름": "name",
"형상": "wall",
"형상칸": {
"form": "콘크리트",
"weep": true
},
"3D": "wall"
},
"masonry_wet": {
"목록": "hidden",
"횡단도": "span3",
"카드이름": "name",
"형상": "wall",
"형상칸": {
"form": "돌쌓기(찰)"
},
"3D": "wall"
},
"masonry_dry": {
"목록": "hidden",
"횡단도": "span3",
"카드이름": "name",
"형상": "wall",
"형상칸": {
"form": "돌쌓기(메)"
},
"3D": "wall"
},
"soil_guard": {
"목록": "both",
"횡단도": "span3",
"카드이름": "name",
"형상": "wall",
"형상칸": {
"form": "통나무·목재틀"
},
"3D": "wall"
},
"boulder_masonry": {
"목록": "hidden",
"횡단도": "span3",
"카드이름": "name",
"형상": "wall",
"형상칸": {
"form": "돌쌓기(메)"
},
"3D": "wall"
},
"berm": {
"목록": "both",
"횡단도": "span3",
"카드이름": "name",
"형상": "berm",
"3D": "surface"
},
"erosion_check": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"bed_sill": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"check_dam_small": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"revetment": {
"목록": "hidden",
"횡단도": "span3",
"카드이름": "name",
"형상": "hidden_revet",
"3D": "wall",
"자리꼴": "interval"
},
"evac_road": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"refuge": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"work_yard": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"turnaround": {
"목록": "hidden",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"mirror": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"curb": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"hazard_sign": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"guardrail": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"position_sign": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"water_intake": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"barrier_gate": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"completion_sign": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"spoil_bank": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "spoil",
"3D": "surface"
},
"borrow_pit": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"wildlife_path": {
"목록": "b06",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"revegetation": {
"목록": "b06",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
},
"pavement_concrete": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "pavement",
"3D": "surface"
},
"gravel_surfacing": {
"목록": "b06",
"횡단도": "none",
"카드이름": "name",
"형상": "pavement",
"3D": "surface"
},
"etc": {
"목록": "both",
"횡단도": "none",
"카드이름": "name",
"형상": "none",
"3D": "none"
}
}
}