体检:一条命令看一份设计好不好做
拿到一份设计(自己的,或别人给的 Zemax .zmx),最先想知道的往往不是某张图,而是:按常规公差做出来能有几成合格、最怕哪一项、 玻璃买不买得到、有没有明显做不了的地方、还有没有余量。体检把这几件事串成一条命令,给一个 0–100 的总分和一份报告, 每个数都带证据 id。
lb checkup cooke.lens # 快速模式(报告卡)
lb checkup cooke.lens --mode thorough # 完整模式(报告)
lb checkup legacy.zmx --grade precision --vendor CDGM # 直接体检 Zemax 文件(在临时会话里导入,不写任何文件)
lb checkup cooke.lens --mode thorough --out reports/cooke-checkup # 同时写报告文件(个人基础版起)AI 经 MCP 调 checkup(不给 design 就体检当前打开的设计);跑得久,客户端超时短时加 background=true,job_status 里的 stage 写着在第几步。
体检做了什么
- 读入设计:当前设计、
.lens文件或.zmx文件。.zmx的导入同lb import-zmx(玻璃、solve 核对都一样), 但只在内存里做:不写.lens、不改你打开的设计。 - 风险(公差):设计里没写
tol行时,按--grade那一档在内存里套一套默认公差(同lb tolerance --template; 常规 / 精密 / 高精密,英文 commercial / precision / high;已经写了的 tol 行原样保留,模板只补没管着的),补偿器是后截距。- 灵敏度:每项公差单独取上下限、补偿后看判据(默认 RMS 弥散斑)变多少,排出最敏感的几项和各占多少;
- 蒙特卡洛:所有公差同时随机取值(正态、上下限 = ±2σ)做很多次,合格 = 补偿后的判据不超过名义值的 1.5 倍 (
--limit改成你给的值,与判据同单位;tol criterion mtf … min=写了就按它),合格的比例就是良率。 - 一句话结论,如「按常规公差约 80% 合格,最敏感的是面 3–4 元件偏心(y)(±0.1 mm 时 RMS 弥散斑 +4.3 µm,占各项影响的 30%)」。
- 玻璃:每种玻璃的供货状态(优选、标准、停产、特殊熔炼……)与相对价格,出处是设计实际取折射率的那份目录(同
lb materials); 再试着全部换成--vendor厂商(默认 CDGM)的等效牌号,看像质、镜片质量变多少(同lb glass-replace --dry-run,只换玻璃、不再优化)。 - 可制造性:装夹违例(穿模、边缘相碰)与透镜边厚 < 0.5 mm(同
lb verify末尾那两条)。个人基础版起另跑检验规则库 (同lb inspect,把体检算好的公差结果交给它,不重算)。 - 改进探索:同
lb improve——不改孔径、视场、波长和焦距,依次放开半径、厚度、试换玻璃(完整模式再加全局搜索),每一版都过 可制造性与探测光线的检查。没找到就说没找到:最好的一版评价函数降不到 2 % 时,结论是「没找到明显更好的」。 完整模式还会把找到的改进版按同一个合格界限再跑一遍蒙特卡洛:像质更好的一版不一定更好做,报告里两个良率并排。
两种模式
快速 fast(默认) | 完整 thorough | |
|---|---|---|
| 用途 | 报告卡:先看个大概 | 交出去的报告 |
| 蒙特卡洛 | 100 次 | 200 次 |
| 改进探索 | 放开半径 → 厚度 → 试换玻璃 | 再加全局搜索 |
| 改进版的良率 | 不算 | 算 |
| 总时间预算 | 40 秒 | 150 秒 |
时间预算(--seconds)只限改进探索:公差的次数是固定的(结果可复现),前面几步用完预算、剩不到 5 秒时就不做改进探索, 结果里写明「时间预算用完」,这一项不评分。同一份设计、同样的参数和种子(--seed),没撞上预算时结果逐位相同。 Cooke 三片式在一台工作站上快速模式约 20 秒、完整模式约 50 秒(第一次运行多几秒加载内核)。
评分怎么算
四项各自 0–100 分,按权重加权平均成总分:
| 项 | 权重 | 这一项的分 |
|---|---|---|
| 公差(良率) | 40 | 100 × 蒙特卡洛良率(算不出判据的试验算不合格) |
| 玻璃(供货) | 20 | 100 − 每种停产的玻璃 40、特殊熔炼 / 按需熔炼 / 询价的 15、目标厂商里找不到等效牌号的 10 |
| 可制造性(装夹与边厚) | 25 | 100 − 每处装夹违例 40、每片边厚 < 0.5 mm 的透镜 20 |
| 改进空间 | 15 | 100 − 改进探索找到的评价函数降幅(%,最多扣 50);降不到 2 %(没找到明显更好的)不扣 |
- 每项最低 0 分。总分 = Σ 权重 × 分 ÷ Σ 权重,四舍五入到整数;90 起「优秀」、75 起「良好」、60 起「一般」、以下「风险较高」。
- 没评上的项不进分母(例如时间预算不够没做改进探索、设计里全是模型玻璃),结果里写明为什么没评。
- 每一处扣分都列出来:扣几分、折合总分几分、对应哪条发现、证据 id。所有扣分折合总分加起来正好是 100 − 总分(四舍五入前)。
- 不进评分的:检验规则库(个人基础版起才运行,评分不随档位变)、验收规格
spec(达不达标用lb verify看)、 相对价格(各厂商按自己的参考玻璃定价,不能直接比,只报数)。 - 规则有修订号(结果里的
score.revision),改了规则修订号加一,旧的体检结果随之过期。
每个数从哪来
体检的每个数都带证据 id,与单独跑那条命令登记的 id 相同,可以复算核对:
| 数 | 同哪条命令 |
|---|---|
| 良率、判据的分布 | lb tolerance --template commercial --mode montecarlo --trials 100 --seed 0 |
| 最敏感的几项 | lb tolerance --template commercial |
| 玻璃替代前后的像质、质量、供货与价格 | lb glass-replace --vendor CDGM --dry-run |
| 起点与改进版的 RMS 弥散斑、RMS 波前、MTF | lb spot、lb rms-field --data wavefront、lb mtf |
可制造性与检验规则库各登记一份,体检整体另有一份(lb evidence <id> 查回全部数据)。
档位
- 免费:结论与数字——总分、四项的分与一句话、良率与最敏感的几项、玻璃与替代、装夹与边厚、改进探索每一步的数,全部照给。
- 个人基础版起:
- 报告文件(
--out):checkup.md(报告)、checkup.json(全部数据)、figures/(蒙特卡洛直方图、灵敏度图,带图框与证据 id)、design.lens(体检的那份设计)、improved.lens(找到改进版时)。档位不够时回诊断E-TIER,不算; - 打开改进版(
--improved,只对当前打开的设计):以补丁提出,先--dry-run看 diff。档位不够时照常给结论与数字, 只是不给补丁,回提示I-TIER-PATCH; - 检验规则库那一节:免费版只写「没有运行」,不报命中几条。
- 报告文件(
- 设计里写了自定补偿器(
comp行,个人基础版起的功能)时,免费版的体检按默认补偿器(后截距)算,结果里写明。
一个例子
Cooke 三片式(examples/cooke_triplet.lens,没有写公差),lb checkup cooke_triplet.lens --mode thorough:
总分 87 / 100(良好)
项 权重 分 结论
公差(良率) 40 80 按常规公差约 80% 合格,最敏感的是面 3–4 元件偏心(y)(±0.1 mm 时 RMS 弥散斑 +4.3 µm,占各项影响的 30%)
玻璃(供货) 20 100 2 种玻璃;都在供(优选);换成 CDGM:N-SK16 → H-ZK9B、F2 → H-F4,RMS 弥散斑最差 +0.043 µm、MTF@45/mm 最差 -0.004
可制造性(装夹与边厚) 25 100 装夹无违例,透镜边厚都不小于 0.5 mm
改进空间 15 64 找到更好的一版:评价函数低 36.2 %(RMS 弥散斑最差 17.73 → 10.68 µm);改进版按同一合格界限的良率 78%(起点 80%)- 良率:200 次里 161 次合格(判据不超过名义值 11.53 µm 的 1.5 倍 = 17.29 µm),统计误差约 ±3 个百分点; 最敏感的三项都是元件偏心(中间负透镜与后片)。
- 改进探索的最好一版把第 2 面从 −435.8 弯成 +36.2、两片冕牌换成 CDGM H-LAK4L——像质好了三分之一,但良率没变好 (77.5 % 对 80.5 %),报告里提醒打开前看一眼结构的变化。
- 扣分:公差 −19.5(折合总分 −7.8)、改进空间 −36.2(折合 −5.4)。
桌面端
主页首屏的大框「把你的 Zemax 文件拖进来」:拖进 .zmx / .lens(或点它选文件)就在后台跑快速体检,半分钟上下出报告卡——总分与评语、 风险的一句话、四项的分、良率与最敏感的几项、玻璃与国产替代、可制造性、改进版与起点的对比图、每处扣分与证据 id(点一下复制); 「完整体检」按完整模式再跑。.zmx 在临时目录里导入,旁边不写任何文件。
三样交付件个人基础版起:档位够时体检跑的时候就带上 --improved 和临时目录的 --out,所以「打开改进版」就是把补丁写进那个设计 (一步,可撤销)、「生成评审报告」就是把写好的报告文件复制到你选的文件夹、「导出 zmx」导出改进版——都不再算一遍。档位不够时按钮标锁、 下面一行说明,点了才看档位与购买,不会自己弹出来。详见 GUI 指南「体检」。

局限
- 多重结构(变焦等)、偏心 / 倾斜系统:公差与玻璃照做,改进探索不支持(写明原因、这一项不评分)。
- 合格界限默认是「名义值的 1.5 倍」:名义像质已经很差的设计,这个界限也宽;有明确指标时用
--limit。 - 报告文件现在是 Markdown + PNG 图;PDF 还没有。