Skip to content

Multi-Setup-Workflow: Werkstueck-Transformation + Maschinen-Umbau + Reference-Workflows (5-Sided Wuerfel + Schale-Rotary) #44

Description

@MadGapun

Quelle: Markus' realer Workflow - „Teelicht-Halter aus Wuerfel mit 5 Seiten" + „Schale mit Rotary von unten"
Verwandt: A20 (Multi-Setup-Workflow ✅ Basis), A44 (Two-Sided/Indexed #37), A47 (Spannmittel-Modell #42), A48 (Run-Lock #43)

Markus' reale Workflows

Workflow 1: 6-seitiger Teelicht-Halter (5-Sided Wuerfel)

Setup 1: Wuerfel-Rohling, Oberseite oben
         -> 1. Seite fertig (Aussparung + Gravur)
Setup 2: Wuerfel umgespannt, naechste Seite oben (90° Rotation um Y)
         -> 2. Seite fertig
Setup 3-5: weitere 3 Seiten analog

Pro Aufspannung:

  • Werkstueck in anderer Orientierung (welche Seite zeigt nach oben?)
  • Nullpunkt muss konsistent bleiben (z.B. immer Wuerfel-Mittelpunkt)
  • Selbe Werkzeuge ODER unterschiedliche (Werkzeugwechsel zwischen Aufspannungen moeglich)
  • 5 Setups verkettet in EINEM Projekt
  • Reihenfolge wichtig (Boden-Seite zuletzt damit Wuerfel stabil bleibt)

Workflow 2: Schale mit Rotary

Setup 1: Runder Rohling, Standard 3-Achs-Modus
         -> Unten breiter werden lassen (konische Aussenform)
Setup 2: Rohling umgespannt (180° um X gedreht)
         -> Von oben: Schale rein fraesen (Pocket)
Setup 3: CNC UMGEBAUT auf Rotary
         -> Schale von „unten" in Rotary-Spannfutter
         -> Seiten gravieren / Ornamente heraus arbeiten

Pro Aufspannung:

  • Werkstueck-Orientierung wechselt (180° flip)
  • Maschinen-Modus wechselt (Standard XYZ -> Rotary Y)
  • Spannmittel wechselt (Schraubstock -> Vakuum -> Spannfutter)
  • Werkzeuge wechseln

Was wir HABEN

Setup Datenmodell hat bereits:

  • maschinen_modus: str (standard_xyz / rotary_y / rotary_x / laser / drag_knife) ✅
  • spannmittel: str (aber: nur Freitext, nicht strukturiert) ⚠️
  • werkzeug_id + nullpunkt
  • pause_vor: SetupPause mit Typ UMSPANN / WERKZEUGWECHSEL / SPINDEL_WECHSEL ✅
  • rohmaterial_uebernehmen: bool

Was FEHLT konkret

1. Werkstueck-Transformation zwischen Setups

Aktuell: nur Nullpunkt-Verschiebung in SetupPause.nullpunkt_neu. Markus' Wuerfel braucht aber Rotation: Setup 2 = Setup 1 + 90° um Y-Achse.

Vorschlag Datenmodell:

class WerkstueckTransformation(BaseModel):
    rotation_grad_x: float = 0.0  # 0/90/180/270 typisch
    rotation_grad_y: float = 0.0
    rotation_grad_z: float = 0.0
    spiegelung_x: bool = False
    spiegelung_y: bool = False
    spiegelung_z: bool = False
    nullpunkt_neu: tuple[float, float, float] | None = None
    referenz: Literal["block_mitte", "ecke_vorne_links", "ref_pin", ...] = "block_mitte"

class Setup(BaseModel):
    # ... existing
    werkstueck_transformation: WerkstueckTransformation | None = None
    # Wenn None: aus Vorgaenger-Setup uebernehmen (mit identity)

2. Maschinen-Umbau als eigener Pause-Typ

Aktuell: SetupPauseTyp hat WERKZEUGWECHSEL/UMSPANN/WERKSTUECK_VERSCHIEBEN/SPINDEL_WECHSEL/OPTIONALER_STOP.

Fehlt: MASCHINEN_UMBAU — z.B. „Rotary-Achse einbauen", „Y umkonfigurieren ($101=88.889)".

class SetupPauseTyp(str, Enum):
    # ... existing
    MASCHINEN_UMBAU = "maschinen_umbau"  # neu

Mit Sub-Felder fuer was umzubauen ist:

  • Modus vorher / nachher (standard_xyz -> rotary_y)
  • Anleitung (Markdown mit Schritten + Foto-Slots)
  • Default-Anleitungen je Umbau-Typ aus Maschinen-Profil

3. Strukturiertes Spannmittel pro Setup

Aktuell spannmittel: str = \"\" ist nur Freitext. Issue #42 (A47) plant ein strukturiertes Spannmittel-Modell — das gehoert pro Setup, nicht pro Maschine!

Z.B. Setup 1 = Schraubstock + 4 Zwingen, Setup 2 = Vakuum-Tisch, Setup 3 = Spannfutter (Rotary).

Verknuepfung A47 <-> dieses Issue.

4. Reihenfolge der Bearbeitungs-Seiten (Stabilitaets-Hinweise)

Beim Wuerfel: erste 4 Seiten OK, Boden-Seite letzte weil sonst Werkstueck instabil.

Sicherheits-Check (siehe A48 #43): Pre-Generation-Check \"Reihenfolge plausibel?\" warnt wenn Letzter Setup nicht der Bodenseiten-Setup ist (heuristisch).

5. Werkstueck-Rest-Tracking zwischen Setups

Bei der Schale: Setup 1 (Aussen-Form) + Setup 2 (Innen-Pocket) - beide brauchen wissen was nach Setup 1 vom Material uebrig ist.

Heute: jeder Setup beginnt mit fresh Rohmaterial (vereinfacht). Realer: zwischen Setups muss das Werkstueck nach-modelliert werden.

Optional fortgeschritten: Voxel-Simulation (haben wir bereits, D10) erweitern so dass nach Setup 1 das aktualisierte Voxel-Volumen die Input fuer Setup 2 ist.

6. Wizard fuer N-Sided Manual Flip

A44 (#37) hat Two-Sided + Indexed (Automatic) als Wizard. Fehlt: N-Sided Manual Flip (Markus' Wuerfel). Wuerfel = 5 Sides, jede Aufspannung manuell.

Wizard fragt:

  • Werkstueck-Form (Wuerfel / Quader / Zylinder / frei)
  • Anzahl Seiten zu bearbeiten
  • Pro Seite: welche Operationen
  • Generiert N Setups mit korrekten WerkstueckTransformationen

Akzeptanzkriterien

Backend

  • W1 WerkstueckTransformation Modell in db/models.py
  • W2 Setup.werkstueck_transformation Feld
  • W3 SetupPauseTyp.MASCHINEN_UMBAU + Detail-Felder
  • W4 Default-Maschinen-Umbau-Anleitungen pro Maschine (z.B. ProVerXL-Rotary-Umbau Standard-Steps)
  • W5 Strukturiertes Spannmittel pro Setup (depends on A47)
  • W6 Sicherheits-Check „Letzter Setup ist Boden-Setup" (heuristisch, warnung)
  • W7 Optional: Rest-Material-Tracking via Voxel zwischen Setups

Frontend

  • W8 SetupEditor zeigt Werkstueck-Transformation visualisiert (3D-Mini-Preview)
  • W9 Maschinen-Umbau-Pause: Schritt-fuer-Schritt-Anleitung mit Foto-Slots
  • W10 Wizard „N-Sided Manual Flip"
  • W11 ArbeitsSchritt-Tree zeigt Aufspannungs-Hierarchie + Reihenfolge

Wiki + Sample-Files

  • W12 Reference-Workflow „Teelicht-Halter 5-Sided" als Beispiel-Projekt
  • W13 Reference-Workflow „Schale-mit-Rotary" als Beispiel-Projekt
  • W14 Wiki-Seite „Multi-Setup-Workflow" ueberarbeiten mit echten Beispielen

Tests

  • W15 Test: 5-Sided-Wuerfel-Projekt generiert 5 Setups mit korrekten Rotationen
  • W16 Test: Schale-mit-Rotary-Projekt generiert 3 Setups mit Modus-Wechsel

Bezug

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions