diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Basin.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Basin.py index 090c3991..e79f7336 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Basin.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Basin.py @@ -35,6 +35,7 @@ from B07_DesignDetail.B07_DesignDetail_Engine_Template import ( compass_entities, entities_bbox, frame_entities, + scale_fields, usable_area, ) from config.config_system import DRAINAGE_RECOMMEND_DIAMETERS_MM, DRAWING_SCALE_BASIN @@ -400,7 +401,10 @@ def build_watershed_drawing( ) entities.extend( frame_entities( - drawing_id, entities_bbox(entities) or bbox, fit=False, fields={"도면명": "유역도"} + drawing_id, + entities_bbox(entities) or bbox, + fit=False, + fields={"도면명": "유역도", **scale_fields(("", DRAWING_SCALE_BASIN))}, ) ) diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py index 54d74e9f..b1c76fa1 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Long.py @@ -44,6 +44,7 @@ from B07_DesignDetail.B07_DesignDetail_Engine_Cad import ( from B07_DesignDetail.B07_DesignDetail_Engine_Template import ( entities_bbox, frame_entities, + scale_fields, ) from common_util.common_util_route_profile import design_elevation_from_longitudinal from config.config_system import DRAWING_SCALE_LONG_H, DRAWING_SCALE_LONG_V @@ -669,7 +670,17 @@ def build_longitudinal_drawing( # A1 도각: 콘텐츠가 이미 종이 mm라 도각도 실치수(1:1)로 두고 위치만 맞춘다. bbox = entities_bbox(entities) if bbox: - entities.extend(frame_entities(drawing_id, bbox, fit=False, fields={"도면명": "종단면도"})) + entities.extend( + frame_entities( + drawing_id, + bbox, + fit=False, + fields={ + "도면명": "종단면도", + **scale_fields(("H", DRAWING_SCALE_LONG_H), ("V", DRAWING_SCALE_LONG_V)), + }, + ) + ) return { "format": DRAWING_FORMAT, diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_MassHaul.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_MassHaul.py index 6fce8c87..e9b37c2c 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_MassHaul.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_MassHaul.py @@ -34,7 +34,11 @@ from B07_DesignDetail.B07_DesignDetail_Engine_Cad import ( polyline_entity, station_no_label, ) -from B07_DesignDetail.B07_DesignDetail_Engine_Template import entities_bbox, frame_entities +from B07_DesignDetail.B07_DesignDetail_Engine_Template import ( + entities_bbox, + frame_entities, + scale_fields, +) from config.config_system import ( DRAWING_SCALE_MASSHAUL_H, DRAWING_SCALE_MASSHAUL_V_M3_MM, @@ -519,7 +523,10 @@ def build_mass_haul_drawing( ) entities.extend( frame_entities( - drawing_id, entities_bbox(entities) or bbox, fit=False, fields={"도면명": "토적도"} + drawing_id, + entities_bbox(entities) or bbox, + fit=False, + fields={"도면명": "토적도", **scale_fields(("H", DRAWING_SCALE_MASSHAUL_H))}, ) ) diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Sheet.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Sheet.py index 9dd44217..43a1e52d 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Sheet.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Sheet.py @@ -31,8 +31,10 @@ from B07_DesignDetail.B07_DesignDetail_Engine_Cad_Table import ( from B07_DesignDetail.B07_DesignDetail_Engine_Template import ( entities_bbox, frame_entities, + scale_fields, usable_area, ) +from config.config_system import DRAWING_SCALE_CROSS # 장 도면 id — 측점 도면(cross_00020m)과 겹치지 않게 `s`를 끼운다(cross_s00020m). # 옛 순번 형식(cross_s01)도 읽어 준다 — 이미 확정한 매니페스트가 그 이름을 갖고 있다. @@ -209,7 +211,14 @@ def build_cross_sheet(sheet: dict[str, Any], sections: list[dict[str, Any]]) -> bbox = entities_bbox(entities) if bbox: - entities.extend(frame_entities(sheet["id"], bbox, fit=False, fields={"도면명": "횡단면도"})) + entities.extend( + frame_entities( + sheet["id"], + bbox, + fit=False, + fields={"도면명": "횡단면도", **scale_fields(("", DRAWING_SCALE_CROSS))}, + ) + ) return { "format": DRAWING_FORMAT, diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Template.py b/B07_DesignDetail/B07_DesignDetail_Engine_Template.py index ff940da6..cace17bc 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Template.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Template.py @@ -304,6 +304,23 @@ def _fill_placeholders( ] +def scale_fields(*denominators: tuple[str, int]) -> dict[str, str]: + """축척 칸(`{{축척_A1}}`·`{{축척_A3}}`)에 넣을 값. + + 도각이 `A1 = 1 :` 를 이미 찍으므로 **분모만** 낸다. A3 는 A1 도면을 절반으로 뽑는 + 종이라 분모가 2배다. 가로·세로 축척이 다른 도면(종단·토적)은 이름표를 붙여 함께 적는다. + 값은 `config_system` 의 축척 상수에서 오며 여기서 새로 정하지 않는다. + """ + + def text(factor: int) -> str: + return " · ".join( + f"{denominator * factor}({name})" if name else str(denominator * factor) + for name, denominator in denominators + ) + + return {"축척_A1": text(1), "축척_A3": text(2)} + + def frame_entities( drawing_id: str, content_bbox: tuple[float, float, float, float],