5.8 KiB
5.8 KiB
2026-10-04 工作日志
J3(M3)电机前端"围挡":只切敞口那一圈(最终方案)
用户反馈(配图,第四次提"围挡"): "我又有重新更改,改动文件记得重新读取,然后这里电机的另一头也有围挡,需要删除" → 上一轮修的是尾端承压面(SEAT_R=35),这次是电机另一头(前端)。 中途两次纠正:
- "切太猛了,下面整个切了我怎么固定电机,只切我圈起来的一点"
- "只切一圈围挡,不切整个面"
定位(先证后动,这次做对的地方)
- 颜色比值锁零件:截图里 B/G≈0.73 = P05 大臂旋转座(0x059669 翠绿), 环内青色盘 B/G≈1.00 = P06 大臂骨架(0x0d9488)。在渲染图上实测这两个比值确实 分别落在 0.7 / 1.0 两簇,映射成立。
- 颜色 + 结构(P05 围着 P06 的 J3 凸台、Ø37 孔 ≈ 0.53×外径)⇒ 唯一可能是 J3 关节 (P05 与 P06 全机唯一交界面,Z384~390)。
- 沿 J3 轴逐 z / 逐方位扫"首个材料半径"(
BRepClass3d_SolidClassifier),实测:- P05:
Z389.0~395.5是 r30.25~35.0 的前端定位环(6mm 高环墙) - P05:
Z384.0~389.5是 R35/Ø37 前端压盖(4×M3x8 BCD55) - P06:
Z=383.0毂面 + R17.8 凸台顶到 Z=390.05(穿过压盖 Ø37 孔) ⇒ 环墙 + Ø70 压盖把 M3 前端盖(Ø60.3)连同凸台围在中间 = 用户说的"围挡"。
- P05:
我走的两条弯路(重点教训)
弯路 1:整个前端都切掉(用户当场驳回:"下面整个切了我怎么固定电机")
把 z_bot 389→395 + 删定位环 + 删压盖 + P06 毂面 383→388.5。后果:M3 退回
"仅后端板 4×M3x10 单面锁死",电机前端失去支撑面。
教训:先问清楚要删的是哪个特征、哪一圈,不要把"围挡"理解成"整个前端端部"。
弯路 2:整圈削到与电机齐平(R35→R31.8)(自测就没过)
- 这圈壁与第 3 步 Loft 在
X=±35处与 Ø70 柱面相切(退化的切向楔形), 整圈切完两片楔形脱空 → 实测 1.32mm³ 孤立碎块,P05 变成 2 个实体 ✗ (把切环外半径放到 44 消掉碎块,则会在背脊下端开一个 6.5mm 深的缺口,也不能接受) - 压盖根部只有 0.5mm 熔接带(CLAMP_ROOT),环削到 1.55mm 宽后连接面 从 2.37mm² 掉到 0.78mm² → 4×M3x8 的夹紧力会把压盖从本体上拉下来 ✗
最终方案:只切敞口(-Y)那一圈
新增开关 arm_model.M3_FENCE_OPEN_CUT = True,在第 12 步熔接压盖之后加一刀
盒切,Y 界限与第 6 步 cut_open 完全一致(Y_AXIS-40 .. Y_AXIS+3),Z 388.9~395.6:
- 敞口(-Y)半圈从 Z=395.5 一路开到压盖背面 Z=389 → 用户圈的那一圈围挡消失
- 背脊(+Y)侧整圈定位环保留:继续定位 M3 前端盖(内孔 r30.25 vs 前端盖 Ø60.3, 单边 0.10mm),并作为 R35 压盖唯一且足够强的支撑/熔接面(4.75mm 宽 × 0.5mm 熔接带)
- 压盖本体 / Ø37 让位孔 / 4×M3x8 沉孔 / 腔口下沿 z_bot=389 全部不动
- 附带好处:盒切把 Loft 与柱面相切的那两片楔形一起带走(楔形在 Y_AXIS 附近 < Y_AXIS+3)→ 不会出现孤立碎块,单实体天然保持
- 同步回退了弯路 1 造成的所有连带改动:S12 恢复 16 颗(
screw_mesh.py/docs/screws.json)、P06 毂面回到 383.0、凸台回到 65.0、README 全部改写
验证(全部通过)
- P05 solids=1 ✓ 体积 154.8 → 151.6 cm³(只少 3.2) Z 384.0..525.0(压盖与腔口都在)
- 逐方位剖面(
scratch/check_ring_flush.py):Z384388.5 八个方位全是 r18.535.0 (压盖整圈完好);Z≥389 只在 225°/270°/315° 有料(背脊侧环墙保留), 0°~180°(敞口侧)已清空 ✓✓ - 全量重建:13/13 单实体 ✓、8/8 静态干涉零 ✓(含新增的 P05×P06 一对)
motor_tol_check.py5 关节 × ±2mm 共 15 组 0.0mm³、面压间隙 0.0 ✓verify_3mf.py12/12 通过(EXPECT 表里 P05 件高原本写 136.0,是 2026-10-03 加压盖 之前的老值,改回 141.0)- STEP/STL/3MF 重导 ✓、螺钉实例 93 颗(S12:16)✓、查看器 + 可达包络重打包 ✓
sweep_v2.py全行程重扫:travel.json 与改前逐字节一致(J2 −105…+9、J4 −111…+16、 J5 −93…+34、J1/J3/J6 整周)✓- 渲染确认:
docs/shots/m3_front_open_after.png(隐藏电机、从敞口侧看进去, 围挡已无、压盖面与 4 颗 S12 螺钉都在)、m3_front_assembled_after.png
顺带修掉的两个工具 bug(非本次需求,但一直让构建不干净)
scratch/gen_env_mesh.py的包络自证断言是假失败:网格 x 从xs.min()起按np.arange(step_x=8)对齐,最后一格最多比真极值短一个步长(实测差 6.46mm), 而断言写的是abs(max-x_fwd) < 1.0→ 包络注不进web/mesh_arm.json, 查看器里"可达包络"整个消失。已改为"不得超出、且至多少一个步长"。src/shot.py的take_shot先os.remove旧图,在带 safe-delete 垫片的环境里 会把"删到回收站"的失败抛出来、打断整轮渲染;Edge 的--screenshot本来就覆盖, 已删掉这次删除。
方法论(第四次"围挡"事件的总结)
"围挡"这类"看着多余的一圈料"几乎总是某个半径/高度取值的必然几何,不是残留:
- 尾端:承压面段腔口半径
SEAT_R< 外壁 R35 → 环墙必然存在(1536.9mm³) - 前端:定位环 6mm 高 + R35 压盖比电机 Ø63.6 凸 3.2mm → 环墙+凸缘必然围住前端盖 两次的正确解法都不是"多切一点",而是改那个取值;而且改动前要先问清楚 删的是哪一圈 —— 删整圈会同时删掉压盖唯一的支撑面。