fix: [fire-shutter] 가이드레일 1번 절곡도 전면 재수정

- 절곡 시퀀스: 10-11-110-15-13-16 → 10-11-110-30-15-15-15
- 3단 접힘 → 4단 J-hook 접힘으로 변경
- 수직벽 30mm + 하단탭 15mm + 복귀벽 15mm + 상단탭 15mm
- 상/하단 대칭 좌표 재계산
This commit is contained in:
김보곤
2026-03-13 08:59:34 +09:00
parent 19b3db0499
commit 4b8a855b37

View File

@@ -748,13 +748,14 @@ function renderGrCross() {
// ── ④ 벽연형-D 치수 (절곡: 11-23-40-23-11) ──
const c4a = 11 * sc, c4b = 23 * sc, c4c = 40 * sc;
// ── ① 마감재 SUS 치수 (2장 대칭, ② 위 덮씌우기, 절곡: 10-11-110-15-13-16) ──
// ── ① 마감재 SUS 치수 (2장 대칭, ② 위 덮씌우기, 절곡: 10-11-110-30-15-15-15) ──
const m1a = 10 * sc; // 코킹립 (벽쪽, 수평)
const m1b = 11 * sc; // 측면탭 (수직)
const m1c = 110 * sc; // 수평면 (메인 커버, 코킹립10 포함 시 전체 120mm)
const m1d = 15 * sc; // 개구부쪽 1단 수평 (우측으로)
const m1e = 13 * sc; // 개구부쪽 수직 (중앙 방향)
const m1f = 16 * sc; // 개구부쪽 2단 수평 (우측으로)
const m1d = 30 * sc; // 우측 수직벽 (표면→바닥, 중앙 방향)
const m1e = 15 * sc; // 하단 수평탭 (개구부 방향, 우측)
const m1f = 15 * sc; // 복귀벽 (하단탭→상단탭, 외측 방향)
const m1g = 15 * sc; // 상단 수평탭 (개구부 방향, 우측)
// ── 레이아웃 (좌→우 배치) ──
const pad = 80, wallW = 35;
@@ -840,9 +841,9 @@ function renderGrCross() {
`<rect x="${c4SideStartX}" y="${c4Y+c4c-t2-c4a}" width="${t2}" height="${c4a}" fill="${cBk4}" stroke="${ms}" stroke-width="${mw}" opacity="0.8"/>`,
].join('\n');
// ── ① 마감재 SUS 1.2T × 2장 (② 바깥을 감싸는 외피, 절곡: 코킹립10-측면탭11-수평면110-15-13-16, 상하 대칭) ──
// ── ① 마감재 SUS 1.2T × 2장 (② 바깥을 감싸는 외피, 절곡: 10-11-110-30-15-15-15, 상하 대칭) ──
// 좌측: 코킹립(10, 벽쪽 수평) + 측면탭(11, 수직) → 방화벽과 'ㄴ'자 립 결합
// 우측: 15(수평,우측) → 13(수직,중앙) → 16(수평,우측) — 개구부쪽 계단형 접힘 (총높이 25mm)
// 우측: 30(수직,중앙↓) → 15(수평,우측) → 15(수직,외측↑) → 15(수평,우측) — J-hook 접힘 (총높이 30mm)
const trimX2 = lipEndX; // 치수선용 우측 끝
// ①는 ② 바깥을 감싸는 구조
@@ -860,12 +861,14 @@ function renderGrCross() {
`<rect x="${trimL1}" y="${tTop}" width="${t1}" height="${m1b+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 수평면: 벽~립 (좌→우, 메인 커버)
`<rect x="${trimL1}" y="${tTop}" width="${trimR1-trimL1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 1단: 수평 15mm (수평면 우측 끝에서 우측으로 연장)
`<rect x="${wrapX}" y="${tTop}" width="${m1d}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 2단: 수직 13mm (1단 우측 끝에서 아래로, 중앙 방향)
`<rect x="${wrapX+m1d-t1}" y="${tTop}" width="${t1}" height="${m1e+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 3단: 수평 16mm (2단 하단에서 우측으로)
`<rect x="${wrapX+m1d-t1}" y="${tTop+m1e}" width="${m1f}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 1단: 수직벽 30mm (수평면 우측 끝에서 아래로, 중앙 방향)
`<rect x="${wrapX-t1}" y="${tTop+t1}" width="${t1}" height="${m1d}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 2단: 하단 수평탭 15mm (수직벽 하단에서 우측으로)
`<rect x="${wrapX-t1}" y="${tTop+m1d}" width="${m1e+t1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 3단: 복귀벽 15mm (하단탭 우측 끝에서 위로, 외측 방향)
`<rect x="${wrapX+m1e-t1}" y="${tTop+m1d-m1f}" width="${t1}" height="${m1f+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 4단: 상단 수평탭 15mm (복귀벽 상단에서 우측으로)
`<rect x="${wrapX+m1e-t1}" y="${tTop+m1d-m1f}" width="${m1g}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// ══════ 하단 ① 마감재 (② 하면 바깥을 감싸기, 거울상) ══════
// 코킹립: 측면탭 하단에서 벽쪽(좌측) 방향 수평 10mm ('ㄴ'자 하단)
`<rect x="${trimL1-m1a}" y="${tBot-m1b-t1}" width="${m1a}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
@@ -873,12 +876,14 @@ function renderGrCross() {
`<rect x="${trimL1}" y="${tBot-m1b}" width="${t1}" height="${m1b+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 수평면
`<rect x="${trimL1}" y="${tBot}" width="${trimR1-trimL1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 1단: 수평 15mm (수평면 우측 끝에서 우측으로 연장)
`<rect x="${wrapX}" y="${tBot}" width="${m1d}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 2단: 수직 13mm (1단 우측 끝에서 위로, 중앙 방향)
`<rect x="${wrapX+m1d-t1}" y="${tBot-m1e}" width="${t1}" height="${m1e+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 3단: 수평 16mm (2단 상단에서 우측으로)
`<rect x="${wrapX+m1d-t1}" y="${tBot-m1e}" width="${m1f}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 1단: 수직벽 30mm (수평면 우측 끝에서 위로, 중앙 방향)
`<rect x="${wrapX-t1}" y="${tBot-m1d}" width="${t1}" height="${m1d}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 2단: 상단 수평탭 15mm (수직벽 상단에서 우측으로)
`<rect x="${wrapX-t1}" y="${tBot-m1d}" width="${m1e+t1}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 3단: 복귀벽 15mm (상단탭 우측 끝에서 아래로, 외측 방향)
`<rect x="${wrapX+m1e-t1}" y="${tBot-m1d}" width="${t1}" height="${m1f+t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
// 개구부쪽 4단: 하단 수평탭 15mm (복귀벽 하단에서 우측으로)
`<rect x="${wrapX+m1e-t1}" y="${tBot-m1d+m1f}" width="${m1g}" height="${t1}" fill="${cTrim}" stroke="${cTrim}" stroke-width="0.3"/>`,
].join('\n');
// ── 연기차단재 (현재 비활성 — 위치 재조정 후 활성화 예정) ──