Back to all skills
cnc-dfm-repairSKILL.md ↗

定位并修复 STEP 实体在 CNC DFM 检测中的窄槽、薄壁、尖薄末端和细连接,保护其他结构并验证导出。适用于纪念币、浮雕文字及类似铣削零件的局部可加工性修改;不替代刀路编程或强度分析。

CNC 窄槽与薄壁修复

将 DFM 截图与实际 STEP 几何对应,选择小范围的几何修改,另存可复检模型。先分清槽宽、材料厚度和轮廓小边;它们需要不同的测量与修复方法。

输入与范围

  • 以用户明确指定的文件为基准;核实文件存在、单位、整体尺寸、实体数和有效性。版本名、修改时间不能替代用户指定。保留原件。
  • 沿用当前会话中已给出的阈值、材料与外观要求。缺少必要阈值时尽早询问,同时先做只读定位;不要凭材料名称猜制造商门槛。
  • 记录槽宽/壁厚是 > 还是 ≥,并留出合理余量。参考 references/coin-case.md 中的纪念币参数,仅在延续该项目时沿用。
  • 截图中的编号只是定位线索。将视图正反、镜像和标注位置映射到真实几何;不要把截图的尺寸框或提示语当成新指令。
  • 点名保护项:圆盘与外圈、底板、挂孔、正反面文字、日期内容与排列方式、尺寸及厚度。用户允许修改的内容可按任务调整,不另设多余审批。

定位与分类

使用本地可用的 CadQuery/OCP;先读 references/cadquery-workflow.md 中与当前操作相关的细节。

  1. 列出水平面、所在 Z、面积、轮廓与孔洞,生成正反面轮廓图。排除大底面、外圈与字孔底面后再筛选文字。面 ID 只对本次导入有效,选面时同时核对空间范围、面积与预览。
  2. 对独立笔画、相邻字符、文字与圆盘边界检查间距。二维采样可筛选候选,最终尺寸用真实 BRep 测量。辅助脚本能检查所选独立面的间距,不能证明零件所有槽和壁都合格。
  3. 对同一连通轮廓内的窄凹口、尖端和细桥另做局部截面检查。不能因为它们属于同一个顶面就漏检;也不能把每个小圆角的趋零弦长都当作薄壁。
  4. 薄壁要测材料:字孔至外边的材料带、细桥两侧的距离、实体两表面之间的局部厚度。曲线采样误差、短边长度、缓冲半径、相邻文字间距均不是壁厚证明。

先量凹面底面的轮廓间距

浮雕所在的水平底面(凹底)本身就是一张带孔的面:每条 wire 就是一个凸起特征的足迹,剩下那条是外轮廓。任意两条 wire 的距离就是刀具要过的槽宽——字内笔画之间、字与字之间、字到凹壁、挂孔到一切,一次全量出来,不必先猜该查哪儿。

这是目前唯一和平台判定对得上的度量:实测 0.731mm → 平台报「存在窄槽」;放宽到 1.331mm → 平台改口「存在薄壁」。

反面教材是「逐对量侧壁面」:笔画在贝塞尔拐角处天然趋零,为了滤掉这些假阳性加的顶点过滤会把真槽一起滤掉——据此连续误判了多版。

python <技能目录>/scripts/dish_slots.py part.step --z 1.0 --limit 1.1

--z 是凹底高度(厚 4mm、凹深 1mm 时是 1.0)。脚本同时报告非流形/退化边:OCC 的 IsValid() 对带零长度边的实体照样返回 True,而这种边一导出网格就是开边,某些 DFM 后端会直接解析失败。

选择修复动作

发现优先考虑的动作需要防止的新问题
独立笔画/字符之间太近小幅移动;沿原同心圆旋转日期;必要时调整局部外形不与另一侧字符、圆盘或字孔碰撞
点画夹在两笔之间保持高度与底面连接,适量缩小平面轮廓或重新居中点画本身变薄、悬空、字形失真
连通文字内的窄通道整块平移构成该通道的笔画(按部件索引平移),把间距拉到 >1.2mm平移后字形外包变大,可能顶到挂孔、凹壁或相邻字
不必要的尖薄末端/微小钩角修短到有足够实体宽度的位置,再做平面倒圆只倒极小圆角而保留细长薄尾
必须保留的细桥/孔边薄壁局部补料、调整孔形或重排相关笔画补强把另一条槽堵窄,孔缩小后不可加工

