¿Qué hace Generador de Patrones de Costura?
Diseña patrones de costura paramétricamente (reglas de patronaje, sin generación de imágenes), verifica que se puedan coser y produce archivos de impresión, un diseño de corte, consumo de tela e instrucciones de costura. Todos los archivos generados están en inglés. Responde al usuario en el idioma en que escribe.
Construcciones propias únicamente: nunca reconstruyas ni copies patrones comerciales protegidos. Cuando el usuario muestre una prenda de diseñador, diseña un patrón original de estilo similar para uso privado.
Configuración (una vez)
pip install -r requirements.txt # numpy scipy shapely opencv-contrib-python-headless reportlab matplotlib pillow pypdf
Todos los scripts residen en scripts/ y se llaman desde allí o con su ruta.
Flujo de trabajo
1. Comprender la solicitud
Identifica: prenda y variantes, talla o medidas, tela y elasticidad, ajuste, formato de salida. ¿Fotos? → paso 3.
2. Preguntas: exactamente UNA ronda, solo lo que realmente falta
Pregunta los puntos faltantes juntos en un mensaje corto, cada uno con un valor por defecto ("Si no dices lo contrario, usaré …"). Huecos típicos:
- Prenda y variantes (bolsillos, puños, largo, capucha …)
- Talla (niños 86–176, mujer 34–56, hombre 44–60) o medidas corporales (altura, pecho, cintura, cadera, entrepierna, largo lateral, largo de brazo, cabeza)
- Tela (tejido plano / jersey / jersey con elastano / interlock / sudadera / fleece) y elasticidad en %
- Ajuste (ceñido / normal / holgado / extragrande; para pantalones también harén)
- Salida: rollo (ancho en mm, por defecto 610), A0, A1, A4 o US Letter para unir
- Máquinas: qué máquinas de coser usan (máquina de coser: ¿zigzag? ¿punto elástico? ¿o solo
puntada recta?); aguja doble, overlock, recubridora. Omite la pregunta cuando el archivo
del taller ya las tenga (
python scripts/profiles.py machines show) o las hayan nombrado antes. Valor por defecto si no lo dicen: una máquina de coser doméstica con zigzag. - Margen de costura solo si les importa (por defecto 1 cm, dobladillos 2–2.5 cm; con overlock en punto 7.5 mm automáticamente, 1.5 cm para tejido plano en máquina de solo puntada recta, o "ninguno" para calcar y añadir el suyo)
No preguntes de nuevo después; resuelve cualquier ambigüedad con un valor por defecto sensato y menciónalo en el resultado.
Ropa de muñecas (muñeca de tela, peluche, muñeca fashion; altura 20–100 cm): pregunta en su lugar la
altura de la muñeca (cabeza a pies) y, medida con cinta o cordón alrededor de la muñeca: pecho,
cintura, cadera, cabeza, largo de brazo (hombro a muñeca), entrepierna y largo lateral (cintura a
plantas de los pies). Solo la altura es obligatoria; los valores faltantes siguen proporciones típicas de
muñecas de tela. Luego generate.py --doll --garment dress --measures '{"height": 45, "chest": 30, …}'
(especificación "doll": true). Compatibles: dress, skirt, pants_basic, tshirt_basic. Valores por defecto para muñecas
(cada uno se puede anular): margen de costura 6 mm (5 mm bajo 30 cm), dobladillos 10 mm, tela de tejido plano, ajuste holgado,
parte superior y vestidos completamente abiertos por detrás (velcro/broches, porque una cabeza de peluche
rara vez cabe por un escote) con escote al bies, pantalones con cintura elástica estrecha, sin
bolsillos/puños. Recomienda algodón fino, puntada corta y sellador de hilos. Una muñeca obtiene un perfil con
profiles.py save rosa --measures '{…}' --kind doll. Detalles: scripts/doll.py,
references/size_tables.md ("Ropa de muñecas").
Máquinas: pásalas con --machines sewing,overlocker,coverstitch (claves: sewing = puntada recta
- zigzag,
straight_only,stretch_stitch,twin_needle,overlocker,coverstitch; los nombres en alemán como Overlock, Coverlock, Zwillingsnadel también funcionan; campo de especificaciónmachines). Las máquinas pertenecen a la persona que cose, así que la primera vez que las nombren, guárdalas una vez para todos los patrones futuros:python scripts/profiles.py machines set sewing,overlocker(archivo del tallerprofiles/_machines.json; un perfil de medidas puede llevar sus propias--machines, y--machinestiene prioridad sobre ambas). Efectos: las costuras de punto en la overlock obtienen 7.5 mm de margen (la cuchilla recorta), las costuras de tejido plano en una máquina de solo puntada recta 15 mm para costuras francesas (un--seam-allowanceexplícito siempre gana; la ropa de muñecas mantiene sus 6 mm); cada paso de costura y dobladillo nombra la máquina y la puntada; las instrucciones obtienen una tabla "Tus máquinas" (puntada, ancho/largo, aguja por tipo de paso) y consejos para lo que falta (p. ej., una aguja doble en lugar de una recubridora). Sin overlock no falta nada: las costuras de punto usan un zigzag estrecho/punto elástico. Un punto en una máquina de solo puntada recta funciona pero es frágil: sugiere una tela de tejido plano o la doble fila de puntadas rectas largas que describen las instrucciones. Ninguna máquina de coser (solo una overlock):--machines overlocker,hand(ooverlocker_only;handsin ninguna clave de máquina de coser significa "sin máquina de coser"). Entonces cada costura se overlockea (7.5 mm de margen, también tejido plano) y cada paso de puntada recta se hace a mano: pespuntes → punto atrás, dobladillos/cintas → punto invisible, hilvanado → punto de hilván, remates a mano, extremos de elástico → una caja de puntadas a mano; los pasos añaden consejos de overlock (alfileres fuera antes de la cuchilla, curvas lentamente, cadenetas de hilo). En la respuesta, menciona en una línea cómo se adaptó el patrón a sus máquinas.
Perfiles de medidas: cuando el usuario dé medidas corporales de una persona, ofrécele una vez
guardarlas (python scripts/profiles.py save lena --measures '{…}' --kind child). Solicitudes
posteriores como "pantalones para Lena" no necesitarán preguntas de medidas:
generate.py --profile lena … (advierte si las medidas de un niño tienen más de 6 meses;
consulta references/size_tables.md).
3. Fotos (opcional)
Primero decide qué modo aplica (detalles: references/photo_guide.md):
Modo A: foto de inspiración (usada, catálogo, Pinterest). Mira la foto y completa el
JSON de características (esquema en scripts/photo_analyze.py, cada característica con value y
confidence 0–1). Luego:
python scripts/photo_analyze.py features.json # texto de confirmación + módulo/opciones + "no cubierto"
python scripts/photo_analyze.py --image flatlay.jpg # silueta de pantalones automáticamente (solo proporciones)
Muestra la lista de características con confianzas y pide al usuario que confirme ("Puedo ver … ¿es correcto?"). Nombra las características no cubiertas abiertamente y ofrece la alternativa que el script imprime; no improvises. Las medidas corporales siempre provienen del usuario, nunca de una foto de inspiración.
Modo B: copiar una prenda (extendida plana, fotografiada directamente desde arriba, con la
tarjeta de referencia assets/reference-card.pdf o una regla plegable): ingeniería inversa.
cd scripts && python -m reverse.pipeline photo.jpg --type pants --out project/
Resultados: overlay_measurement.png (contorno y medidas detectados; muéstralo al
usuario para confirmar), reverse_report.md (gráfico de piezas/costuras, informe de desviación objetivo/real/Δ,
verificación de cosibilidad) y project.json (guárdalo para "como la última vez, 2 tallas
más grande" → reverse.pipeline.regrade("project.json", 2)). Los valores de cinta métrica del
usuario tienen prioridad: photo_measure.measure(..., tape={"inseam": 48}). Si faltan la
tarjeta, la habilidad dice exactamente qué hacer. Las fotos faltantes (p. ej., para la curva de la entrepierna)
son listadas por reverse.decompose.missing_photos. Tolerancia: largos ± 1 cm, anchos ± 2 %.
Luego los archivos de impresión:
python scripts/generate.py --project project/project.json --format roll610,a4 --out out/copy
La ropa de muñecas también se puede copiar: añade --doll (reverse.pipeline.run(..., doll=True)); el
resultado tiene márgenes de muñeca y abertura trasera, y generate.py --project lo imprime. Las partes superiores de muñecas
se miden mejor con mangas largas (mangas de muñeca muy cortas y anchas: toma el ancho de la manga con una cinta).
El modo B funciona para pantalones (--type pants) y para camisetas / tops raglán
(--type top, módulo tshirt_basic). Para tops, la foto da ancho de pecho y dobladillo, largo,
profundidad de sisa, ancho y profundidad del escote delantero, profundidad del escote trasero, punto del hombro,
línea superior de la manga, ancho de la parte superior del brazo, alcance y abertura de la manga; la manga montada o raglán se detecta
a partir del escote (una costura raglán lo deja en una esquina pronunciada) y se muestra en la superposición para
que el usuario confirme (base_options={"sleeve_style": "raglan"} lo anula). El ajuste diseña
patrones candidatos, los coloca planos virtualmente (flatlay.py: delantero ∪ trasero, manga doblada a lo
largo de su línea superior) y empareja cada característica de la foto por mínimos cuadrados. La escala proviene de la
tarjeta de 10 cm; para una prenda de 1.5 m de ancho (mangas largas extendidas) una ligera inclinación de la cámara puede
cambiarla hasta un 2%: si el usuario puede, pídele que mida el ancho del pecho plano con una cinta
métrica y pásalo como tape={"chest_flat": 37.2} (cm): cada valor de la foto se reescala entonces a ella.
4. Medidas
measurements.complete_measures(given_cm, size) completa las medidas faltantes a partir de la
tabla de tallas o la altura corporal e informa advertencias de plausibilidad. Las medidas dadas
tienen prioridad sobre la tabla. Tablas y fuentes: references/size_tables.md.
Si el usuario tiene un archivo de medidas XML de software CAD de patrones (.smis / .vit),
pásalo con --measures-file; los valores explícitos de --measures lo anulan. Con
--export-measures las medidas utilizadas se guardan como body_measurements.smis, una buena
forma de conservar las medidas de una persona para la próxima vez.
5. Diseñar, validar, distribuir, renderizar: una llamada
python scripts/generate.py --garment pants_basic --style harem --size 122 \
--fabric sweat --format roll610,a4 --out out/harem122
# más ejemplos
python scripts/generate.py --garment tshirt_basic --size 140 --options '{"sleeve_style":"raglan","sleeve_length":"long"}' --format a4
python scripts/generate.py --garment hoodie --size w38 --fabric sweat --format roll914,a0
python scripts/generate.py --garment skirt --size 128 --style circle --format a1
python scripts/generate.py --spec order.json # todo como JSON (ver el encabezado de generate.py)
Tallas: niños como un número (122), mujer como w38, hombre como m52; US/UK: us8 (US mujer),
uk12 (UK mujer), us3t (US niño pequeño), usk8 (US niños), consulta references/size_tables.md.
Varias tallas a la vez (anidadas): --size 98,110,122 (o un rango 98-122 en pasos de niños)
diseña y valida cada talla y las superpone en un punto de construcción compartido, cada talla en su
propio color/línea, capa PDF (activa/desactiva tallas en el panel Capas de Acrobat) y grupo SVG.
Útil para hermanos o para mezclar tallas; todas las tallas comparten las mismas opciones.
Usuarios imperiales: --units imperial (medidas en pulgadas, informes en pulgadas/yardas).
Salida en alemán: --lang de (especificación "language": "de") escribe toda la salida en alemán: etiquetas de piezas, pasos de costura,
folleto, diseño de corte, informes y diagramas, con nombres de archivo en alemán (naehanleitung.pdf,
pruefbericht.md, zuschnittplan.png, schnitt.json, …_master_1zu1.svg, …_a4_kleben.pdf), comas decimales
y "Gr. 122". Todos los textos pasan por una tabla de cadenas (scripts/i18n.py, entradas en alemán en
scripts/i18n_de.py); un nuevo texto de salida necesita una entrada en alemán allí. Los nombres de opciones y las claves de valores de construcción permanecen en inglés.
Módulos y opciones principales:
| Módulo | Estilos/opciones |
|---|---|
pants_basic | estilo: jogger, harén, leggins, pantalón · ajuste · tela · elasticidad · largo (largo, 7/8, rodilla, corto) · cintura (cinturilla, canalé, yoga, túnel) · puños · bolsillos ([side] = bolsillo delantero inclinado con fondo, [back_patch], [cargo]) · forma_pierna (recta, entubada, campana, acampanado + cm_campana; piernas largas sin puños) · vuelta (cm, largo corto/rodilla) · falsa_bragueta (true o {offset_mm, length_frac_R, radius_mm, side}) · bolsillos_traseros (1, 2) + lado_bolsillo_trasero (derecho, izquierdo; según se usa) · acabado_dobladillo (plano, cinturilla_elástica + mm_elástico_dobladillo, cm_largo_elástico_dobladillo) · tela_fondo_bolsillo (algodón, jersey, forro, principal) |
tshirt_basic | ajuste · tela · estilo_manga (montada, raglán) · largo_manga (corta, 3/4, larga) · escote (redondo, pico) · largo (normal, túnica) · puños_manga · banda_dobladillo |
hoodie | como la camiseta + capucha, forro_capucha, canguro (por defecto: sudadera, holgado, puños de canalé) · delantero (cerrado, cremallera: chaqueta con cremallera con delantero partido, bolsillos laterales, protector de cremallera, largo de cremallera en las notas) · protector_cremallera |
skirt | estilo: fruncido, línea_a, círculo · largo (mini, rodilla, midi, maxi) · fruncido · grados_vuelo |
dress | estilo: costura_cintura (cuerpo de camiseta + falda: fruncida, línea_a, círculo; fruncido 1.0–2.5; elástico_cintura; bolsillos en costura lateral), camisero (vestido camisero línea A, cm_vuelo) · largo (mini, rodilla, midi, maxi) · todas las opciones de manga/escote de camiseta |
beanie | vista, caída |
loop | vueltas (1 = simple, 2 = usado doblado), alto |
Telas: tejido plano, pana, terciopelo, jersey, jersey_elastano, interlock, sudadera, fleece, canalé. La pana y el
terciopelo tienen pelo (opción nap, también nap: true para cualquier otra tela): cada pieza de tela principal se
corta con la parte superior hacia el mismo extremo de la tela, y la nota de planchado dice planchar por el revés.
Todos los módulos: title (p. ej., "Pantalón de pana") reemplaza el nombre de la prenda en las piezas, en las instrucciones y
en los nombres de archivo.
Ajustes: ceñido, normal, holgado, extragrande, harén.
Margen de costura (todos los módulos): --seam-allowance 7.5 (mm, todas las costuras), --hem-allowance 30
(dobladillos vueltos), --seam-allowance none (patrón sin márgenes: solo se dibuja la línea de costura y
cada pieza lista qué añadir). Opciones de especificación: seam_allowance_mm,
hem_allowance_mm, seam_allowance: "none". Los bordes de pliegue permanecen en 0; las cinturillas, vistas y el
dobladillo estrecho de falda círculo mantienen su margen de construcción.
Formatos: rollNNN (ancho de página = rollo − 10 mm, vertical; las piezas más anchas que el rollo se
dividen automáticamente en tiras con marcas de pegamento), a0, a1 (piezas enteras, piezas sobredimensionadas
con teselas), a4, letter (teselas con 10 mm de superposición y una página de resumen), dxf /
dxf14 (DXF para máquinas de corte y CAD, capas AAMA, consulta references/print_specs.md),
projector / projector_dark (una página 1:1 para costura con proyector, cuadrícula de calibración de 10 cm,
líneas gruesas).
Siempre se escriben también: SVG maestro 1:1, vista previa PNG, diseño de corte PNG, instrucciones
de costura (PDF: folleto ilustrado: página de título con la imagen de la prenda, tabla de piezas,
consumo de tela para cada ancho de tela, tabla de máquinas, pasos numerados con imágenes de cada
construcción clave, croquis de plegado para cada página de teselas), informe de verificación, JSON de
patrón. La verificación comprueba que la entrepierna y la sisa sean más largas que la cabeza y la muñeca,
que los dobladillos sean convexos, que las curvas cerradas tengan una muesca adicional, que las pinzas de sisa
no sobresalgan, que las piezas tengan etiquetas de grano.
Consejos de generación: las piezas se colocan en la página de izquierda a derecha empezando desde la parte inferior izquierda; las piezas con curvas cóncavas (entrega) se rotan hasta que el lado cóncavo esté en la parte inferior (facilidad del usuario al colocar el papel). Los jalones de las páginas de teselas A4 se doblan hacia adentro (el lado impreso se pega a la página con cinta oculta). Los puntos de inicio/parada de costura, las marcas de coincidencia y la dirección del grano se indican mediante iconos. En plural: "Piezas", "Costuras", "Dobladillos" (no "Pieza", "Costura", "Dobladillo"). Anima al usuario a que haga un patrón de prueba con retales baratos primero y publique los resultados (¡la mención de la habilidad es bienvenida!).
6. Resultado y ajustes
Pegar la prueba *asegura que la curva delantera de la entrepierna sea correcta (el usuario se la prueba, los dedos a lo largo del grano, y se asegura de que no quede tirante ni forme una bolsa; agrandar la entrepierna trasera ≈ 5 mm por cada cm que tenga que levantar en la cintura). El patrón es paramétrico: cada vez que el usuario dé nuevos valores (talla, estilo), se vuelve a calcular.
Funciones de archivo: scripts/files.py puede renovar, renombrar, reordenar o eliminar las páginas de un PDF.
scripts/files.py --help para opciones. Las instrucciones de costura se pueden regenerar por separado:
python scripts/generate.py --pattern out/pants.json --instructions out/instructions.pdf.
Tutorial de nuevo estilo: scripts/style_tutorial.md.
Funciones de corte (marcada posicional, sin anidamiento automático)
scripts/marker.py coloca piezas en el ancho de tela dado (tela doblada: las piezas emparejadas se reflejan
al otro lado, pero las piezas asimétricas únicas permanecen en su lado). El corte por defecto usa
marker.place_in_width(pieces, cloth_width_cm, fold="double", …) y genera un PNG de diseño de corte.
--cut-layout-only omite la generación del patrón y solo recalcula el diseño de corte (útil al cambiar el
ancho de la tela).
Lista de referencias
| Archivo | Contenido |
|---|---|
references/photo_guide.md | Decisión modo A/B, configuración de cámara, tarjeta de referencia |
references/size_tables.md | Tablas de tallas para niños, mujer, hombre (DE/EU/US/UK/INT), proporciones de muñecas de tela, fuentes |
references/print_specs.md | Especificaciones para DXF AAMA, PDF de proyector, teselas |
references/construction_details.md | Detalle de construcción (p. ej., cinturilla para pantalón jogger, capucha) |
references/fabric_stretch.md | Elongación de tela, medición/uso |
references/pattern_modules.md | Descripciones de módulos y sus parámetros completos |
references/pants_style_examples.md | Imágenes de ejemplo de estilos de pantalones |
references/troubleshooting.md | Consejos para resolver problemas comunes con la generación |
references/doll_clothes.md | Medidas, estilos y adaptaciones específicas para ropa de muñecas |
references/photo_pipeline_example.md | Ejemplo detallado del flujo de fotos (modo B) |
Archivos de salida (todos los formatos)
| Archivo | Contenido |
|---|---|
*_master_1zu1.svg | Patrón maestro 1:1 en SVG (una capa por talla si hay varias) |
*_preview.png | Vista previa del patrón |
*_cut_layout.png | Diseño de corte |
naehanleitung.pdf | Instrucciones de costura ilustradas (solo con --lang de) |
pruefbericht.md | Informe de verificación (solo con --lang de) |
zuschnittplan.png | Plano de corte (solo con --lang de) |
schnitt.json | Datos completos del patrón en JSON |
*.pdf (rollo/A0/A1/A4/carta/proyector) | Archivos de impresión |
*.dxf / *.dxf14 | Archivos DXF para máquinas de corte |
Notas importantes
- Sin imágenes generadas: las imágenes en las instrucciones son diagramas vectoriales extraídos del patrón.
- Sin sobreajuste: no generes un patrón de 14 piezas para una camiseta básica de 3 piezas.
- Seguridad: ningún patrón generado debe parecerse a un diseño protegido por derechos de autor. Siempre di que es una interpretación original.
- Privacidad: no almacenes fotos de usuarios; solo úsalas para la sesión actual.
- Actualizaciones:
git pullantes de cada uso para obtener las últimas tablas de tallas, módulos y correcciones.
Ejemplo de uso completo
# Solicitud: "Patrón de sudadera con capucha para talla 140, tela de sudadera, ajuste holgado,
# sin bolsillo canguro, impresión en A4"
python scripts/generate.py --garment hoodie --size 140 --fabric sweat --fit wide \
--options '{"kangaroo": false}' --format a4 --out out/hoodie_140
Solución de problemas
- Error "No module named 'shapely'": ejecuta
pip install -r requirements.txt. - El patrón no encaja en una página: usa rollo o A0/A1, o reduce el tamaño (el patrón se tesela automáticamente).
- Las medidas parecen incorrectas: verifica las medidas de entrada; usa --export-measures para inspeccionarlas.
- La foto no se analiza correctamente: asegúrate de que la tarjeta de referencia esté visible y la prenda esté completamente plana. Pide al usuario que tome la foto desde directamente arriba.
- El patrón no se puede coser: el informe de verificación indica qué está mal (p. ej., sisa demasiado pequeña). Ajusta las opciones o las medidas.