표지는 DRAWING_GROUPS에 kind 없이 라벨만 있어 화면에서 열 수 없었다. 실무 설계도면 원본(울진 소광리, A3) 1쪽의 잉크 bbox를 pymupdf로 mm 실측해 A1로 2배 환산했다. 원본에 도각이 없다 — 좌우 테두리 없이 상·하 굵은 가로선 두 줄뿐이라, 사용자가 고른 "도각 없는 전면 디자인"이 실무 그대로였다. - resources/template_2dDrawing/00_template_cover.json 신설. 엔티티 14개(재단 표식 Point 4·띠 Hatch 3·글자 Text 7), bbox가 정확히 A1(840x594). 좌표계는 00_template_A1 과 같아 도각 도면과 나란히 놓인다. - 굵은 띠는 solid Hatch로 냈다. lineWidth는 캔버스 화면 픽셀이라(screenCanvas .drawController.ts:261) 확대해도 두꺼워지지 않아 실치수를 못 낸다. - 글자 크기는 잉크 높이가 아니라 폭으로 잡았다. 원본은 장평이 좁은 CAD 글꼴이라 높이를 그대로 옮기면 위치값이 종이 밖으로 44mm 넘치고 라벨과 겹친다. - B07_DesignDetail_Engine_Cad_Cover.py 신설. frame_entities()를 쓰지 않는다 — _transform_entity()가 Hatch의 points 배열을 못 옮기고, 표지는 A1 실치수 고정이라 애초에 변환이 필요 없다. 공용 함수는 건드리지 않았다. - kind "cover" 배선: Schema Literal, Api_Fetch, UI_Page DRAWING_GROUPS, Router_Support 목록·빌드 분기·확정 캐시 매핑. 값(공사명·위치·사업량·시행청)은 아직 빈칸이다 — 메타 배선은 다음 판. 검증: tmp/tests/test_cover_template.py 6건 통과(A1 치수·Hatch 두께·잠금 레이어· 치환·lru_cache 오염 없음). 공용 브라우저에서 표지를 열어 엔티티 14개 전부 b08-frame, Ctrl+A 선택 0 확인. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
351 lines
6.1 KiB
JSON
351 lines
6.1 KiB
JSON
{
|
|
"format": 7,
|
|
"source": "실무 설계도면 1쪽(울진 소광리 A3) 실측을 A1로 2배 환산 — 자체 제작",
|
|
"entities": [
|
|
{
|
|
"id": "4f3a4e40-93ce-592f-9fc1-21d5bad71b58",
|
|
"type": "Point",
|
|
"lineColor": "#ff7f00",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"point": {
|
|
"x": -5.05,
|
|
"y": -5.04
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "ebd9e8d3-a2ea-58ea-a5fc-1978eff0f3d7",
|
|
"type": "Point",
|
|
"lineColor": "#ff7f00",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"point": {
|
|
"x": -5.05,
|
|
"y": 588.96
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "b8fb96e8-8503-589d-b337-eea9333c05bb",
|
|
"type": "Point",
|
|
"lineColor": "#ff7f00",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"point": {
|
|
"x": 834.95,
|
|
"y": 588.96
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "7b3f70ac-3bcd-547c-84fe-450696994a57",
|
|
"type": "Point",
|
|
"lineColor": "#ff7f00",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"point": {
|
|
"x": 834.95,
|
|
"y": -5.04
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "57a36608-f16e-5293-838c-d81287aa80f2",
|
|
"type": "Hatch",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"points": [
|
|
{
|
|
"x": 47.55,
|
|
"y": 561.76
|
|
},
|
|
{
|
|
"x": 798.75,
|
|
"y": 561.76
|
|
},
|
|
{
|
|
"x": 798.75,
|
|
"y": 564.36
|
|
},
|
|
{
|
|
"x": 47.55,
|
|
"y": 564.36
|
|
},
|
|
{
|
|
"x": 47.55,
|
|
"y": 561.76
|
|
}
|
|
],
|
|
"options": {
|
|
"style": "solid",
|
|
"color": "#f5f7fa",
|
|
"spacing": 1,
|
|
"angle": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "12c06635-9583-5abc-8e97-7963c2587d78",
|
|
"type": "Hatch",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"points": [
|
|
{
|
|
"x": 47.55,
|
|
"y": 19.76
|
|
},
|
|
{
|
|
"x": 798.75,
|
|
"y": 19.76
|
|
},
|
|
{
|
|
"x": 798.75,
|
|
"y": 21.76
|
|
},
|
|
{
|
|
"x": 47.55,
|
|
"y": 21.76
|
|
},
|
|
{
|
|
"x": 47.55,
|
|
"y": 19.76
|
|
}
|
|
],
|
|
"options": {
|
|
"style": "solid",
|
|
"color": "#f5f7fa",
|
|
"spacing": 1,
|
|
"angle": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "b87e7ca8-76a6-5530-a8bb-fb77d5b374a2",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "{{연도기번}}",
|
|
"basePoint": {
|
|
"x": 57.35,
|
|
"y": 546.06
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "left",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 17.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "27a19191-67f5-5690-8a7c-e8b7ef5100f0",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "{{공사명}} 설계도",
|
|
"basePoint": {
|
|
"x": 788.95,
|
|
"y": 451.36
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "right",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 30.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "fd59d8c9-f563-591c-baad-111ed79bc9d4",
|
|
"type": "Hatch",
|
|
"lineColor": "#ff7f00",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지",
|
|
"shapeData": {
|
|
"points": [
|
|
{
|
|
"x": 602.95,
|
|
"y": 423.76
|
|
},
|
|
{
|
|
"x": 788.95,
|
|
"y": 423.76
|
|
},
|
|
{
|
|
"x": 788.95,
|
|
"y": 425.36
|
|
},
|
|
{
|
|
"x": 602.95,
|
|
"y": 425.36
|
|
},
|
|
{
|
|
"x": 602.95,
|
|
"y": 423.76
|
|
}
|
|
],
|
|
"options": {
|
|
"style": "solid",
|
|
"color": "#ff7f00",
|
|
"spacing": 1,
|
|
"angle": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "f7cdf4c3-5865-5978-a56f-793754d92efd",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "- 위 치 :",
|
|
"basePoint": {
|
|
"x": 464.95,
|
|
"y": 364.76
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "left",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 14.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "2f8ea109-735e-5462-9099-debf75d73370",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "{{위치}}",
|
|
"basePoint": {
|
|
"x": 579.95,
|
|
"y": 364.76
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "left",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 14.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "ba655100-11ba-5b9f-8da7-709315c7b5ad",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "- 사 업 량 :",
|
|
"basePoint": {
|
|
"x": 464.95,
|
|
"y": 341.06
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "left",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 14.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "9ae6292e-58c8-590f-a574-e40fae45ae9b",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "{{사업량}}",
|
|
"basePoint": {
|
|
"x": 579.95,
|
|
"y": 341.06
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "left",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 14.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "6db8bf14-1841-5094-b5db-cc9a512d2e76",
|
|
"type": "Text",
|
|
"lineColor": "#f5f7fa",
|
|
"lineWidth": 1,
|
|
"layerId": "-00.표지 TEXT",
|
|
"shapeData": {
|
|
"label": "{{시행청}}",
|
|
"basePoint": {
|
|
"x": 784.35,
|
|
"y": 84.06
|
|
},
|
|
"options": {
|
|
"textDirection": {
|
|
"x": 1.0,
|
|
"y": 0.0
|
|
},
|
|
"textAlign": "right",
|
|
"textColor": "#f5f7fa",
|
|
"fontSize": 18.0,
|
|
"fontFamily": "sans-serif"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"layers": [
|
|
{
|
|
"id": "-00.표지 TEXT",
|
|
"name": "-00.표지 TEXT",
|
|
"isVisible": true,
|
|
"isLocked": false
|
|
},
|
|
{
|
|
"id": "-00.표지",
|
|
"name": "-00.표지",
|
|
"isVisible": true,
|
|
"isLocked": false
|
|
}
|
|
]
|
|
} |