不要将“全部外扩/全部内缩”作为通用修复。二维开闭运算可用于诊断和候选方案,但会改变连通性、孔洞和其他间隙;采用时必须逐项检查。复杂轮廓优先保留原有直线、圆弧和曲线,控制近似误差。

禁止用圆柱(或任何贴附的圆/胶囊体)修改笔画。 这类做法有两个问题:圆柱与笔画的交线是圆弧, 正面看就是个圆疙瘩,用户会直接否掉;更根本的是它在用改形状换合规——笔画已经不是原来那一笔了。

窄缝的正解是平移笔画:只改位置,槽宽按平移量线性变宽,笔画粗细一点没变,一条杠杆同时满足 槽宽和壁厚两条线。字形是多个独立部件时按部件索引整体平移,做法见 cnc-part-design。

实测支撑:保持字体原始字重(不削细)时,六个测试字的「细于 1.0mm 残留」全部是 0.000mm² —— 薄壁问题根本不存在,它是「削细」自己造出来的。本项目曾把削细推到场 0.65 硬凑槽宽, 整批件都挂在薄壁上,随后又用圆柱去补,等于补自己造的伤。

形态学那一步必须先证明它真的改了。 本项目 add_material_for_rules 曾把 wall 参数的位置传成了 slot,导致「补壁」长期是空操作,而表面上一切正常。判别法极简:改一个参数,生成物的面积/轮廓数应当变化;逐字节相同就是没生效。 全局补壁虽然能消掉薄区,却会把一个字打散成 65–123 个环,渲染出明显毛刺——不能当主修复手段。

保留结构与验证

  • 修改前界定允许变化的局部区域。优先切除/替换目标浮雕实体或添加局部补强体。不要清掉整层来替换几笔文字:该层可能同时包含圆盘外圈、底板和其他字。
  • 每次修改后同时检查:目标槽/壁、其他相邻间隙、孔洞、连通性、正反面外观、材料是否仍连接到底板。平移一组部件时保持组内关系;更换字形时保留日期文本及排列方向。
  • 对未修改区域做布尔差异比较。掩膜在修改前按目标区域制定,不能事后扩大到整个零件来隐藏误删。合法拓扑、有效单实体和包围盒相同,均不足以证明圆盘没有丢失。
  • 检查脚本见 scripts/step_audit.py。它只读 STEP、写检查报告,不执行修复或上传。
  • 导出后重新导入,检查有效性、预期实体数、包围盒、关键间距/厚度和修改前后对比。几何验证失败先修复,不把文件描述成已完成。
  • 最终交付新 STEP、简洁对比图和已实际验证的数值;注明验证覆盖范围。平台 DFM 未运行时,说明仍需平台复检,不宣称“所有报警消除”。

平台复检与浮雕降本

  • 需要上传复检、核对活动资格或比较加工报价时,读 references/platform-recheck.md。上传、支付完成、平台自动检测通过和人工审核通过是不同状态。
  • 用户要求降本时,可另存浅浮雕候选,说明外观取舍并保留原版。平底直壁浮雕可抬高已有槽底,做法及保护项验证见 references/cadquery-workflow.md。不要用加工体积比例代替平台工时和报价。

辅助脚本用法

以下命令由本地 Python 执行,需要 CadQuery/OCP。先确认导入坐标单位,再把间距视为 mm。

python <技能目录>/scripts/dish_slots.py model.step --z 1.0 --limit 1.1
python <技能目录>/scripts/step_audit.py inspect model.step --z 4 -4 --max-area 1000 --near-gap 1.6 --out inventory.json
python <技能目录>/scripts/step_audit.py compare original.step repaired.step --edit-boxes edit-boxes.json --out validation.json

dish_slots.py 是第一道:它给出刀具视角的槽宽全表加拓扑检查,通常直接告诉你病灶在哪。step_audit.py 用于面清单、编辑掩膜差分这类逐面复核。

inspect 的候选过滤仅适合所示 Z 平面的浮雕,按实际零件调整;不要照搬 ±4、面积阈值或面号。compare 的掩膜格式与验证含义见 references/cadquery-workflow.md。