Skip to main content
MediPro takes five user-entered measurements and derives all glass sizes, section heights, and transom dimensions from them automatically. Understanding these calculations helps you verify cut lists and catch entry errors before fabrication.

Input fields

FieldLabel in UIDefaultNotes
anchoAncho (cm)205Overall window width
altoAlto (cm)165Overall window height
altoPuentePuente (cm)130Bridge / lower section height
numCorredizasCorredizas1Sliding panels — min 1, max 3
numFijosFijos2Fixed panels — min 1, max 3
All five fields are bound via wire:model.blur, so calculations update when you leave the field. Changes are automatically persisted to the PHP session.

Width adjustment (anchoAjustado)

The total number of divisions (totalDivisions = numCorredizas + numFijos) determines whether a compensation offset is added to ancho before any widths are divided.
$anchoAjustado = match ($this->divisionesInferiores) {
    3 => $this->ancho + 1,
    5 => $this->ancho + 2,
    6 => $this->ancho + 3,
    default => $this->ancho,   // 2 or 4 divisions: no adjustment
};
Total divisionsAdjustmentExample (ancho = 205)
2+0205.0 cm
3+1206.0 cm
4+0205.0 cm
5+2207.0 cm
6+3208.0 cm
The offset compensates for the extra frame material introduced when more uprights are inserted between panels.
The window is divided into a lower section (infrared / main panels) and an optional upper transom (sobreluz).
$altoInf = $this->altoPuente;   // lower section = bridge height
$altoSup = max(0, $this->alto - $this->altoPuente - 2.1); // upper transom
The constant 2.1 cm ($sobreluz) accounts for the horizontal profile separating the two sections. The upper transom section is only rendered when altoSup > 0. If alto is close to or equal to altoPuente, no transom appears.
InputCalculationResult (defaults)
altoInfaltoPuente130.0 cm
altoSup165 − 130 − 2.132.9 cm
Each panel’s glass width is derived from anchoAjustado / totalDivisions with a type-specific offset:
$base = $anchoAjustado / $divisionesInferiores;

// Fixed panel glass width:   base + 0.6
// Sliding panel glass width: base - 0.6
The glass height uses a different offset per panel type:
// Fixed panel glass height:   altoPuente - 1.0
// Sliding panel glass height: altoPuente - 3.5
The larger deduction for sliding panels (3.5 cm vs 1.0 cm) accommodates the roller track at the bottom.
ConstantVariable nameValue
Glass ± offset$vidrio0.6 cm
Fixed height deduction$vfijo1.0 cm
Sliding height deduction$vcorrediza3.5 cm
When a transom exists (altoSup > 0), it is divided into 1, 2, or 3 equal panels depending on total divisions:
$c = $divisiones >= 5 ? 3 : ($divisiones >= 3 ? 2 : 1);
$a = $ancho / $c;  // uses raw $ancho, not anchoAjustado

// Each transom panel:
'ancho' => trunc($a) - 0.3,  // $sbancho = 0.3 cm deduction
'alto'  => trunc($altoSup),
Total divisionsTransom panels
1–21 (label: TL)
3–42 (labels: TL 1, TL 2)
5+3 (labels: TL 1, TL 2, TL 3)

Worked example

Inputs: Ancho = 205, Alto = 165, Puente = 130, 1 corrediza + 2 fijos (3 divisions total).
Derived valueFormulaResult
anchoAjustado205 + 1 (3 divisions)206.0 cm
altoInf130130.0 cm
altoSup165 − 130 − 2.132.9 cm
Width per division206 / 368.666… cm
Fixed glass width68.666 + 0.669.2 cm
Sliding glass width68.666 − 0.668.0 cm
Fixed glass height130 − 1.0129.0 cm
Sliding glass height130 − 3.5126.5 cm
Transom panel widthtrunc(205 / 2) − 0.3 = 102.5 − 0.3102.2 cm
Transom panel heighttrunc(32.9)32.9 cm
Transom count3 divisions → 2 panels2
All dimension values are truncated to one decimal place using PHP’s floor() — not rounded. A value of 68.66 becomes 68.6, not 68.7. Keep this in mind when cross-checking manual calculations.

Build docs developers (and LLMs) love