3.3 KiB
Prueba técnica: pieza plana por extrusión (plan B)
La viabilidad de la reconstrucción desde tres vistas ya la demostró
prototipo/reconstruir.py con CUBE01. Esta segunda prueba comprueba el plan B
acordado en las decisiones: si la reconstrucción completa no llega a tiempo, o el
plano tiene una sola vista, generar una pieza plana extruyendo su contorno con un
espesor.
También sirve para probar la lectura de contornos cerrados y agujeros con ezdxf y la exportación a STEP y STL con CadQuery, que se reutilizan en el motor.
Los scripts están en prototipo/lizette/.
1. Objetivo
- Comprobar que ezdxf lee bien las polilíneas cerradas y los círculos.
- Comprobar que CadQuery genera el sólido por extrusión y resta los agujeros.
- Comprobar que el STEP y el STL generados se abren bien en un programa CAD.
2. Alcance
Es un script independiente: no usa la API ni la base de datos, ni motor/api.py. Admite polilíneas cerradas
y círculos. El contorno de mayor área se toma como exterior y el resto se restan
como agujeros.
Quedan fuera, y se resolverán en motor/pieza_plana.py:
- Los arcos dentro de las polilíneas (bulge).
- Unir líneas y arcos sueltos en contornos cerrados.
- Comprobar que los agujeros están dentro del contorno exterior.
- Las unidades.
3. Pieza de prueba
Una placa rectangular de 100 × 60 mm con dos taladros de Ø20 mm, generada con
prototipo/lizette/pieza_prueba.py.
[ Captura de placa.dxf abierto en LibreCAD o AutoCAD ]
Figura 1. Plano 2D de entrada
4. Ejecución
En local, con el entorno del proyecto (uv sync):
cd prototipo/lizette
uv run python pieza_prueba.py
uv run python conversion.py placa.dxf 10
O dentro del contenedor del backend, sin instalar nada en el equipo:
docker compose run --rm -w /app/prototipo/lizette pruebas python pieza_prueba.py
docker compose run --rm -w /app/prototipo/lizette pruebas python conversion.py placa.dxf 10
conversion.py recibe el DXF y el espesor en mm, y genera resultado.step y
resultado.stl.
[ Captura de la terminal con la salida del script ]
Figura 2. Ejecución de la prueba
5. Resultado
[ Captura de resultado.step abierto en FreeCAD o Fusion 360 ]
Figura 3. Placa de 10 mm de espesor con dos taladros
Volumen esperado: 100 × 60 × 10 − 2 × π × 10² × 10 ≈ 53 717 mm³. Se puede
comprobar en FreeCAD o con solido.val().Volume().
6. Conclusiones
[ Completar tras ejecutar: ¿se ha generado bien?, ¿coincide el volumen?, ¿cuánto ha tardado?, ¿algún problema? ]
Siguientes pasos para llevarlo al motor (motor/pieza_plana.py):
- Leer los arcos de las polilíneas (bulge) y unir líneas y arcos sueltos en contornos (con shapely).
- Comprobar que cada agujero está dentro del contorno exterior y avisar si no.
- Convertir las unidades a mm.
- Devolver un
Resultadodel contrato, con el avisoSIN_PERFIL_CERRADOen lugar de una excepción. - Añadir la placa al catálogo (
pruebas/catalogo/PLACA01/) con su prueba automática. - Probar la conversión completa desde la API: subir
placa.dxfen Swagger (/docs), consultar el estado y descargar el STEP.
[ Captura de Swagger UI (http://localhost:8000/docs) con los endpoints ]
Figura 4. Endpoints de la API en Swagger