fix: [fire-shutter] 샤프트 최소 감김량 표시 + shutterPos 100 복원
- shutterPos 100%(완전 내림)에서도 샤프트에 최소 감김 표시 (minRollH=8%) - 스크린이 샤프트에 물리적으로 연결된 실제 구조 반영 - shutterPos 기본값 100으로 복원
This commit is contained in:
@@ -257,7 +257,7 @@
|
||||
<!-- 개폐율: 한 행 -->
|
||||
<div class="flex items-center gap-2 mb-1">
|
||||
<label class="text-[10px] text-slate-500 font-bold shrink-0" style="width:24px;">개폐</label>
|
||||
<input type="range" id="shutterPos" min="0" max="100" value="50" class="flex-1 accent-blue-500" style="height:3px;" oninput="fs3dShutterPos(this.value)">
|
||||
<input type="range" id="shutterPos" min="0" max="100" value="100" class="flex-1 accent-blue-500" style="height:3px;" oninput="fs3dShutterPos(this.value)">
|
||||
<span id="shutterPosLabel" class="text-[10px] text-blue-400 font-black shrink-0" style="width:28px;text-align:right;">100%</span>
|
||||
</div>
|
||||
<!-- 투명도: 한 행 -->
|
||||
@@ -406,7 +406,7 @@
|
||||
// Shutter Box
|
||||
sb: { width:2280, height:380, depth:500, thickness:1.6, shaftDia:80, bracketW:10, motorSide:'right', viewMode:'side', showShaft:true, showSlatRoll:true, showMotor:true, showBrake:true, showSpring:true },
|
||||
// 3D
|
||||
td: { shutterPos:50, caseOpacity:0.3, lightPreset:'default', bgColor:'#ffffff', show:{ case:true, shaft:true, motor:true, rails:true, slats:true, bottomBar:true, wall:false, slatRoll:true } },
|
||||
td: { shutterPos:100, caseOpacity:0.3, lightPreset:'default', bgColor:'#ffffff', show:{ case:true, shaft:true, motor:true, rails:true, slats:true, bottomBar:true, wall:false, slatRoll:true } },
|
||||
// Wall (벽체)
|
||||
wall: { wing:600, thick:600, topMargin:300, color:'#a1887f', opacity:30 },
|
||||
// View
|
||||
@@ -2436,12 +2436,14 @@ function createRailGroup() {
|
||||
meshes.slats.add(lineGroup);
|
||||
}
|
||||
|
||||
// === SLAT ROLL (샤프트에 감긴 슬랫 — 샤프트 전체에 두껍게 감기는 실린더) ===
|
||||
// === SLAT ROLL (샤프트에 감긴 슬랫 — 항상 최소 반 바퀴 감김 표시) ===
|
||||
const rolledH = H - shutterH;
|
||||
if (rolledH > 0) {
|
||||
{ // 스크린 100% 내려도 샤프트에 최소 감김량 표시 (물리적 연결)
|
||||
const minRollH = H * 0.08;
|
||||
const effectiveRolledH = Math.max(rolledH, minRollH);
|
||||
const wrapThick = S.productType === 'steel' ? 10 : 1;
|
||||
const shaftR = b.shaftDia / 2;
|
||||
const rollThick = Math.max(Math.sqrt(rolledH * wrapThick / Math.PI), 8);
|
||||
const rollThick = Math.max(Math.sqrt(effectiveRolledH * wrapThick / Math.PI), 8);
|
||||
const rollOuterR = shaftR + rollThick;
|
||||
const rollLen = W - 30 - stubPinVisible * 2; // 샤프트 관 길이에 맞춤
|
||||
|
||||
|
||||
Reference in New Issue
Block a user