Que fait 纪念展示板(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 图必须真的贴给用户看(正+背两张),不能只说"已经渲染好了"。