Gedenk-/Deko-Platine (gift-pcb)
Eine PCB, die nur Kunst ist und keine Schaltung enthält. Die Schwierigkeit liegt nicht im Schaltplan, sondern in drei stets übersehenen Dingen: Wie die Referenzplatine wirklich aussieht, aus welchem Material jede Schicht besteht und der Unterschied zwischen „sieht richtig aus“ und „ist richtig gemessen“.
Drei eiserne Regeln
- Schichtweise betrachten, nicht das zusammengesetzte Bild. Kupfer unter Lötstopplack ist schwarz; nur „Kupfer + Fensteröffnung“ ergibt Gold.
- Messen, nicht schätzen. Jedes „reicht aus“ muss in Millimetern/Pixeln konkret gemessen und in die Antwort geschrieben werden. Geschätzte Werte werden beim dritten Nachbessern entlarvt.
- Erst kopieren, dann ändern. Probleme, die in der Referenzplatine oder offiziellen Emblemen bereits gelöst sind, übernimmt man direkt in deren Geometrie – nicht neu erfinden.
Acht Phasen und Tore
| Phase | Ergebnis | Tor (ohne Bestehen kein nächster Schritt) |
|---|---|---|
| P0 Projektstart | Empfänger, Masse, Fertigungstechnik, Elementliste | Jedes Element muss beantworten: „wohin und wie gross“ |
| P0.5 Bedarfsinterview | Verwendungszweck, Anlass, realistisch/dekorativ, Handskizze, Budget | Alle 8 Fragen durchgegangen (siehe 06), insbesondere „Handschrift-Look erwünscht?“ |
| P1 Referenzplatine dekodieren | Schicht-für-Schicht-Rendering + Elementliste + Dreifarb-Verhältnistabelle; bei keiner Referenz → Materialsuche | ① Auf dem Bild zeigen: was ist Kupfer/Gold/Siebdruck/Loch; ② scripts/00-decode_badge.py ausgeführt, liefert Emblem-Prototyp (Linienzeichnung/Scheibe) + Radius + Fläche + dünnster Strich; ③ Referenz-Platine: Gold/Weiss/Schwarz-Werte messen; ④ 07-Checkliste mit 10 Punkten ausgefüllt (jeweils mit Messwert + Entscheidung „übernehmen oder nicht“ per User) |
| P2 Layout | Vorder-/Rückseiten-Mockup | User bestätigt Layout; Hinweis: „Vorab-Rendering nicht endgültig“ |
| P3 Vektorisierung & Fertigbarkeit | Vektoren für Emblem/Text, Linienbreitentabelle, Goldflächenbudget | Minimale Linienbreite ≥ Fertigungsgrenze; Gold 12–24 %, Weiss ≥0,3 %, Matt-Schwarz 65–85 % |
| P4 EDA-Umsetzung | Projekt + Platine + sämtliche Schichtgrafiken | Nach jedem Speichern Rücklesen: Anzahl Grafikelemente stimmt mit Plan überein |
| P4.5 3D-Abnahme | Vorder-/Rückseiten-3D-Bild via scripts/14-render3d.py + schrittweise User-Prüfung (C1: Defekte / C2: Ästhetik / C3: fehlende Elemente) | User sagt „okay“ – mindestens 1 Runde, ideal 2 Runden; ohne Zustimmung kein Bestellpaket |
| P5 Export-Prüfung | Gerber-Paket + Bestellpaket | scripts/13-check.py komplett grün (inkl. Gold/Weiss/Schwarz-Verhältnisse) + mindestens eine Detailansicht mit ≥60 px/mm (mit blossem Auge) |
P0.5 und P4.5 sind die beiden am leichtesten übersprungenen und zugleich teuersten Tore. Ersteres entscheidet, ob das Richtige gemacht wurde, letzteres, ob der User es akzeptiert.
Direktlinks
| Was du tun willst | Lies dies |
|---|---|
| Vor Arbeitsbeginn: Fragen an den User, 3D-Abnahme, Goldflächenberechnung | references/06-Anforderungsinterview&Abnahme.md |
| Gerber einer Referenzplatine öffnen, jede Schicht bestimmen | references/01-Referenzplatine-dekodieren.md |
| Linienbreite, Maschinenfähigkeit, Bitmap-zu-Vektor, Scanlinien-Präzision, Webmuster-Parameter | references/02-Fertigbarkeit&Vektor.md |
| Webmuster aufbringen (Muster der Referenzplatine nachbilden) | scripts/15-weave.py (--extract extrahiert Tabelle aus beliebiger Referenz) |
| Was von der Referenzplatine Punkt für Punkt übernehmen (Goldband/Lochgruppe/Beschnitt/Siebdruckebenen …) | references/07-Was-von-der-Referenz-uebernehmen.md |
| Zu wenig Material, Online-Bildersuche nötig | references/08-Materialbeschaffungsplan.md + scripts/17-crawl_assets.py |
| Welche von vielen Bildern auf die Platine passen | scripts/18-filter_assets.py (erzeugt Bildwand, Mensch wählt aus) |
| Vor Arbeitsbeginn: Fragen an den User (ausfüllbare Vorlage) | templates/Fragebogen.md |
| Unklar, wie Layout angeordnet wird | templates/layouts/ (drei Vorlagen + 24 px/mm Beispiel) |
| Spezifikation zuerst ansehen (ohne EDA zu öffnen) | scripts/20-preview_spec.py |
| CLI/JS-Aufrufe für EasyEDA Pro | references/03-EDA-Umsetzung.md |
| Grafikelemente nicht einzeln per Befehl hinzufügen (direkt .epcb2 schreiben) | references/03-EDA-Umsetzung.md Abschnitt 8 |
| Emblem ist Vollflächenfarbe + weisser Hohltext (Scheibentyp) | references/02-Fertigbarkeit&Vektor.md „Zwei Emblem-Prototypen“ |
| 3D-Vorschau für User-Abnahme erzeugen | scripts/14-render3d.py |
| Irgendein Schritt „sieht komisch aus“ – zuerst Fehlerhistorie prüfen | references/04-Fehlerhistorie.md (118 Einträge, Abschnitte A–R) |
| Bestellpaket schnüren, prüfen ob es dem abgenommenen entspricht | scripts/19-pack_order.py (MANIFEST + --verify) |
| Nach Skriptänderung: Prüfen ob Platine noch korrekt | python -m pytest tests -q |
| Schriftart wechseln / läuft auf anderem Rechner nicht | references/02-Fertigbarkeit&Vektor.md „Schriftarten“ |
| Material suchen, ähnliche Skills anderer ansehen | references/05-Referenzmaterial.md |
Vor P4-Beginn: Zuerst references/03 lesen. Der teuerste Fehler war, aus dem Gedächtnis die Parameterreihenfolge von create() zu raten – während die korrekte Signatur die ganze Zeit in der eigenen 03 stand.
Die 13 teuersten Regeln (vollständige Liste in 04)
- Gold = Kupfer + Fensteröffnung; beide Schichten zwingend; Gold 12–24 % (gleich grosse Referenzplatine: 22,0 %, gemessen mit
13-check, siehe02„zwei Messmethoden“). Unter 8 % ist es eine leere Platine, über 26 % Vollflächen-Gold. - Emblem zuerst den Prototyp bestimmen, dann zeichnen: Linientyp → gesamtes Emblem nachzeichnen; Scheibentyp (Vollfläche + weisser Hohltext) → Vollflächenscheibe + Text als schwarze Aussparung. Falscher Prototyp → Text wird ausgefranst (so wurde v3 unbrauchbar).
- Komplexe Schriftzeichen nicht mit Polygon-Booleschen Operationen bearbeiten; Rasterisierung + 0,06 mm Scanlinien; aber lateinische Buchstaben/Ziffern bevorzugt als Textobjekt (Vektor) – Scanlinien nur für chinesische Schriftzeichen, Handschrift und Grafiken.
- Hintergrundtextur muss beschnitten werden (an den abgerundeten Ecken mit Kreis schneiden), nicht einfach überstehende Linienstücke wegwerfen – sonst entsteht rund um die Platte eine gezackte Kante.
- Wenn Hintergrundtextur in derselben Schicht liegt, muss jede Bbox-Filterbedingung zusätzlich eine Dimensions-Signatur enthalten, sonst wird die Textur mitgelöscht.
- Batch-Schreibvorgänge: ≤600 pro Batch, Pause zwischen Batches, Wiederholung bei Fehlern, am Ende nach Koordinaten deduplizieren;
setState_*speichert nicht auf die Festplatte – für Geometrieänderungen nurmodify()verwenden. - Die drei Rückseitenschichten (2/4/6) müssen alle gespiegelt erzeugt werden; der untere Siebdruck ist Schicht 4, nicht 3.
- Wenn der User sagt „sieht nicht ähnlich aus“, liegt das Problem fast immer im Regelwerk (Anordnung, Proportionen, Ebenen), nicht in den Parametern. Die Referenzplatine in Zahlen ausdrücken, nicht Werte herumdrehen.
- Nach dem Schreiben einer .epcb2-Datei muss
session close --destroyund dannopenausgeführt werden – der Editor lädt Änderungen von der Festplatte nicht automatisch neu; der Export würde alte Grafiken verwenden (Regel 109). - Die gesamte Platine kann direkt als .epcb2-Text geschrieben werden (eine JSON-Zeile pro Element, eine FILL pro Pfad) – das ist um Grössenordnungen schneller als CLI-Batch-Injektion; aber Rückseitentexte dürfen nicht mit
mirror:truegespiegelt werden, sondern die Geometrie muss tatsächlich gespiegelt werden. - Kreise immer mit
path:["CIRCLE",cx,cy,r]+ Breite – Scanlinien-Kreise erzeugen mit benachbarten Buchstaben gezackte Lücken. - „Alles kopieren, was geht“ – aber kopiere Zahlen, nicht Eindrücke. Das Goldband am Platinenrand liegt auf dem Platinenumriss (sichtbare Breite = Linienbreite/2), die Lochgruppe mit den φ0,3 mm-Löchern, Grafik ragt über die Platte hinaus, drei Siebdruckzeilen mit drei verschiedenen Schriftarten, die untere Querlinie – jeden Punkt messen und in die
07-Tabelle eintragen, User entscheidet, ob übernommen wird. - Selbstprüfung muss „Skript erzeugt Tabelle + eine Detailansicht mit ≥60 px/mm“ sein – 20 px/mm sieht einen 0,06 mm-Fehler nicht; ihn zu sehen und trotzdem „akzeptabel“ zu schreiben ist schlimmer als ihn nicht zu sehen. Webmuster separat: mindestens 80 px/mm auf einem 12×12 mm-Ausschnitt – im zusammengesetzten Bild sieht es immer nur wie „ein Grau“ aus.
Liefergegenstände (jede endgültige Fassung muss enthalten)
export/<name>_gerber_<datum>_v<n>.zippreview/board-gerber<n>.png: Vorder-/Rückseite jeweils aus Gerber gerastert und zusammengesetzt, kein EDA-Screenshotpreview/v<n>_front3d.png/v<n>_back3d.png: die von14-render3d.pyerzeugte pseudo-3D-Ansicht (Mattschwarz-Relief + Goldreflexion) für die P4.5-Abnahme durch den Userdocs/03-AktuellerStand.md: Schichtstatistiken, Geometrieparameter, festgelegte sowie offene Punktedocs/Abnahmeprotokoll.md: von13-check.py --mderzeugte Messtabelle + die 14 P4.5-Prüfpunkte (ein Protokoll pro Platine, nicht mündlich abfragen)- Bestellpaket: Gerber + Vorschaubilder + EDA-Quelldatei +
Bestellanweisung.txt(mit Messdaten und bekannten Risiken) +MANIFEST.txt(scripts/19-pack_order.pyerzeugt sha256; nach Entpacken mit--verifyprüfen, dass es identisch ist, erst dann bestellen)
Selbstprüfung (vor jeder Lieferung zwingend)
scripts/13-check.pyausführen – alles grün, sonst nicht weitermachen (Masse, Goldfläche, minimale Linienbreite, minimaler Siebdruck, weisser Siebdruck, Mattschwarz, Bohrlöcher, Grafikanzahl, Ringabdeckung). Bei Platinen mit Webmuster muss--weavehinzugefügt werden: Die 2 mm-Einheitenausrichtung Zelle für Zelle mit der Referenzmustertabelle vergleichen; Übereinstimmung ≥90 % = korrekt übernommen. Gleichzeitig--md docs/Abnahmeprotokoll.mdnutzen, um die Zahlen und die 14 P4.5-Punkte in einer Datei zu vereinen.- Eine Detailansicht mit ≥60 px/mm erzeugen, drei Stellen fix prüfen: Emblem, Haupttext, eine Ecke der Platine.
- Die Zahlen aus den beiden obigen Schritten in die Antwort schreiben – nicht „habe ich gesehen“.
- Defekte entdeckt: Zuerst reparieren, dann entscheiden ob „akzeptabel“ – „akzeptabel“ ist kein Reparaturplan.
- Das P4.5-3D-Bild muss dem User tatsächlich gezeigt werden (Vorderseite + Rückseite), nicht nur heissen „es wurde gerendert“.