Gerador de moldes de costura
Cria moldes de costura parametricamente (regras de modelagem, sem geração de imagens), verifica se podem ser costurados e produz arquivos de impressão, um layout de corte, consumo de tecido e instruções de costura. Todos os arquivos gerados estão em inglês. Responda ao usuário no idioma em que ele escreve.
Construções próprias apenas: nunca reconstrua ou copie padrões comerciais protegidos. Quando o usuário mostrar uma peça de designer, crie um molde original em um estilo semelhante para uso privado.
Configuração (uma vez)
pip install -r requirements.txt # numpy scipy shapely opencv-contrib-python-headless reportlab matplotlib pillow pypdf
Todos os scripts estão em scripts/ e são chamados a partir daí ou com seu caminho.
Fluxo de trabalho
1. Entender a solicitação
Identifique: peça e variantes, tamanho ou medidas, tecido e elasticidade, caimento, formato de saída. Fotos? → passo 3.
2. Perguntas: exatamente UMA rodada, apenas o que realmente está faltando
Pergunte sobre os pontos faltantes juntos em uma mensagem curta, cada um com um padrão ("Se você não disser o contrário, usarei …"). Lacunas típicas:
- Peça e variantes (bolsos, punhos, comprimento, capuz …)
- Tamanho (crianças 86–176, mulheres 34–56, homens 44–60) ou medidas corporais (altura, tórax, cintura, quadril, entrepernas, comprimento lateral, comprimento do braço, cabeça)
- Tecido (tecido plano / malha / malha com elastano / interlock / moletom / fleece) e elasticidade em %
- Caimento (justo / normal / amplo / oversized; para calças também harém)
- Saída: rolo (largura em mm, padrão 610), A0, A1, A4 ou Carta dos EUA para colar
- Máquinas: quais máquinas eles usam para costurar: máquina de costura reta (ziguezague? ponto elástico? ou apenas
ponto reto), agulha dupla, overloque/serger, interlock. Pule a pergunta quando o arquivo
de perfil já as tiver (
python scripts/profiles.py machines show) ou eles as nomearam antes. Padrão se eles não disserem: uma máquina de costura doméstica com ziguezague. - Margem de costura apenas se for importante para eles (padrão 1 cm, bainhas 2–2,5 cm; com uma overloque em malhas 7,5 mm automaticamente, 1,5 cm para tecido plano em uma máquina de ponto reto apenas, ou "nenhuma" para traçar e adicionar a sua própria)
Não pergunte novamente depois; resolva qualquer coisa incerta com um padrão sensato e diga isso no resultado.
Roupas para bonecas (boneca de pano, bichinho de pelúcia, boneca fashion; altura 20–100 cm): pergunte em vez disso pela
altura da boneca (cabeça aos pés) e, medido com uma fita métrica ou um barbante ao redor da boneca: tórax,
cintura, quadril, cabeça, comprimento do braço (ombro ao pulso), entrepernas e comprimento lateral (cintura às
solados). Apenas a altura é obrigatória; valores faltantes seguem proporções típicas de bonecas de pano. Então
generate.py --doll --garment dress --measures '{"height": 45, "chest": 30, …}'
(campo "doll": true). Suportados: dress, skirt, pants_basic, tshirt_basic. Padrões para bonecas
(cada um pode ser substituído): margem de costura 6 mm (5 mm abaixo de 30 cm), bainhas 10 mm, tecido plano, caimento
amplo, blusas e vestidos abertos completamente nas costas (Velcro/botões de pressão, porque uma cabeça recheada raramente
cabe em um decote) com decote viés, calças com cós de elástico estreito, sem
bolsos/punhos. Recomende algodão fino, ponto curto e selante de linha. Uma boneca ganha um perfil com
profiles.py save rosa --measures '{…}' --kind doll. Detalhes: scripts/doll.py,
references/size_tables.md ("Doll clothes").
Máquinas: passe-as com --machines sewing,overlocker,coverstitch (chaves: sewing = ponto reto
- ziguezague,
straight_only,stretch_stitch,twin_needle,overlocker,coverstitch; nomes em alemão como Overlock, Coverlock, Zwillingsnadel também funcionam; campomachines). As máquinas pertencem à pessoa que costura, então na primeira vez que elas forem nomeadas, salve-as uma vez para todos os moldes futuros:python scripts/profiles.py machines set sewing,overlocker(arquivo de perfilprofiles/_machines.json; um perfil de medidas pode carregar seu próprio--machines, e--machinestem precedência sobre ambos). Efeitos: costuras de malha na overloque ficam com 7,5 mm de margem (a faca aparae), costuras de tecido plano em uma máquina de ponto reto apenas 15 mm para costuras francesas (um--seam-allowanceexplícito sempre vence; roupas para bonecas mantêm seus 6 mm); cada passo de costura e bainha nomeia a máquina e o ponto; as instruções ganham uma tabela "Suas máquinas" (ponto, largura/comprimento, agulha por tipo de passo) e dicas para o que está faltando (por exemplo, uma agulha dupla em vez de uma interlock). Sem uma overloque nada está faltando: costuras de malha usam um ziguezague estreito/ponto elástico. Uma malha em uma máquina de ponto reto apenas funciona, mas é frágil: sugira um tecido plano ou a fileira dupla de pontos retos longos que as instruções descrevem. Nenhuma máquina de costura (apenas uma overloque):--machines overlocker,hand(ouoverlocker_only;handsem nenhuma chave de máquina de costura significa "nenhuma máquina de costura"). Então cada costura é overloqueada (7,5 mm de margem, tecido plano também) e cada passo de ponto reto é feito à mão: pesponto → ponto atrás, bainhas/cós → ponto invisível, alinhavo → ponto de alinhavo, caseados à mão, pontas de elástico → uma caixa de pontos à mão; os passos adicionam dicas para a overloque (alfinetes para fora antes da faca, curvas lentamente, trançados de linha). Na resposta, mencione em uma linha como o molde foi adaptado às máquinas deles.
Perfis de medidas: quando o usuário fornece medidas corporais para uma pessoa, ofereça uma vez para
salvá-las (python scripts/profiles.py save lena --measures '{…}' --kind child). Mais tarde,
solicitações como "calças para a Lena" não precisam de perguntas de medidas:
generate.py --profile lena … (avisa se as medidas de uma criança são mais antigas que 6 meses;
veja references/size_tables.md).
3. Fotos (opcional)
Primeiro decida qual modo se aplica (detalhes: references/photo_guide.md):
Modo A: foto de inspiração (usada, catálogo, Pinterest). Olhe para a foto e preencha
o JSON de características (esquema em scripts/photo_analyze.py, cada característica com value e
confidence 0–1). Então:
python scripts/photo_analyze.py features.json # texto de confirmação + módulo/opções + "não cobertas"
python scripts/photo_analyze.py --image flatlay.jpg # silhueta de calças automaticamente (apenas proporções)
Mostre a lista de características com confianças e peça ao usuário para confirmar ("Posso ver … está certo?"). Nomeie as características que não são cobertas abertamente e ofereça a alternativa que o script imprime; não improvise. As medidas corporais sempre vêm do usuário, nunca de uma foto de inspiração.
Modo B: copiar uma peça de roupa (colocada plana, fotografada diretamente de cima, com o
cartão de referência assets/reference-card.pdf ou uma régua articulada): engenharia reversa.
cd scripts && python -m reverse.pipeline photo.jpg --type pants --out project/
Resultados: overlay_measurement.png (contorno detectado e medidas; mostre-o ao
usuário para confirmar), reverse_report.md (gráfico de peças/costuras, relatório de desvio alvo/real/Δ
, verificação de costurabilidade) e project.json (mantenha-o para "como da última vez, 2 tamanhos
maior" → reverse.pipeline.regrade("project.json", 2)). Valores de fita métrica do usuário
têm precedência: photo_measure.measure(..., tape={"inseam": 48}). Se o cartão
estiver faltando, a skill diz exatamente o que fazer. Fotos faltantes (por exemplo, para a curva do
gancho) são listadas por reverse.decompose.missing_photos. Tolerância: comprimentos ± 1 cm, larguras ± 2 %.
Então os arquivos de impressão:
python scripts/generate.py --project project/project.json --format roll610,a4 --out out/copy
Roupas para bonecas também podem ser copiadas: adicione --doll (reverse.pipeline.run(..., doll=True)); o
resultado tem margens para bonecas e uma abertura nas costas, e generate.py --project imprime. Blusas para boneca
medem melhor com mangas compridas (mangas muito curtas e largas de boneca: meça a largura da manga com uma fita).
O Modo B funciona para calças (--type pants) e para camisetas / blusas raglan
(--type top, módulo tshirt_basic). Para blusas, a foto dá a largura do tórax e da bainha, comprimento,
profundidade da cava, decote frontal (largura e profundidade), profundidade do decote traseiro, o ponto do
ombro, a linha superior da manga, largura do braço, alcance da manga e abertura; manga embutida ou raglan é detectada
a partir do decote (uma costura raglan o deixa em um canto agudo) e mostrada na sobreposição para
o usuário confirmar (base_options={"sleeve_style": "raglan"} o substitui). O caimento cria
moldes candidatos, coloca-os planos virtualmente (flatlay.py: frente ∪ costas, manga dobrada ao
longo de sua linha superior) e combina cada característica da foto por mínimos quadrados. A escala vem do
cartão de 10 cm; para uma peça de 1,5 m de largura (mangas compridas estendidas) uma ligeira inclinação da câmera pode
deslocá-la em até 2 %: se o usuário puder, peça que meça a largura do tórax plana com uma fita
métrica e a passe como tape={"chest_flat": 37.2} (cm): cada valor da foto é então redimensionado para ela.
4. Medidas
measurements.complete_measures(given_cm, size) preenche as medidas faltantes da tabela
de tamanhos ou da altura do corpo e relata avisos de plausibilidade. As medidas fornecidas
têm precedência sobre a tabela. Tabelas e fontes: references/size_tables.md.
Se o usuário tiver um arquivo de medidas XML de software CAD de modelagem (.smis / .vit),
passe-o com --measures-file; valores explícitos de --measures o substituem. Com
--export-measures as medidas usadas são salvas como body_measurements.smis, uma boa
maneira de manter as medidas de uma pessoa para a próxima vez.
5. Modelar, validar, dispor, renderizar: uma chamada
python scripts/generate.py --garment pants_basic --style harem --size 122 \
--fabric sweat --format roll610,a4 --out out/harem122
# mais exemplos
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 # tudo como JSON (veja o cabeçalho de generate.py)
Tamanhos: crianças como um número (122), mulheres como w38, homens como m52; EUA/Reino Unido: us8 (mulheres EUA),
uk12 (mulheres Reino Unido), us3t (criança EUA), usk8 (crianças EUA), veja references/size_tables.md.
Vários tamanhos de uma vez (aninhados): --size 98,110,122 (ou um intervalo 98-122 em passos de crianças)
modela e valida cada tamanho e os sobrepõe em um ponto de construção compartilhado, cada tamanho em
sua própria cor/linha, camada PDF (ativar/desativar tamanhos no painel Camadas do Acrobat) e grupo SVG.
Use para irmãos ou para combinar entre tamanhos; todos os tamanhos compartilham as mesmas opções.
Usuários do sistema imperial: --units imperial (medidas em polegadas, relatórios em polegadas/jardas).
Saída em alemão: --lang de (campo "language": "de") escreve cada saída em alemão: etiquetas de peças, instruções de
costura, livreto, layout de corte, relatórios e diagramas, com nomes de arquivo em alemão (naehanleitung.pdf,
pruefbericht.md, zuschnittplan.png, schnitt.json, …_master_1zu1.svg, …_a4_kleben.pdf), vírgulas
decimais e "Gr. 122". Todos os textos passam por uma tabela de strings (scripts/i18n.py, entradas em alemão em
scripts/i18n_de.py); um novo texto de saída precisa de uma entrada em alemão lá. Nomes de opções e chaves de valor de construção
permanecem em inglês.
Módulos e principais opções:
| Módulo | Estilos/opções |
|---|---|
pants_basic | estilo: jogger, harém, leggings, calça social · caimento · tecido · elasticidade · comprimento (longo, 7/8, joelho, curto) · cós (viés, canelado, ioga, túnel) · punhos · bolsos ([side] = bolso frontal inclinado com saco de bolso, [back_patch], [cargo]) · formato_da_perna (reta, afunilada, boca de sino, flare + flare_cm; pernas longas sem punhos) · turn_up (cm, shorts/comprimento do joelho) · fake_fly (true ou {offset_mm, length_frac_R, radius_mm, side}) · bolsos_tras (1, 2) + lado_bolso_tras (direito, esquerdo; como usado) · acabamento_bainha (simples, cós_elástico + hem_elastic_mm, hem_elastic_len_cm) · tecido_saco_bolso (algodão, malha, forro, principal) |
tshirt_basic | caimento · tecido · estilo_manga (embutida, raglan) · comprimento_manga (curta, 3/4, longa) · decote (redondo, v) · comprimento (normal, túnica) · punhos_manga · barra_canelada |
hoodie | como a camiseta + capuz, forro_capuz, canguru (padrão: moletom, amplo, punhos canelados) · frente (fechada, zíper: jaqueta com zíper e frente dividida, bolsos laterais, proteção do zíper, comprimento do zíper nas notas) · proteção_zíper |
skirt | estilo: franzida, evasê, godê · comprimento (mini, joelho, midi, maxi) · franzido · flare_deg |
dress | estilo: costura_cintura (corpo de camiseta + saia: franzida, evasê, godê; franzido 1.0–2.5; elástico_cintura; bolsos na costura lateral), vestido_camisa (vestido camiseta evasê, flare_cm) · comprimento (mini, joelho, midi, maxi) · todas as opções de manga/decote de camiseta |
beanie | aba, frouxo |
loop | voltas (1 = única, 2 = usada dupla), altura |
Tecidos: tecido plano, veludo cotelê, veludo, malha, malha_elastano, interlock, moletom, fleece, canelado. Veludo cotelê e
veludo têm um pelo (opção nap, também nap: true para qualquer outro tecido): cada peça de tecido principal é
cortada com o topo voltado para a mesma extremidade do tecido, e a nota de prensagem diz para prensar do avesso.
Todos os módulos: title (por exemplo, "Kordhose") substitui o nome da peça nas peças, nas instruções e
nos nomes de arquivo.
Caimentos: justo, normal, amplo, oversized, harém.
Margem de costura (todos os módulos): --seam-allowance 7.5 (mm, todas as costuras), --hem-allowance 30
(bainhas dobradas), --seam-allowance none (molde sem margens: apenas a linha de costura é
desenhada e cada peça lista o que adicionar). Opções de especificação: seam_allowance_mm,
hem_allowance_mm, seam_allowance: "none". As bordas de dobra permanecem em 0; os cós, revestimentos e a
bainha estreita da saia godê mantêm sua margem de construção.
Formatos: rollNNN (largura da página = rolo − 10 mm, retrato; peças mais largas que o rolo são
divididas automaticamente em tiras com marcas de cola), a0, a1 (peças inteiras, peças superdimensionadas
lajeado), a4, letter (lajeados com sobreposição de 10 mm e uma página de visão geral), dxf /
dxf14 (DXF para máquinas de corte e CAD, camadas AAMA, veja references/print_specs.md),
projector / projector_dark (uma página 1:1 para costura com projetor, grade de calibração de 10 cm,
linhas grossas).
Sempre escrito também: SVG mestre 1:1, visualização PNG, layout de corte PNG, instruções de
costura (PDF: livreto ilustrado: página de título com a imagem final, materiais, tabela de peças, layout de corte,
folha de "dicas rápidas" (overloque vs. máquina de costura reta, agulha, conselhos de tecido, recursos), então
passo a passo com diagramas, gráfico de consumo de tecido e curvas de tamanho para
verificação). Outra saída: fabric_consumption.json (largura e consumo de tecido), costura "prévia"
sewability.json (todos os passes de costura, problema se esperado), ajuste
fitting.json (facilidade de usar, folga de design, comprimentos), tamanho
size_curves.json (todas as curvas de cada peça, 5 curvas de tamanho, para leitura e plotagem).
Verificações feitas antes da saída:
- Cada peça tem pelo menos 8 mm em todos os lugares
- Aberturas sem colisão
- Bainhas sobradas possíveis pelo tipo de tecido e máquina
- O zíper cabe no decote/abertura
- Cós de elástico: o elástico cabe ao redor do corpo
- As peças cabem no formato
Se uma verificação falhar, pare com uma mensagem de erro e uma sugestão.
6. Resultado
Responda com:
- Confirmação da solicitação (tamanho, caimento, tecido, máquinas, formato, diferenças entre as escolhas do usuário e os padrões usados)
- Arquivos (lista dos principais, inclua o preview e o layout de corte e links de download se o ambiente suportar)
- Amostra de tecido (sem gráfico, descrição macia / firme / grossa / fina / elástica / transparente / com aviso de tinta? que máquina?) e como reconhecer o lado direito – apenas se o tecido não foi especificado claramente
- Medidas finais (tórax, cintura, quadril, comprimento, altura de gancho, comprimento da costura interna,
altura do joelho, abertura da perna, bainha) – converta-as de volta para as unidades do usuário
com
units.convert(value, "cm", "imperial")e escreva cm ou polegadas + cm entre parênteses. Pule esta seção para roupas de boneca ou cópia de peças. - Dicas de costura (ajustes de molde, pontos de ajuste, dicas de overloque para tecidos complicados, entretela, fechos, dicas elásticas, etc.)
- Dica de cuidados (decodificação de etiqueta de cuidados "um círculo = secagem em tambor …" a partir de
references/care_labels.md– apenas se o usuário pedir ou se for um presente)
Scripts de referência
get_size.py: converte tamanho e opções parabody_measurements+ saída do módulodoll.py: gera medidas de boneca a partir de altura e proporçõesunits.py: polegadas ↔ cmprofiles.py: gerenciar perfis de medidas
Arquivos de referência
references/size_tables.md: definições de tamanho, fontes, tabelas de medidas de bonecareferences/photo_guide.md: lida com fotos de roupasreferences/print_specs.md: configuração de plotter, marcas de registro, sobreposiçãoreferences/care_labels.md: símbolos e texto da etiqueta de cuidados para 5 idiomasreferences/known_issues.md: problemas e soluções comunsassets/reference-card.pdf: cartão de calibração de 10 cm para impressão ea3