BC3 PHP
BC3 Viewer es una aplicación web que permite visualizar archivos en formato BC3 (estándar FIEBDC-3 utilizado en España para el intercambio de presupuestos de construcción). La aplicación muestra una vista jerárquica del presupuesto con capítulos, subcapítulos, partidas y líneas de medición.

Si trabajas en el sector de la arquitectura o la construcción en España, el formato BC3 te resultará familiar. Es el estándar FIEBDC-3 que se usa para intercambiar presupuestos entre programas como Presto, Arquímedes o Cost-it. El problema: abrir esos archivos sin el software propietario es prácticamente imposible. Por eso construí BC3 Viewer.
¿Qué es el formato BC3?
El formato BC3 (FIEBDC-3) es un estándar abierto español para el intercambio de bases de datos de construcción. Un archivo .bc3 es, en esencia, un fichero de texto plano con registros delimitados por ~ y campos separados por |. Cada tipo de registro tiene su función:
~V— Metadatos del archivo: versión, codificación, propietario~C— Conceptos: capítulos, subcapítulos, partidas y unidades de obra~D— Descomposición: relaciones padre-hijo entre conceptos~T— Textos descriptivos de cada partida~M— Mediciones detalladas con largo, ancho, alto y parciales
La estructura es jerárquica: un presupuesto tiene capítulos, que contienen subcapítulos, que agrupan partidas, que a su vez se descomponen en unidades de obra con sus mediciones.
El problema que resuelve
Los archivos BC3 son intercambiables en teoría, pero en la práctica solo los abres con software de presupuestación de pago. Si recibes un BC3 de un cliente, de una administración pública o de un colaborador y no tienes el programa instalado, no puedes ver nada.
BC3 Viewer lo resuelve: subes el archivo, lo procesas y obtienes una vista jerárquica navegable en el navegador. Sin instalar nada. Sin licencias.
Stack tecnológico
Opté deliberadamente por cero dependencias:
- PHP — para parsear el archivo en el servidor y devolver JSON
- JavaScript vanilla — para renderizar el árbol y gestionar la interacción
- HTML5 + CSS3 — interfaz limpia con variables CSS y diseño responsivo
- Google Fonts (Inter) — la única dependencia externa, solo para la tipografía
Sin frameworks, sin bundlers, sin node_modules. Cualquier servidor con PHP 7.4+ y la extensión mbstring lo ejecuta.
Cómo funciona el parser
El corazón del proyecto es BC3Parser.php. El mayor reto no fue parsear la estructura, sino la codificación de caracteres.
Los archivos BC3 pueden venir en ANSI (Windows-1252), ISO-8859-1, DOS (CP437) o UTF-8, y no siempre coincide lo que declara el campo ~V con la codificación real del fichero. El parser sigue esta lógica de prioridad:
// Primero comprueba si ya es UTF-8 válido
if (mb_check_encoding($content, 'UTF-8')) {
$encoding = 'UTF-8';
} else {
// Si no, lee el campo de codificación del registro ~V
$encoding = 'ISO-8859-1'; // fallback
if (preg_match('/~V\|[^|]*\|[^|]*\|[^|]*\|[^|]*\|([^|]*)\|/', $content, $matches)) {
$declaredEncoding = strtoupper(trim($matches[1]));
// ANSI → Windows-1252, IBMPC/DOS → CP437, ISO → ISO-8859-1
}
}