Bedienungsanleitung

CutStock — Bedienungsanleitung

Version 2026.10.43 — Verschnittoptimierung für Platten und Stangen

CutStock besteht aus vier Tabs: Material & Lager, Projekte, Optimierung und Einstellungen. Die Oberfläche gibt es auf Deutsch, Englisch, Französisch und Italienisch, im SAP-Horizon-Design in Hell und Dunkel.

Kopfzeile

  • Lizenz-Anzeige — „Community (PolyForm Noncommercial)“ oder der Name des Lizenznehmers bei kommerzieller Lizenz
  • ☾ / ☀ — wechselt das Farbschema (System, Hell, Dunkel)
  • Beenden (nur Desktop-App) — beendet CutStock nach einer Rückfrage; der Browser-Tab schließt sich
Tipp: Ein Doppelklick auf eine Tabellenzeile öffnet den Bearbeiten-Dialog — bei Materialien, Lagerstücken, Projekten, Teilen und Sägeblättern. Den Trenner zwischen linker und rechter Hälfte kannst du mit der Maus verschieben; CutStock merkt sich die Breite.

Tab 1 — Material & Lager

Links die Materialliste, rechts der Lagerbestand des ausgewählten Materials.

Material & Lager
Materialliste mit Bildern, rechts der Lagerbestand mit aufgeklappten Einzelstücken

Materialien

Ein Material beschreibt eine Werkstoffart — z. B. „Spanplatte 19 mm“ oder „Kiefer Kantholz 44×44“. CutStock unterscheidet zwei Typen:

  • Platte — zweidimensional (Länge × Breite): Span-, MDF-, Multiplex-, Leimholzplatten, Glas, Blech …
  • Stange — eindimensional (nur Länge): Leisten, Kanthölzer, Rohre, Profile …

Material anlegen: Neu klicken (oder N drücken). Der Dialog fragt:

FeldBeschreibung
NameFrei wählbar, z. B. „Eiche Leimholz 18 mm“
TypPlatte oder Stange
Dicke (Platte)Materialstärke — nur zur Information, wird in der Materialtabelle angezeigt
Querschnitt Breite / Tiefe (Stange)Profilmaße — nur zur Information
MaserungKeine (frei drehbar), Längs (lange Kante) oder Quer (kurze Kante). Teile mit Maserungsvorgabe werden nur passend zur Maserung platziert.
Besäumung (Rand)Randbreite, die an jeder Kante abgezogen wird (bei Stangen an beiden Enden) — z. B. bei Platten mit unsauberer Kante
Min-Restlänge / Min-RestbreiteAb dieser Größe gilt ein Rest als verwertbar und wird wieder ins Lager gebucht; kleinere Reste zählen als Verschnitt.
BildOptionales Foto (JPG, PNG, WebP, max. 5 MB)

Bearbeiten: Material auswählen und Bearbeiten klicken (oder E). Löschen: Löschen (oder Entf) — nach einer Rückfrage werden auch alle Lagerstücke dieses Materials und alle Teile mit diesem Material in sämtlichen Projekten gelöscht.

Material-Bilder

Im Material-Dialog gibt es einen Bildbereich mit Bild hochladen, Ändern und Entfernen. Übernommen wird das Bild erst mit Speichern. In der Materialtabelle erscheint es als Vorschaubild in der Spalte „Bild“ — mit der Maus darüberfahren vergrößert es.

Lagerbestand

Jeder Lagereintrag hat Länge, bei Platten zusätzlich Breite, und eine Stückzahl — z. B. „2800 × 2070 mm, 8 Stück“ für acht ganze Spanplatten oder „3000 mm, 10 Stück“ für zehn Kanthölzer.

Einzelstücke: Bei einer Stückzahl über 1 klappt ein Klick auf ▶ in der Spalte „Stückzahl“ die einzelnen Stücke auf: #1, #2, #3 … mit Notiz und Anzahl ihrer Defekte. So weißt du bei vielen gleichen Brettern, welches gemeint ist — am besten die Nummer mit Kreide aufs Holz schreiben.

