# Guía técnica Resumen de las decisiones técnicas vigentes y de las reglas del código. El detalle y la fecha de cada decisión están en [decisiones.md](decisiones.md). ## Producto Aplicación de escritorio que reconstruye piezas mecánicas 3D a partir de planos de tres vistas y verifica el plano. Todo se procesa en el equipo del usuario: no hay servidor ni cuentas. ## Tecnologías | Tecnología | Uso | | --- | --- | | Python 3.12 | Todo el proyecto | | CadQuery (OpenCASCADE) | Sólidos 3D y exportación STEP/STL | | ezdxf | Lectura de DXF | | shapely | Geometría 2D de las vistas | | OR-Tools CP-SAT | Búsqueda de la pieza que reproduce el plano | | PySide6 y VTK | Interfaz y visor 3D | | SQLite | Historial local de conversiones | | PyInstaller | Instalador | | pytest | Pruebas automáticas | ## Alcance - Entradas: DXF (imprescindible), DWG mediante conversor externo, PDF vectorial (importante). - Geometría imprescindible: tres vistas, caras planas, chaflanes, agujeros pasantes y roscas (agujero más nota). - Geometría importante: agujeros ciegos, avellanados y cajeados; piezas de revolución. - Sistemas de proyección europeo (ISO-E) y americano (ISO-A); se avisa si un plano los mezcla. - Lo que no se soporta se detecta y se avisa. Nunca se entrega una pieza que no reproduce el plano sin advertirlo. ## Reglas del código - `motor/api.py` es el contrato entre motor y aplicación. La aplicación solo importa desde ahí, y cualquier cambio se acuerda entre los dos. - `motor/simulado.py` devuelve la pieza CUBE01 mientras el motor real no esté terminado. - `prototipo/reconstruir.py` es la prueba técnica original. Se conserva como referencia y no se modifica. - Cada pieza del catálogo tiene su carpeta en `pruebas/catalogo/` con `plano.dxf`, `esperado.step` e `info.md`. - Ramas, commits y revisiones según [CONTRIBUTING.md](../CONTRIBUTING.md).