紀念展示板(gift-pcb)
一塊只有美術、沒有電路的 PCB。難點不在原理圖,而在三件反覆被忽略的事: 參考板到底長什麼樣、每一層分別是什麼材質、「看起來對」和「實測對」之間的差距。
三條鐵律
- 分層看,不要看合成圖。 銅被阻焊蓋住是黑的,只有「銅 + 開窗」才發金。
- 量,不要估。 所有的「夠不夠」都要落到毫米/像素實測數字,並寫進回覆。估出來的數會在第三次返工被戳穿。
- 先抄,再改。 參考板、官方徽記裡已經解決過的問題,直接取它的幾何,不要重新發明。
八階段與閘門
| 階段 | 產出 | 閘門(不過不許進下一階段) |
|---|---|---|
| P0 立項 | 收件人、尺寸、工藝、元素清單 | 每個元素都能回答「放哪、多大」 |
| P0.5 需求訪談 | 用途、場景、寫實/觀賞、手繪原稿、預算 | 8 個問題問完(見 06),尤其是「要不要手寫感」 |
| P1 解碼參考板 | 逐層渲染圖 + 元素清單 + 三色配比表;無參考板則查素材 | ① 能指圖說哪些是銅/金/絲印/孔;② scripts/00-decode_badge.py 跑過,輸出徽記原型(線稿/圓盤)+ 半徑 + 面積 + 最細筆畫;③ 有參考板就量出金/白/黑三個數;④ 填完 07 的十條抄清單(每條帶實測數字 + 抄不抄由用戶定) |
| P2 版式 | 正/背位圖 mock | 用戶確認版式;並聲明「預渲染不代表最終效果」 |
| P3 矢量與製造性 | 徽記/文字矢量、線寬表、金面積預算 | 最小線寬 ≥ 工藝下限;金 12–24%、白 ≥0.3%、啞黑 65–85% |
| P4 EDA 落地 | 工程 + 板 + 各層圖形 | 每層 save 後讀回,圖元數與計劃一致 |
| P4.5 3D 驗收 | scripts/14-render3d.py 出的正/背 3D 圖 + 用戶逐項確認(C1 查缺陷 / C2 查好不好 / C3 要不要補素材) | 用戶說「可以了」,至少一輪,理想兩輪;沒點頭不出下單包 |
| P5 導出覆核 | Gerber 包 + 下單包 | scripts/13-check.py 全綠(含金/白/黑三項配比)+ 一張 ≥60 px/mm 的局部圖(肉眼) |
P0.5 和 P4.5 是兩個最容易跳過、也最貴的閘門。 前者決定做對沒有,後者決定用戶認不認。
直接查
| 你要做的事 | 讀這個 |
|---|---|
| 開工前問用戶什麼、3D 怎麼驗收、金面積怎麼算 | references/06-需求訪談與驗收.md |
| 打開參考板 Gerber,判斷每層是什麼 | references/01-參考板解碼.md |
| 線寬、能不能上機、位圖轉矢量、掃描線精度、編織紋參數 | references/02-製造性與矢量.md |
| 要鋪編織紋(回放參考板紋路表) | scripts/15-weave.py(--extract 可從任何參考板重新提表) |
| 從參考板逐條抄什麼(金帶/孔組/出血/絲印層級…) | references/07-從參考板抄什麼.md |
| 素材不夠、想聯網找圖 | references/08-素材爬取計劃.md + scripts/17-crawl_assets.py |
| 一堆圖裡哪幾張能上板 | scripts/18-filter_assets.py(出圖牆,人挑) |
| 開工前該問用戶什麼(可填的表) | templates/問卷.md |
| 不知道版式怎麼排 | templates/layouts/(三個模板 + 24 px/mm 示意) |
| 想先看一眼 spec 長什麼樣(不開 EDA) | scripts/20-preview_spec.py |
| 寫 EasyEDA 專業版的 CLI/JS 調用 | references/03-EDA落地.md |
| 不想一條條注圖元(直接寫 .epcb2) | references/03-EDA落地.md 第八節 |
| 徽記是實心色塊 + 挖空白字(圓盤型) | references/02-製造性與矢量.md「徽記有兩種原型」 |
| 出 3D 預覽給用戶驗收 | scripts/14-render3d.py |
| 任何一步「看起來很怪」,先翻歷史坑 | references/04-踩坑清單.md(118 條,A–R 節) |
| 打包下單,確認手裡這份是不是驗收那份 | scripts/19-pack_order.py(MANIFEST + --verify) |
| 改腳本之後先確認沒把板子改壞 | python -m pytest tests -q(金板復現 / 織紋 / 自檢本身) |
| 想換字體 / 換機器跑不起來 | references/02-製造性與矢量.md「字體」 |
| 找素材、看別人的同類 skill | references/05-參考資源.md |
P4 開工前必須先讀 references/03。 踩過的最貴的一次,是照著記憶猜 create() 的參數順序,
而正確簽名一直寫在自己的 03 裡。
最貴的 13 條(全文見 04)
- 金色 = 銅 + 開窗,兩層缺一不可;金 12–24%(同尺寸參考板 22.0%,
13-check口徑,見02「兩套口徑」)。低於 8% 一定是空板,高於 26% 就是整板鋪金。 - 徽記先判原型再動筆:線稿型 → 整枚描摹;圓盤型(實心色塊 + 挖空白字)→ 實心盤 + 字做黑鏤空。原型判錯,字一定變毛刺(v3 就是這麼廢的)。
- 複雜字形不要做多邊形布林運算,光柵化 + 0.06 mm 掃描線;但拉丁字母/數字優先使用文字物件(矢量),掃描線只用於漢字、手寫體和圖形。
- 背景紋理要裁剪到邊界(圓角處與圓求交),不要把跨界線段整根丟掉,否則板邊一圈鋸齒缺口。
- 同層有背景紋理時,任何 bbox 條件篩選都必須疊加尺寸簽名,否則會把紋理一起刪掉。
- 寫批 ≤600 個/批、批間 sleep、失敗重試、收尾按座標去重;
setState_*不落盤,改幾何只信modify()。 - 背面三層(2/4/6)全部要鏡像生成;底層絲印是層 4,不是 3。
- 用戶說「不像」時,問題幾乎總在規則(排布、比例、層級),不在參數;去把參考板數成數字,而不是調數值。
- 寫完 .epcb2 必須
session close --destroy再open,編輯器不會自動重載磁碟改動,匯出會拿到舊圖(第 109 條)。 - 整塊板可以直接寫成 .epcb2 文字(一行一條 JSON,一條 FILL 一個 path),比 CLI 分批注入快一個數量級;但背面文字不能靠
mirror:true,必須鏡像幾何。 - 圓形一律用
path:["CIRCLE",cx,cy,r]+ width,掃描線畫圓會和旁边的字粘出豁口。 - 「能抄的都抄」——但抄的是數字,不是印象。 板邊金帶壓在板框上(可見寬=線寬/2)、孔組連那圈 φ0.3 小孔、圖形出血到板外、絲印三行三種字體、底部橫線——逐條量完填
07的表,抄不抄問用戶。 - 自檢必須是「腳本出表 + 一張 ≥60 px/mm 的局部圖」,20 px/mm 看不見 0.06 mm 的缺陷;看見了卻寫「可接受」比沒看見更糟。織紋另算:必須 80 px/mm 單獨看一塊 12×12 mm,它在合成圖裡永遠像「一片灰」。
交付物(每次定稿都要有)
export/<name>_gerber_<date>_v<n>.zippreview/board-gerber<n>.png:正/背各自用 Gerber 光柵化後合成,不是 EDA 截圖preview/v<n>_front3d.png/v<n>_back3d.png:14-render3d.py出的偽 3D(啞黑浮雕 + 金反光),給用戶做 P4.5 驗收docs/03-當前狀態.md:層統計、幾何參數、已定不動項、待定項docs/驗收單.md:13-check.py --md生成的實測表 + P4.5 十四項勾選(每塊板一份,別口頭問)- 下單包:Gerber + 預覽圖 + 工程源文件 +
下單說明.txt(含實測數據與已知風險)+MANIFEST.txt(scripts/19-pack_order.py出 sha256,解壓後--verify回驗一致才下單)
自檢(每次交付前,缺一不可)
- 跑
scripts/13-check.py,全綠才繼續(尺寸/金面積/最小線寬/最小絲印/白絲印/啞黑/鑽孔/圖元數/環覆蓋率)。 有織紋的板必須加--weave:把板上的 2 mm 單元朝向逐格和參考板紋路表比,吻合度 ≥90% 才算抄對。 同時加--md docs/驗收單.md,把數字和 P4.5 十四項一起落成文件。 - 出一張 ≥60 px/mm 的局部圖,固定看三處:徽記、主文字、一個板角。
- 把上面兩步的數字寫進回覆,不是「我看過了」。
- 發現缺陷:先修,再決定要不要說「可接受」—— 「可接受」不是修復方案。
- P4.5 的 3D 圖必須真的貼給用戶看(正+背兩張),不能只說「已經渲染好了」。