- 짝 `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
515 lines
13 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|