Un CAD B-Rep en el navegador: OpenCascade, WASM y dos WebWorkers
Cómo KapyCAD corre un kernel de CAD "de verdad" dentro de una pestaña, sin bloquear la interfaz.

"Un CAD paramétrico en el navegador" suena a maqueta: un visor bonito con cuatro operaciones de adorno. KapyCAD no es eso. Por debajo corre un kernel de CAD de los de verdad, el mismo tipo de motor que usan los programas de escritorio, y lo hace dentro de una pestaña. Aquí te cuento cómo encaja la pieza técnica.
Un kernel de CAD en una pestaña
La geometría de KapyCAD es B-Rep (boundary representation): la pieza se describe por sus caras, aristas y vértices exactos —las ecuaciones de cada superficie—, no como una malla de triángulos. Es la diferencia entre saber que un agujero es "un cilindro de radio 5" y tener un montón de caras planas que se le parecen. El B-Rep es lo que permite redondear una arista concreta, exportar a STEP o medir una distancia real.
Ese motor es OpenCascade (OCCT), un kernel maduro de CAD escrito en C++.
Lo compilamos a WebAssembly (WASM) —un formato que el navegador ejecuta a
velocidad casi nativa— a través de opencascade.js. Resultado: el mismo cálculo
de geometría exacta que correría en tu escritorio corre en tu navegador, en tu
máquina, sin enviar nada a un servidor.
Dos workers, una conversación
Hay un problema: ese cálculo pesa. Una booleana o un fillet pueden tardar, y si los ejecutas en el hilo principal —el que dibuja la interfaz— la pantalla se congela mientras tanto. La regla de oro en la web es no bloquear ese hilo.
La solución son los WebWorkers: hilos en segundo plano donde mover el trabajo pesado. KapyCAD usa dos, y el hilo principal habla con ellos a través de Comlink, una librería que hace que llamar a un worker se sienta como llamar a una función normal (por debajo es paso de mensajes, pero no lo notas).
Qué corre en cada worker
Cada worker tiene un trabajo claro, y eso mantiene el sistema ordenado:
| Worker | De qué se encarga |
|---|---|
| Worker OCCT | B-Rep con opencascade.js: extrusión, revolución, booleanas, fillets, STEP |
| (dentro del OCCT) | manifold-3d para booleanas de malla rápidas al exportar a STL |
| Worker del solver | Restricciones 2D de croquis con planegcs (lo vemos en otro post) |
Mantener el solver de croquis en su propio worker tiene una ventaja extra: resolver un croquis y recalcular el sólido son dos cargas distintas que no se pisan entre sí.
Por qué importa
Que el kernel viva en el navegador no es un truco de demo, es lo que hace posible la experiencia:
- Abres un enlace y ya estás diseñando. Nada que instalar ni que actualizar.
- Tu trabajo no sale de tu máquina para calcular geometría.
- La interfaz no se congela, porque lo pesado ocurre fuera del hilo principal.
En los próximos posts entramos en los dos cerebros de este sistema por separado: el solver de restricciones que resuelve tus croquis y cómo mantenemos vivas las referencias a caras y aristas cuando el modelo se regenera.
Escrito por
Sergio
Building Kapy CAD — parametric 3D modelling for 3D printing, in the browser.

