Mini-Projecto · Rotina de desenho automático para uma família de suportes
Contexto
A Metalfix, oficina metalomecânica que fabrica suportes e estruturas para mobiliário técnico, produz uma família de suportes circulares que variam apenas no número de furos de fixação e no diâmetro do círculo de furação. Hoje, cada suporte é desenhado à mão no CAD, furo a furo, e a lista de corte dos perfis da estrutura é feita "a olho".
Foste contratado/a para desenvolver, para esta família de peças, uma rotina de desenho automático completa: desde a análise dos requisitos até à transferência de dados entre o CAD e o ficheiro de orçamentação. Entregas o fluxograma, o protótipo executável da lógica (em Python, com o pseudocódigo VBA da parte que depende da API do CAD claramente identificado), e um pequeno dossiê com os resultados testados.
Requisitos
Funcionais
- Fluxograma completo da rotina, incluindo o(s) caso(s) limite.
- Função parametrizada que calcule as coordenadas de N furos distribuídos num círculo de fixação de diâmetro D, para pelo menos 3 variantes da família (números de furos e diâmetros diferentes).
- Algoritmo de otimização de corte dos perfis da estrutura de cada suporte, comparando a ordem de chegada das peças com uma ordem otimizada, com o número de barras e a poupança percentual calculados a partir da execução do código.
- Rotina de verificação automática de regras de desenho (espessura mínima e distância mínima de um furo à borda), com uma lista de peças de teste que inclua pelo menos um caso não conforme.
- Rotina de exportação da lista de materiais (BOM) para CSV, e de importação de volta, com verificação de que os dados não se alteram na viagem de ida e volta.
- Pseudocódigo VBA que identifique, claramente separadas, a lógica de cálculo (testável sem CAD) e as chamadas à API do CAD (
ThisDrawing,AddCircle, ou equivalentes).
Não-funcionais
- Todo o código Python entregue tem de correr sem erros e incluir pelo menos um
assertpor função que teste um caso limite (lista vazia, um só elemento, valor impossível). - Comentários e docstrings que expliquem o que cada função otimiza, sob que restrição, e como se sabe que o resultado é melhor.
- Nenhuma rotina aplicada diretamente ao ficheiro final sem, antes, ser validada numa peça de teste isolada.
Fases
Fase 1 · Análise de requisitos e fluxograma (1h) Levantar as variantes da família de suportes e desenhar o fluxograma da rotina completa, com os casos limite assinalados.
Fase 2 · Variáveis e rotina de furação (2h) Escolher os tipos de variáveis VBA adequados e implementar (em Python) a função de furos em círculo, testada nas 3 variantes.
Fase 3 · Algoritmo de otimização de corte (2h) Implementar o algoritmo de corte, correr com a ordem de chegada e com a ordem otimizada, e calcular a poupança real.
Fase 4 · Interfaces VBA com CAD e Excel (1h) Escrever o pseudocódigo VBA das chamadas à API, separado da lógica já testada nas fases anteriores.
Fase 5 · Exportação e importação da BOM (2h) Implementar a exportação para CSV e a importação de volta, com verificação de que os totais batem certo.
Fase 6 · Verificação de regras e casos limite (1h)
Implementar a verificação automática de regras de desenho e rever todos os assert de casos limite do projeto.
Fase 7 · Apresentação (1h) Apresentar o fluxograma, correr a rotina ao vivo, e justificar as escolhas de tipos de variáveis e da estratégia de otimização.
Critérios de avaliação
| Critério | Peso |
|---|---|
| Fluxograma e análise de requisitos | 15% |
| Rotina de furação parametrizada, testada nas 3 variantes | 20% |
| Algoritmo de otimização de corte, comparado e com poupança real calculada | 25% |
| Exportação e importação da BOM, com verificação de dados | 20% |
| Verificação de regras de desenho e casos limite testados | 10% |
| Documentação e apresentação | 10% |
Erros comuns
- Desenhar a rotina de furação sem testar as 3 variantes, só a que "parece" funcionar.
- Comparar as duas ordens do algoritmo de corte com dados de entrada diferentes, o que invalida a comparação de poupança.
- Escrever a chamada à API do CAD misturada com o cálculo, tornando a lógica impossível de testar sem abrir o CAD.
- Exportar a BOM sem depois a importar de volta, o que não prova que os dados sobrevivem à transferência.
- Esquecer o caso limite de uma peça mais comprida do que a barra de stock, na rotina de corte.
- Aplicar a rotina de furação diretamente à peça final da série, sem a validar primeiro numa peça de teste.
Bónus (opcional)
- Acrescentar uma quarta variante da família de suportes e confirmar que a rotina de furação continua correta sem alterações.
- Medir a poupança da otimização de corte para uma lista de perfis maior (mais do que 12 peças) e comparar com o caso do projeto.
- Gerar automaticamente, a partir da BOM importada, um relatório de custo total por suporte.
Reflexão
No dossiê final, responde: porque é que a poupança de 33,3% na otimização de corte veio só de mudar a ordem das peças, sem alterar o algoritmo? E que passo de segurança aplicaste antes de considerar a rotina pronta para correr sobre uma série real de suportes?