Tipp: Ausgebucht wird erst beim Sägen: Sobald du im Schnittplan ein Teil als gesägt markierst oder auf „Bestätigen (gesägt)“ klickst, wird das Lagerstück ausgetragen. Reste, die die Mindestmaße des Materials erreichen, bucht CutStock automatisch als neuen Lagereintrag ein.

Defekte markieren

Astlöcher, Risse, Verfärbungen: Lagereintrag auswählen und Defekte klicken. Der Dialog listet alle Defekte mit Stück #, Position und Länge (bei Platten zusätzlich Position Y und Breite). Mit „Defekt hinzufügen“ kommt ein neuer dazu; jede Zeile lässt sich bearbeiten oder löschen.

Lagerzeilen mit Defekten tragen ein rotes Zähler-Badge. Bei der Optimierung legt CutStock keine Teile auf defekte Bereiche — im Schnittplan erscheinen sie rot schraffiert, und der Plan-Kopf nennt die Stücknummer (z. B. „#1“).

Defekt im Schnittplan
Das Astloch (rot schraffiert) wird bei der Platzierung ausgespart

Etiketten (Lager)

Etiketten im Lagerbereich erzeugt ein PDF mit einem Etikett pro vorhandenem Stück des ausgewählten Materials: Materialname, Maße und Lagerkennung (#ID). Das Papierformat stellst du in den Einstellungen ein.


Tab 2 — Projekte

Links die Projektliste, rechts die Teile des ausgewählten Projekts.

Projekte
Projekt „Kleiderschrank Schlafzimmer“ mit seinen Teilen

Projekte verwalten

Ein Projekt fasst alle Teile eines Vorhabens zusammen — z. B. „Kleiderschrank Schlafzimmer“ oder „Werkstattregal“.

ButtonFunktion
Neu / Bearbeiten / LöschenProjekt anlegen, umbenennen oder mit allen Teilen löschen
DuplizierenKopie „<Name> (Kopie)“ mit allen Teilen — der Gesägt-Stand beginnt wieder bei 0. Praktisch für Varianten.
ExportProjekt als JSON-Datei mit allen Teilen, Materialangaben und CutStock-Version (ohne Gesägt-Stand)
ImportLegt aus einer JSON-Datei immer ein neues Projekt an. Fehlende Materialien werden automatisch angelegt (Name, Typ, Maserung, Bestand 0) — Maße und Lager ergänzt du danach. Stammt die Datei aus einer neueren CutStock-Version, erscheint ein Hinweis.
Tipp: JSON-Export und -Import eignen sich, um Projekte zwischen CutStock-Installationen auszutauschen oder einzeln zu sichern.

Teile

Die Teiletabelle zeigt Label, Typ, Material, Maserung, Länge, Breite, Stückzahl und den Fortschritt (Balken mit „gesägt/gesamt“, z. B. 2/4).

Neues Teil: Projekt auswählen und Teil hinzufügen klicken (oder N):

FeldBeschreibung
LabelName des Teils, z. B. „Seitenwand links“ (Vorgabe: „Teil n“)
TypPlatte oder Stange — die Materialauswahl zeigt nur passende Materialien
MaterialZuordnung zu einem vorhandenen Material
MaserungEgal (frei drehbar), Längs (∥ Teillänge) oder Quer (∥ Teilbreite)
Länge / BreiteFertigmaße des Teils
StückzahlWie oft das Teil gebraucht wird
Gesägt (Stück)Nur beim Bearbeiten: Gesägt-Stand von Hand korrigieren

Teile kopieren

Kopieren nach… kopiert das ausgewählte Teil oder alle Teile in ein anderes Projekt (Was kopieren? → Zielprojekt → Kopieren). Die Kopien starten ungesägt.

CSV-Import

CSV-Import lädt Teilelisten aus Excel, LibreOffice & Co. Trennzeichen und Spalten werden automatisch erkannt; möglich sind Label, Länge, Breite, Anzahl, Maserung und Material in beliebiger Reihenfolge.

Vor dem Import zeigt ein Dialog die Zahl der erkannten Teile, fragt die Maßeinheit und ein Material für Zeilen ohne Material-Spalte ab. Zeilen mit unbekanntem Materialnamen werden übersprungen und gemeldet — anders als beim JSON-Import wird kein Material angelegt.

Trapez-Helfer

Für Treppenstufen und andere trapezförmige Teile: Trapez-Helfer berechnet aus Gerade Kante, Tiefe links, Tiefe rechts und optionalem Versatz das umschließende Rechteck und legt die Teile an. Dazu kommen Label-Prefix (z. B. „Stufe“ → „Stufe 1“, „Stufe 2“ …), Material (nur Platten), Maserung und Stückzahl. Eine Live-Vorschau zeigt das Trapez im Rechteck.


Tab 3 — Optimierung

Projekt, Material, Sägeblatt und Algorithmus wählen, dann Optimieren (oder R). Das Material-Feld zeigt nur Materialien, für die das Projekt noch offene Teile hat. Wechselst du eine Auswahl, wird das angezeigte Ergebnis verworfen.

Auswahl

FeldBeschreibung
ProjektDessen offene (noch nicht gesägte) Teile werden verplant
MaterialNur Teile dieses Materials werden berücksichtigt
SägeblattBestimmt die Schnittbreite, die zwischen den Teilen eingerechnet wird
AlgorithmusSchnell (Greedy), Nested Guillotine (Platten) oder Gründlich (GA) — siehe unten

Algorithmen

Alle Verfahren erzeugen Guillotine-Schnitte: Jeder Schnitt geht von Kante zu Kante und ist mit Tisch- oder Handkreissäge machbar.

AlgorithmusPlatten (2D)Stangen (1D)
Schnell (Greedy)Best-Area-Fit: jedes Teil kommt in den am besten passenden freien Bereich — sehr schnellExakte Optimierung (ILP)
Nested Guillotine (Platten)Verschachtelte Streifen mit kluger Schnittrichtung — Voreinstellung, guter StandardExakte Optimierung (ILP)
Gründlich (GA)Genetischer Algorithmus: sucht länger und ist nie schlechter als NestedGenetischer Algorithmus

Stangen: Mit „Schnell“ und „Nested“ löst CutStock die Aufteilung als ganzzahliges lineares Programm (ILP, SciPy) — so wenige Stangen wie möglich. Sind für das Material Defekte erfasst, kommt stattdessen ein Best-Fit-Verfahren zum Einsatz, das die defekten Bereiche ausspart.

Ergebnis und Schnittplan

Plattenzuschnitt
Statistik, erster Schnittplan und aufgeklappte Schnittfolge

Kacheln: Lagerstücke verwendet · Teile platziert · Fehlende Teile · Materialbedarf (nur wenn etwas fehlt) · Materialausnutzung · Nutzbares Restmaterial · Gesamtverschnitt (mit „echter Verschnitt“ = nicht verwertbarer Abfall).

Schnittpläne: Pro Lagerstück eine Karte „Vorschau n“ mit Maßen, Stücknummer (#n), Teileanzahl, Ausnutzung und Verschnitt. Die Teile sind farbkodiert und tragen ihr Label (sofern Platz ist); „R“ kennzeichnet gedrehte Teile. Bei Stangen stehen die Teile von lang nach kurz, der Rest am Ende wird grau mit seiner Länge angezeigt.

Stangenzuschnitt
Stangen: gemischte Teile pro Kantholz, Restlänge rechts

Schnittfolge: Unter jedem Plan lässt sich „Schnittfolge (n)“ aufklappen — bei Platten z. B. „2780×2050 bei 996 mm von links → 996×2050 + 1781.6×2050“, bei Stangen „Label: Länge ablängen“. Fährst du mit der Maus über einen Schritt, wird der Schnitt im Plan rot hervorgehoben.

Als gesägt markieren: Ein Klick auf ein Teil im Plan hakt es ab, ein erneuter Klick nimmt das zurück. Beim ersten abgehakten Teil eines Lagerstücks wird dieses ausgebucht und verwertbare Reste werden eingebucht.

Tipp: Die Lupe 🔍 oben rechts in jeder Karte zeigt den Plan groß an — auch dort kannst du Teile abhaken. Esc schließt die Vergrößerung.

Fehlende Teile und Materialbedarf

Reicht das Lager nicht, zeigt die Kachel Fehlende Teile Anzahl und Namen der nicht platzierten Teile. Daneben schätzt die Kachel Materialbedarf, wie viele Platten oder Stangen zusätzlich nötig sind (in der Größe der vorhandenen Lagerstücke, ohne Lager in einem Standardformat). Ins Lager bucht diesen Bedarf direkt als Lagerbestand ein — danach einfach neu optimieren.

Materialbedarf
Sechs Teile fehlen — eine weitere Platte reicht

Aktionen nach der Optimierung

ButtonFunktion
Bestätigen (gesägt)Übernimmt nach einer Rückfrage den ganzen Plan: Lagerstücke ausbuchen, Reste einbuchen, Teile als gesägt markieren. Bereits abgehakte Teile werden nicht doppelt gezählt.
PDF ExportSchnittpläne mit Stückliste (#, Label, Länge, Breite, Lager-ID), bei Platten zusätzlich die Schnittfolge — zum Ausdrucken für die Säge. Das PDF ist auf Deutsch und in mm.
EtikettenEin Etikett pro Teil: Label, Maße („(R)“ bei gedrehten Teilen), Projekt · Material und Plan-Nummer („P1“)
Werkstatt-ModusVollbildansicht für das Tablet an der Säge (siehe unten)

Werkstatt-Modus

Werkstatt-Modus
Zwei Türen gesägt, die Seitenwand ist als Nächstes dran
  • Ein Lagerstück pro Seite mit großem Plan und Teileliste
  • Abhaken durch Antippen in der Liste oder im Plan — synchron mit der normalen Ansicht und dem Lager
  • „Als Nächstes“ markiert das nächste zu sägende Teil; ganz oben der Gesamtfortschritt
  • Blättern mit den Pfeil-Buttons oder ← →; Esc oder ✕ schließt
  • Sind alle Teile erledigt, erscheint „Alle Teile gesägt“
Tipp: Tablet an der Säge, Rechner im Büro? Mit der Docker-Variante ist CutStock ohnehin im Netz erreichbar. In der Desktop-App aktivierst du dafür unter Einstellungen → REST-API „API aktivieren“; nach einem Neustart ist CutStock unter http://<IP-des-Rechners>:8421 erreichbar.

Tab 4 — Einstellungen

Aussehen

EinstellungOptionen
SpracheDeutsch, English, Français, Italiano
MaßeinheitMillimeter (mm) oder Zentimeter (cm) — gilt für alle Eingaben und Anzeigen
FarbschemaAuto (System), Hell oder Dunkel

Etiketten

Papierformat für alle Etiketten-PDFs:

  • A4-Bogen 3×8 — 70 × 36 mm (Avery 3475), 24 pro Bogen
  • A4-Bogen 3×7 — 63,5 × 38,1 mm (Avery L7160), 21 pro Bogen
  • Etikettendrucker 89 × 36 mm — z. B. Dymo 99012
  • Etikettendrucker 62 × 29 mm — z. B. Brother DK-11209
  • Benutzerdefiniert — Breite und Höhe frei, ein Etikett pro Seite

REST-API

Alle Funktionen stehen auch als REST-API unter /api/ zur Verfügung — für Skripte, Automatisierung und Integrationen. Eine interaktive Endpunkt-Übersicht liefert /docs.

  • API-Key — mit Generieren erzeugen, mit Kopieren übernehmen. Ist ein Key gesetzt, müssen externe Programme ihn als Authorization: Bearer <Key> mitsenden. Die eigene Weboberfläche und Zugriffe vom selben Rechner brauchen keinen Key.
  • Ohne Key ist die API für jeden erreichbar, der den Server erreicht — im Heimnetz mit Docker also am besten einen Key setzen.
  • API aktivieren und Port (Standard 8421) betreffen nur die Desktop-App: Eingeschaltet ist CutStock nach einem Neustart im Netzwerk erreichbar, ausgeschaltet nur auf dem eigenen Rechner. In der Docker-Variante ist die API immer aktiv.

Backup

  • Backup erstellen — lädt cutstock_backup_JJJJ-MM-TT.zip herunter: die komplette Datenbank (Materialien inkl. Bilder, Lager, Einzelstücke, Defekte, Projekte, Sägeblätter) und die Einstellungen (inkl. Lizenzschlüssel und API-Key).
  • Backup wiederherstellen — ersetzt nach einer Rückfrage alle aktuellen Daten durch die ZIP-Datei; danach lädt die Seite neu.
Tipp: Vor Updates und größeren Aufräumaktionen im Lager ein Backup erstellen.

Lizenz

CutStock steht unter der PolyForm Noncommercial 1.0.0 — kostenlos für den privaten, nicht-kommerziellen Einsatz, auch für Schulen, gemeinnützige Vereine und öffentliche Einrichtungen. Für den Einsatz im Betrieb gibt es eine kommerzielle Lizenz auf Anfrage (Anfrageformular auf der Projektseite).

Den Lizenzschlüssel fügst du im Feld Lizenzschlüssel ein und klickst Aktivieren. Angezeigt werden dann Lizenztyp, Lizenziert für und Gültig bis (oder „Unbefristet“); abgelaufene Lizenzen sind gekennzeichnet. Entfernen kehrt zur Community-Lizenz zurück.

  • Version — installierte Programmversion
  • Projektseite (WorldGate) und Quellcode auf GitHub
  • Nach Updates suchen — prüft auf GitHub, ob es eine neuere Version gibt

Sägeblätter

Sägeblätter mit Name und Schnittbreite verwalten (Neu, Bearbeiten, Löschen). Die Schnittbreite wird bei der Optimierung als Materialverlust zwischen zwei Teilen eingerechnet — typisch sind 2,4–3,2 mm bei Kreissägeblättern.


Tastenkürzel

Die wichtigsten Aktionen gehen per Taste. Die Tasten für Neu, Bearbeiten, Löschen, Lagerbestand und Optimieren sind frei belegbar: in den Einstellungen unter „Tastenkürzel“ auf die Taste klicken und die neue drücken (Esc bricht ab). Bereits belegte Tasten werden abgelehnt.

TasteAktion
1 – 4Tab wechseln (fest)
NNeu — im Material-Tab ein Material, im Projekte-Tab ein Teil (ohne gewähltes Projekt: ein Projekt), in den Einstellungen ein Sägeblatt
EAusgewähltes Element bearbeiten — im Material-Tab das gewählte Lagerstück, sonst das Material
Entf / ⌫Ausgewähltes Element löschen (gleiche Logik wie E)
SNeuer Lagerbestand (Material-Tab)
ROptimierung starten (Optimierungs-Tab)
EnterDialog speichern (fest)
EscDialog, Vergrößerung oder Werkstatt-Modus schließen (fest)

Solange der Cursor in einem Eingabefeld steht, sind die Kürzel inaktiv.


Installation

Desktop-App (macOS / Windows)

Download auf der GitHub-Releases-Seite. Die Builds sind nicht code-signiert:

  • macOS: beim ersten Start Rechtsklick auf die App → „Öffnen“
  • Windows: „Weitere Informationen“ → „Trotzdem ausführen“

Die App startet einen lokalen Server und öffnet CutStock im Standard-Browser; eine Internetverbindung ist nicht nötig. Die Daten liegen unter macOS in iCloud Drive/CutStock (sofern iCloud aktiv ist) und werden so zwischen Macs synchronisiert, unter Windows in %APPDATA%\CutStock. Startest du CutStock auf einem zweiten Mac, übernimmt dieser, und die erste Instanz beendet sich — so arbeiten nie zwei Rechner gleichzeitig auf derselben Datenbank.

Web-App (Docker)

Für NAS, Homeserver oder Raspberry Pi (amd64 und arm64):

services:
  cutstock:
    image: ghcr.io/orohde/cutstock:latest
    container_name: cutstock
    restart: unless-stopped
    ports:
      - "8420:8000"
    volumes:
      - ./data:/data
    environment:
      - CUTSTOCK_DB=/data/cutstock.db

Starten mit docker compose up -d — danach läuft CutStock unter http://localhost:8420 und ist von jedem Gerät im Netzwerk erreichbar. Die Datenbank liegt im Ordner ./data.


CutStock Version 2026.10.43 · Zurück zur Projektseite · GitHub · PolyForm Noncommercial 1.0.0