feat: Wall mounting system with Sparingsmaat logic and reveal surfaces
Phase 1 (Logic): Add Dutch mounting constants to door-models.ts - STELRUIMTE=10mm (tolerance), HANGNAAD=3mm (gap per side) - WALL_THICKNESS=150mm (standard interior wall) - calculateMountingDimensions() derives frame/leaf from sparingsmaat Phase 2 (Visual): Replace LivingRoom with WallContainer in scene.tsx - 4-box wall construction with precise rectangular hole - Hole = doorLeafWidth + STELRUIMTE (visible 5mm gap per side) - Door sits INSIDE the wall, not in front of it Phase 3 (Detail): Reveal surfaces and door-type positioning - Plaster/stucco material on reveal edges (inner hole surfaces) - Taats: door centered in wall depth (pivot at center) - Scharnier/Paneel: offset toward front face - Dedicated fill light illuminating reveal depth - Baseboard (plint) on both sides of opening Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,39 @@ export const RAIL_HEIGHT_ROBUST = 40; // mm - Standard robust rails (same as pro
|
||||
*/
|
||||
export const TAATS_PIVOT_OFFSET = 60; // mm - Pivot axis offset from wall for Taats doors
|
||||
|
||||
/**
|
||||
* Wall Mounting Dimensions (Sparingsmaat / Deurmaat)
|
||||
* Dutch building standard: Sparingsmaat = rough wall opening
|
||||
*/
|
||||
export const STELRUIMTE = 10; // mm - Total tolerance between wall and frame (5mm per side)
|
||||
export const HANGNAAD = 3; // mm - Gap between frame and door leaf per side
|
||||
export const WALL_THICKNESS = 150; // mm - Standard interior wall thickness
|
||||
|
||||
/**
|
||||
* Calculate mounting dimensions from Sparingsmaat (wall opening).
|
||||
*
|
||||
* Sparingsmaat (input) -> Frame -> Door Leaf
|
||||
* Frame = Sparingsmaat - STELRUIMTE (10mm tolerance)
|
||||
* DoorLeaf = Frame - 2*PROFILE_WIDTH - 2*HANGNAAD (6mm gap)
|
||||
*/
|
||||
export function calculateMountingDimensions(sparingsmaatWidth: number, sparingsmaatHeight: number) {
|
||||
const frameOuterWidth = sparingsmaatWidth - STELRUIMTE;
|
||||
const frameOuterHeight = sparingsmaatHeight - STELRUIMTE / 2; // 5mm top tolerance only
|
||||
const doorLeafWidth = frameOuterWidth - (2 * HANGNAAD);
|
||||
const doorLeafHeight = frameOuterHeight - (2 * HANGNAAD);
|
||||
|
||||
return {
|
||||
sparingsmaatWidth,
|
||||
sparingsmaatHeight,
|
||||
frameOuterWidth,
|
||||
frameOuterHeight,
|
||||
doorLeafWidth,
|
||||
doorLeafHeight,
|
||||
stelruimtePerSide: STELRUIMTE / 2, // 5mm gap visible on each side
|
||||
hangnaadPerSide: HANGNAAD, // 3mm gap between frame and leaf
|
||||
};
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// PHYSICAL PART TYPES
|
||||
// ============================================
|
||||
|
||||
Reference in New Issue
Block a user