系统里有一张表,一行一个零件,一列一个口径:板厚、折弯道数、孔数、展开毛坯、 切割总周长、估重。传进来的却不全是钣金件——铣削件、回转体、铸件都会混在同一个 压缩包里。
那么问题来了:一件车出来的轴,它的「折弯道数」该填什么?
填 0 是错的
0 是一个值。它会被求和、会被排序、会被筛选。在一列折弯道数里填 0,读的人 得到的信息是「这是一块没有折弯的钣金」——而事实是「这个口径对它根本不成立」。
这两句话导出到 Excel 之后长得一模一样,但它们会导向完全不同的决策。前者意味着 可以直接下料开切;后者意味着这件压根不该走钣金工艺路线。
三种"没数"要分开说
我们在数据层就把它们分成三类,一路带到界面和导出:
NA——这个口径对这件不适用(非钣金件的板厚 / 折弯 / 毛坯);None——没有值(还没解析,或该件确实没有这一项);0——确实是 0。
界面上,「不适用」的格子是一块灰色斜纹底加浅色小字,一眼就和有数的格子区分 开;排序时它和"没值"一样沉底,不会插在数值中间冒充一个很小的数。导出到 Excel 时它是文字「不适用」而不是空单元格——空单元格在求和时是 0。
非钣金件也不空手而归
区分开之后,剩下的问题是:那这一行还剩什么?
答案是通用几何事实照给:类型判断(棱柱类 / 回转体 / 铸件)与判断依据、 外形尺寸、孔与凸台清单、体积与估重。这些量对任何实体都成立,和工艺路线无关。
于是同一张表里,钣金件给钣金的数,非钣金件给几何的数,谁也不冒充谁。
一条更一般的纪律
这件事的教训比它本身大:当一个量在某个上下文里没有定义时,不要找一个"看起来 无害"的值去填它。
无害的填充值不存在。0 会被求和,空串会被当成未填写,-1 会被当成有效数字画进图表。 唯一诚实的做法是让"没有定义"成为一个能被下游识别、也能被下游拒绝的状态。
同样的道理在别处也用:板厚超出支持区间(0.3–12 mm)时,我们宁可判 not_sheet 并写清"测得平行面间距 2.80 mm,未通过薄板性校验",也不报一个能被误用的板厚。