Skip to content

刀模坐标系与线型语义 ​

真源:packages/dieline/src/types.ts(数据模型 + 通用不变量)、packages/dieline/src/box-families.mjs(五族注册)及各族 .mjs(几何生成)、 packages/dieline/src/uv.ts(UV 口径)。本页是抄件。

当前二维刀模支持五族:四摇盖 rectangular、反插式 tuck_end、自锁底 auto_bottom、套筒 sleeve、邮寄盒 mailer。三维折叠仍限四边形摇盖族,当前按用户要求暂缓。

坐标系(全仓库唯一口径) ​

平面xy原点单位
展开图 / 画布 / 导出向右向下展开图外接框左上角(也就是胶舌的左边缘)mm
3D world(uv.ts 注释与折叠链测试)向右向上front 面 z = 0,盒体向 −z 延伸,观察者在 +z 看 frontmm
位图选区(assetRef.extraction.selection)向右向下参考图左上角px

约定:

  • mm 是唯一的工作单位,渲染层负责 mm→px(DEFAULT_PX_PER_MM = 4,docs/demo/scene.mjs 里的 PX = 4)。 packages/ 内禁止出现裸像素常量。
  • 面板多边形顶点顺序固定:左上起顺时针(types.ts 对 polygonMm 的注释),常规面板为 4 点;自锁底的指定底翼允许 4–32 点,3D 对非四边形显式拒绝。
  • validateDieline 允许 −0.001 的浮点容差判断面板是否越出外接框。

线型语义(lineKindSchema) ​

kind语义生成器是否产出渲染颜色 / 导出图层
cut模切(刀锋,切断)✔#d63a3a → DXF DIE_CUT(色号 1)
crease压线/折线(折痕,不切断)✔#239451,虚线 strokeDashArray [2·PX, 1·PX] → DXF CREASE(色号 3)
glue胶位/糊边(涂胶区,不切断不折)✔#2863bd → DXF GLUE(色号 5)
perf齿孔线/易撕线✘ 枚举里有,当前生成器不产出需要印厂工艺确认间距后才能用

与 ADR-0003 的措辞差异

docs/decisions/ADR-0003-dieline-3d-uv.md 写的是 cut | crease | glue | bleed。实现里的第 4 种是 perf, 出血(bleed)不是线型,而是 design.bleed 的四边 mm 数值 + auxKind: "bleed" 的辅助层语义。 偏差登记在 ADR 摘要与偏差。

数据模型 ​

dielineSchema(types.ts):

键类型约束
dielineId / boxTypestring生成器写入对应族的刀模 ID / 盒型标识
sheetMm{ width>0, height>0 }展开图外接尺寸 mm
panelsPanel[]≥1
edgesDielineEdge[]≥4
material{ name?, thicknessMm? }记录板材名称、厚度、规则来源与待确认事项;厚度参与端翼让位和内廓估算,不等于完整折放补偿

Panel:

键约束说明
panelId/^[a-z][a-z0-9_]{1,31}$/如 front、front_top、glue_flap
polygonMm长度 4–32 的点数组常规面板4点,非四边形只用于自锁底指定底翼
faceIndex非负整数,全表唯一每面板一个 3D mesh face;重复会导致贴图互相覆盖
uvRotateQuarter0…3面内 1/4 旋转;当前生成器恒为 0
mirrorUboolean当前恒为 false;出现 true 必须配文字方向测试
roleside | top | bottom | glue | tuck | dust | lock | hook各族按结构产出,锁底含锁片/侧钩片

DielineEdge:kind + from + to + panelId(折线连接两个面板时记主面板)。

通用不变量(validateDieline,返回错误数组,空=通过) ​

  1. panelId 不得重复。
  2. faceIndex 不得重复 —— 否则 2D→3D 贴图互相覆盖。
  3. 每个面板的每个顶点必须落在 sheetMm 外接框内(容差 1e-3)。
  4. 至少存在一条 cut 线 —— 否则无法模切。

出血与安全区默认值 ​

项默认真源当前状态
出血 bleed.top/right/bottom/left各 3 mmbleedSchema(packages/design-json/src/layers.ts)schema 默认值;验证版编辑器未画出血框(P2-01/P2-02 补齐)
安全区 safeAreaInsetMm5 mmdesign.ts 的 nonNegDefault()同上
导出是否包含刀线包含docs/demo/scene.mjs:aux 对象带 data-aux 一起进 SVG;DXF 按图层输出印厂若要"只有印刷内容"的 PDF 需人工去掉引导层(P4-02 之前没有按印厂切换的配置)

纸厚未补偿

生成器输出的展开尺寸是内空 + 折边的几何原型,没有按纸张厚度做折放(knock-down)补偿、 圆角半径和工艺缝隙。material.thicknessMm 只是元数据,不参与任何计算。 边界与后续归属见 能力边界。

下一步阅读 ​

交付前请核对文字、字体、结构与印厂要求,并保留确认版本。