Dibujos técnicos
Los dibujos se generan, no se dibujan a mano: un modelo paramétrico build123d (o un archivo STEP) es la fuente única de verdad; scripts/drawlib.py deriva las vistas a partir de él (eliminación de líneas ocultas, seccionado, sombreado) y añade las anotaciones que un taller necesita. Cada guardado ejecuta una verificación automática de la lámina. El resultado es un PDF vectorial por lámina (opcionalmente DXF/SVG) más una previsualización PNG que debes revisar antes de considerar algo terminado.
Por qué esta vía: las vistas nunca pueden discrepar del modelo, un parámetro modificado regenera cada lámina y el mismo modelo proporciona archivos STEP y una comprobación de interferencias de forma gratuita.
Lo que debe lograr un buen dibujo
Un dibujo es un contrato con la persona que fabrica e inspecciona la pieza. Alguien que nunca haya visto el proyecto debe poder fabricarla solo con la lámina. Eso lo decide todo a continuación: acota lo que la función necesita, tolera solo lo que importa y explica cómo debe ser cada superficie funcional. Una lámina con cada borde acotado pero sin ajustes, rugosidad ni tolerancias geométricas no es fabricable en el sentido que entienden los examinadores y los talleres.
Elige la ruta
- El usuario tiene un archivo STEP y quiere un dibujo rápido: ejecuta
python scripts/step2drawing.py part.step [--section] [--lang en --projection third] [--units in] [--material ...] [--density ...] [--dxf]. Proporciona vistas, líneas ocultas, líneas de centro, dimensiones generales, bloque de título y la verificación. Luego indica claramente que aún deben añadirse las dimensiones funcionales, ajustes, tolerancias y textura superficial, y ofrece añadirlos:auto_drawing()en el mismo módulo devuelve(sheet, views, issues)conout=None, por lo que puedes seguir anotando la lámina en Python (--up ypara exportaciones con Y hacia arriba). - Cualquier cosa que deba fabricarse a partir de: modela la(s) pieza(s) y escribe la lámina en Python (flujo de trabajo a continuación). La entrada STEP aún puede ser el modelo:
D.load_step(path).
Flujo de trabajo
- Aclarar primero la función. Para cada pieza pregunta: ¿qué superficies acoplan con qué, qué debe ser coaxial/perpendicular/plano para que la máquina funcione, qué dimensiones provienen de piezas compradas (rodamientos, pasadores, tornillos)? Estos se convierten en referencias, ajustes y tolerancias. Si el usuario tiene un informe, lista de materiales o dibujo anterior, léelo y conserva sus números; marca cada valor que inventes como tu suposición e informa al usuario. Pregunta en qué idioma y método de proyección debe estar el dibujo (por defecto: alemán, primer ángulo; Norteamérica: inglés, tercer ángulo) y si hay un bloque de título de empresa.
- Modelar las piezas en un módulo, cada pieza en su posición de fabricación, todas las dimensiones como parámetros con nombre. Piezas torneadas: revolve un semiperfil
(x, r); piezas prismáticas: cajas menos sólidos de taladro, o extrusión de un perfil (sin costuras fusionadas). Modela las roscas solo como agujeros de núcleo. Coloca las piezas compradas/estándar como sólidos simples para que el ensamblaje y la comprobación de interferencias estén completos. - Verificar el ensamblaje antes de dibujar: volumen
(a & b).volumepor pares sobre todas las piezas; cada superposición debe ser cero o intencionada (enganche de rosca, ajuste a presión). Corrige el modelo, no el dibujo. - Escribir una función por lámina, copiando el ejemplo más cercano en
examples/:flanged_bush.py(pieza torneada, plantilla básica),bearing_bracket.py(ensamblaje, lista de piezas),stepped_shaft.py(vista rota, detalle, sección suprimida, rosca),flange.py(semisección, círculo de paso, tolerancia de posición),spur_gear.py(tabla de datos de engranaje),weldment.py(símbolos de soldadura),milled_block.py(inglés, tercer ángulo, bloque de título de empresa). Empieza solo con geometría, renderiza, mira, luego añade anotaciones en capas: líneas de centro -> dimensiones -> referencias y tolerancias -> textura superficial -> notas, tablas -> bloque de título. - Renderizar, leer la verificación, mirar cada lámina.
Sheet.save(pdf, png=...)imprime el informe de verificación y escribe<png>_check.pngcon cada hallazgo enmarcado. Corrige cada error y advertencia (mueve la anotación, cambia desplazamientos,tshift,tpos, rodillas de las líneas guía). Luego lee el PNG tú mismo: la verificación encuentra colisiones e incoherencias, no un concepto de acotación incorrecto o una flecha apuntando al borde equivocado. Recorta regiones densas para ampliar. Nunca informes una lámina como terminada que no hayas visto. - Entregar: un PDF por lámina nombrado por número de dibujo, un conjunto fusionado (pypdf
PdfWriter.append), DXF si el usuario edita en CAD, STEP por pieza y para el ensamblaje (export_step). Indica claramente qué no está dibujado aún y qué valores son suposiciones.
Configuración única por máquina: pip install -r requirements.txt. La fuente ISO 3098 osifont no está incluida; se encuentra en $DRAWLIB_FONT, scripts/fonts/, ~/.drawlib/fonts/ o en las fuentes del sistema (ver scripts/fonts/README.md). Sin ella, la biblioteca usa DejaVu Sans: misma geometría, rotulación no ISO 3098; la verificación mide la fuente que esté activa.
Uso de drawlib
Lee references/drawlib_api.md antes de escribir la primera lámina: cada llamada con sus convenciones de coordenadas, recetas y errores comunes. Los esenciales:
- `S = D.Sheet(