fix: [fire-shutter] 가이드레일 평면도 ④ 벽연형이 본체 개구부로 진입하는 형태로 수정
- 본체(③) 좌측벽을 ① 마감재 좌측에 밀착 배치 - 좌측벽 개구부 생성 (13.5~58.5mm 구간 열림) - ④ 플랜지가 본체 좌측 개구부로 진입하는 구조로 변경 - ③ 본체 라벨 추가
This commit is contained in:
@@ -1057,14 +1057,14 @@ function renderGrCross() {
|
||||
|
||||
// ====== 철재스라트: 가이드레일 평면도 (130mm × 75mm 결합도) ======
|
||||
// LEFT = 방화벽(벽쪽), RIGHT = 개구부(실내쪽, 슬랫 통과)
|
||||
// ① 마감재 SUS 1.2T (빨간색) - ② 바깥을 감싸는 외피, 상하 2장
|
||||
// ① 마감재 SUS 1.2T (빨간색) - 바깥을 감싸는 외피, 상하 2장
|
||||
// 상단: 10←lip + 13↓tab + 120→body + 25↓ + 15←
|
||||
// 하단: 10←lip + 13↑tab + 120→body + 25↑ + 내부스텝(19← + 14↓ + 15←)
|
||||
// ② 본체 EGI 1.55T (회색) - 메인 C채널, 개구부가 RIGHT
|
||||
// 외형: 90mm(가로) × 72mm(세로), 좌측벽 72mm, 상/하단 플랜지 90mm
|
||||
// ③ 본체 EGI 1.55T (회색) - 메인 C채널, 개구부가 RIGHT
|
||||
// 외형: 90mm(가로) × 72mm(세로), 좌측벽에 개구부(④ 진입용)
|
||||
// 우측 상/하부 립 각 21mm, 내부 계단구조
|
||||
// ③ C형 EGI 1.55T (주황색) - ② 내부 좌측 상단에 위치, 30-45-30 ㄷ자(우측열림)
|
||||
// ④ 벽연형 EGI 1.55T (갈색) - ② 좌측에 위치, 벽과 연결, 30-45-30 ㄷ자(우측열림)
|
||||
// ④ 벽연형 EGI 1.55T (갈색) - ㄷ자(우측열림), 플랜지가 ③ 좌측 개구부로 진입
|
||||
// 벽에 부착, 30-45-30, 세로 중앙 정렬
|
||||
{
|
||||
const sc = 4; // px per mm (확대하여 철판 비율 현실적)
|
||||
const t = g.thickness * sc; // 1.55mm → 6.2px (EGI)
|
||||
@@ -1121,37 +1121,43 @@ function renderGrCross() {
|
||||
const P = []; // SVG 부재 요소 배열
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// ══════════════════════════════════════════
|
||||
// ④ C형 보강 EGI 1.55T (갈색, ㄷ자 30-45-30 우측열림)
|
||||
// 벽 우측면에 부착, 세로 중앙 정렬
|
||||
// ══════════════════════════════════════════
|
||||
const w4cy = by + (b2h - w4height) / 2;
|
||||
P.push(`<rect x="${w4x}" y="${w4cy}" width="${w4depth}" height="${t}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
P.push(`<rect x="${w4x}" y="${w4cy}" width="${t}" height="${w4height}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
P.push(`<rect x="${w4x}" y="${w4cy + w4height - t}" width="${w4depth}" height="${t}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// ② 본체 EGI 1.55T (15세그먼트 절곡, 체이닝 좌표)
|
||||
// ② 본체 EGI 1.55T (절곡 프로파일, 체이닝 좌표)
|
||||
// 프로파일 좌표: (0,0)=좌상단, 90×72mm
|
||||
// 시작/끝: (0,60), Seg1·Seg15(10←) 립 겹침
|
||||
// 좌측벽에 개구부가 있어 ④가 진입하는 구조
|
||||
// ══════════════════════════════════════════
|
||||
// ④ 세로 중앙 정렬 위치 (본체 좌표계 기준)
|
||||
const w4TopInBody = (72 - 45) / 2; // 13.5mm: ④ 상단 (본체 기준)
|
||||
const w4BotInBody = w4TopInBody + 45; // 58.5mm: ④ 하단 (본체 기준)
|
||||
{
|
||||
const ox2 = w4x + w4depth + (10 + 0.75) * sc; // ② 좌측벽 = ④ 끝 + 10mm + 0.75(반두께)
|
||||
const ox2 = bx; // ② 좌측벽 = ① 마감재 body 좌측 (④가 개구부로 진입)
|
||||
const oy2 = by; // ② 상단
|
||||
const c = cBody, s = '#94a3b8';
|
||||
// 프로파일 좌표 → SVG 좌표 변환
|
||||
function r(x,y,w,h,op) {
|
||||
P.push(`<rect x="${ox2+x*sc}" y="${oy2+y*sc}" width="${w*sc}" height="${h*sc}" fill="${c}" stroke="${s}" stroke-width="${op?'0.3':'0.5'}" ${op?'opacity="0.7"':''}/>`);
|
||||
}
|
||||
// 벤드포인트 체이닝 (프로파일 좌표 mm 단위)
|
||||
// B0=(0,60) → Seg1(10→) → (10,60): 립 우측(채널 안쪽)
|
||||
// ── 좌측벽: ④ 개구부로 인해 상/하 분리 ──
|
||||
// 좌측벽 상부: (0,0) → (0,13.5) — ④ 위쪽
|
||||
r(0, 0, 1.55, w4TopInBody);
|
||||
// 좌측벽 하부: (0,58.5) → (0,72) — ④ 아래쪽
|
||||
r(0, w4BotInBody, 1.55, 72 - w4BotInBody);
|
||||
// 립: (0,60) → (10,60) — 좌측 립 (하부 벽 구간 내)
|
||||
r(0, 60-0.75, 10, 1.55);
|
||||
// B0=(0,60) → Seg2(60↑) → (0,0): 좌측벽 상부
|
||||
r(0, 0, 1.55, 60);
|
||||
r(0, 60, 10, 1.55);
|
||||
|
||||
// ── 상단/하단 플랜지 ──
|
||||
// (0,0) → Seg3(90→) → (90,0): 상단 플랜지
|
||||
r(0, 0, 90, 1.55);
|
||||
// (90,72) → Seg13(90←) → (0,72): 하단 플랜지
|
||||
r(0, 72-1.55, 90, 1.55);
|
||||
|
||||
// ── 우측 립 ──
|
||||
// (90,0) → Seg4(21↓) → (90,21): 상부 립
|
||||
r(90-1.55, 0, 1.55, 21);
|
||||
// (90,51) → Seg12(21↓) → (90,72): 하부 립
|
||||
r(90-1.55, 51, 1.55, 21);
|
||||
|
||||
// ── 내부 계단 구조 ──
|
||||
// (90,21) → Seg5(15←) → (75,21): 스텝
|
||||
r(75, 21, 15, 1.55, 1);
|
||||
// (75,21) → Seg6(15↓) → (75,36): 스텝
|
||||
@@ -1166,16 +1172,20 @@ function r(x,y,w,h,op) {
|
||||
r(12, 21, 1.55, 30, 1);
|
||||
// (12,51) → Seg11(78→) → (90,51): 내부 선반
|
||||
r(12, 51, 78, 1.55);
|
||||
// (90,51) → Seg12(21↓) → (90,72): 하부 립
|
||||
r(90-1.55, 51, 1.55, 21);
|
||||
// (90,72) → Seg13(90←) → (0,72): 하단 플랜지
|
||||
r(0, 72-1.55, 90, 1.55);
|
||||
// (0,72) → Seg14(12↑) → (0,60): 좌측벽 하부
|
||||
r(0, 60, 1.55, 12);
|
||||
// (0,60) → Seg15(10→) → (10,60): 끝 립 (Seg1과 겹침)
|
||||
r(0, 60, 10, 1.55);
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// ④ 벽연형 EGI 1.55T (갈색, ㄷ자 30-45-30 우측열림)
|
||||
// 벽 우측면에 부착, 플랜지가 본체 좌측 개구부로 진입
|
||||
// ══════════════════════════════════════════
|
||||
const w4cy = by + w4TopInBody * sc;
|
||||
// 좌측 벽 (④ 좌벽)
|
||||
P.push(`<rect x="${w4x}" y="${w4cy}" width="${t}" height="${w4height}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
// 상단 플랜지 — 본체 개구부로 진입 (w4x → w4x + w4depth)
|
||||
P.push(`<rect x="${w4x}" y="${w4cy}" width="${w4depth}" height="${t}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
// 하단 플랜지 — 본체 개구부로 진입
|
||||
P.push(`<rect x="${w4x}" y="${w4cy + w4height - t}" width="${w4depth}" height="${t}" fill="${cWall}" stroke="${cWall}" stroke-width="0.5" opacity="0.85"/>`);
|
||||
|
||||
// ══════════════════════════════════════════
|
||||
// ① 마감재 SUS 1.2T (빨간색) — 상단 장
|
||||
// 경로: 10←lip + 13↓tab + 120→body + 25↓ + 15←
|
||||
@@ -1263,9 +1273,11 @@ function r(x,y,w,h,op) {
|
||||
const lb1x = bx + m1body / 2, lb1y = tTop - 12;
|
||||
labels += `<circle cx="${lb1x}" cy="${lb1y}" r="8" fill="none" stroke="${cTrim}" stroke-width="1.5"/>`;
|
||||
labels += `<text x="${lb1x}" y="${lb1y + 3}" fill="${cTrim}" font-size="9" font-weight="900" text-anchor="middle" font-family="Pretendard">①</text>`;
|
||||
// (② 라벨 — 제거)
|
||||
// (③ C형 라벨 — 생략)
|
||||
// ④ C형 보강 라벨
|
||||
// ③ 본체 라벨 (본체 내부 상단 중앙)
|
||||
const lb3x = bx + 45 * sc, lb3y = by + 10 * sc;
|
||||
labels += `<circle cx="${lb3x}" cy="${lb3y}" r="8" fill="none" stroke="${cBody}" stroke-width="1.5"/>`;
|
||||
labels += `<text x="${lb3x}" y="${lb3y + 3}" fill="${cBody}" font-size="9" font-weight="900" text-anchor="middle" font-family="Pretendard">③</text>`;
|
||||
// ④ 벽연형 라벨
|
||||
const lb4x = w4x + w4depth / 2, lb4y = w4cy + w4height / 2;
|
||||
labels += `<circle cx="${lb4x}" cy="${lb4y}" r="8" fill="none" stroke="${cWall}" stroke-width="1.5"/>`;
|
||||
labels += `<text x="${lb4x}" y="${lb4y + 3}" fill="${cWall}" font-size="9" font-weight="900" text-anchor="middle" font-family="Pretendard">④</text>`;
|
||||
|
||||
Reference in New Issue
Block a user