4 Commits

Author SHA1 Message Date
alro65 588735ea64 Wizard: reduce default control mesh to 7x5 (DELFTship philosophy)
Prior defaults (21 stations x 11 waterlines = 231 nodes) made it
impossible to edit a hull fairly — too many degrees of freedom with
no locality.

DELFTship principle: start with the minimum viable mesh so each node
acts as a true Bezier handle with global influence, then refine only
where needed.

New defaults: 7 stations x 5 waterlines = 35 nodes
  - 7 stations: AP + 5 intermediate + FP (clear midship at index 3)
  - 5 waterlines: keel + 25% + 50% + 75% + design WL
  - 5 points per section = cubic B-spline ≈ one Bezier handle per quadrant

Range changes:
  - Stations: 7-81 -> 4-30 (step 1, was 2)
  - Waterlines: 5-31 -> 3-12 (step 1, was 2)

New UI elements:
  - Group renamed "Malla de control (puntos Bézier)"
  - Italic hint explaining the fewer-is-better philosophy
  - Live counter "Total nodos: N (manejable / moderado / difícil)"
    with color feedback: green ≤50, amber ≤120, red >120

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 21:08:07 -04:00
alro65 652fdca358 Fix wizard: step bar text clipped + black background in content area
_StepBar:
- setFixedHeight(40→54) — label text (cy+r+4=34, h=16) ya no se recorta
- cy fijado a 20 en lugar de h//2 para dejar margen inferior al texto
- drawText rect ampliado a 112×16 para labels más largos (esp. "Refinamiento")
- setStyleSheet background:_PANEL para que coincida con el header

NewShipWizard content area:
- QStackedWidget: stylesheet "background:_BG" para el widget contenedor
- Cada página de paso: autoFillBackground=True + palette Window→_BG
  (palette en vez de setStyleSheet evita que el fondo cascadee a los
  hijos QDoubleSpinBox/QLineEdit que tienen sus propios estilos inline)
- QPalette añadido al import de PySide6.QtGui

282 tests, 0 fallos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 13:18:33 -04:00
alro65 002c00aff3 feat(sprint2): wizard 'Nuevo Proyecto' + 5 generadores paramétricos de casco
Generadores paramétricos (arshipdesign/parametric/):
  - wizard_planing.py    → V-fondo, chine dura, deadrise variable AP→FP
  - wizard_cruiser.py    → Carena redonda, plan form Lackenby, Cm ajustable
  - wizard_workboat.py   → Sección cajón, pantoque duro, fondo plano
  - wizard_sailing_mono.py → Velero fin keel, sección fina, LCB a popa
  - series60.py          → Serie 60 / mercante full, Cm ~ 0.96
  - __init__.py          → API unificada generate_hull(family, lpp, beam, draft)
                           + HullFamily enum con labels, rangos Cb, descripciones

Wizard UI (arshipdesign/ui/dialogs/wizards.py):
  - NewShipWizard: QDialog 4 pasos con barra de progreso animada
  - _StepDimensions:  nombre, Lpp, B, puntal, calado + ratios L/B y B/T en vivo
  - _StepFamily:      6 FamilyCard con HullThumbnail QPainter (sección maestra)
  - _StepRefine:      sliders Cb y LCB, spinboxes discretización
  - _StepPreview:     tabla hidrostáticos completa (V, D, Cb, LCB, KB, Awp...)
  - Al aceptar → Hull cargado en visor 3D del viewport Perspectiva

MainWindow:
  - _on_new_project() abre NewShipWizard (antes creaba proyecto vacío)
  - Tras accept(): carga hull en Viewer3DWidget si disponible

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-27 07:52:46 -04:00
alro65 0dbc2a4518 v0.1-sprint0: Esqueleto completo AR-ShipDesign
- Estructura completa de carpetas (236 módulos stub + implementados)
- pyproject.toml, requirements, .gitignore, LICENSE (propietario)
- core/project.py: serialización .arsd (ZIP con JSON)
- core/units.py: conversiones SI <-> imperial completas
- ui/main_window.py: layout DELFTship-style con todos los paneles
  - Árbol de proyecto (dock izquierda)
  - Tabs de módulos (centro)
  - Panel de propiedades (dock derecha)
  - Panel hidrostáticos en vivo (inferior, fijo)
- ui/i18n: español e inglés
- ui/themes: tema claro y oscuro
- utils/logger.py, settings.py, validation.py
- data/liquids.json: 15 líquidos navales
- data/stability_criteria.json: IMO IS Code 2008, A.749(18), USCG
- tests/test_startup.py: 12 tests, todos PASSED
- Módulo scantling/ ISO 12215 (stubs Sprint 2.5)
- Módulo fabrication/molds/ para moldes FRP (stubs Sprint 13B)
- Módulo fabrication/ para CNC plasma/router/laser (stubs Sprint 13)
2026-05-26 22:10:18 -04:00