照片 → FreeCAD 三维模型
本技能把"用户给实物照片 → 在 FreeCAD 里重建数模 → 渲染三视图与照片对比 → 按确认迭代"的全流程标准化。配套脚本:
scripts/photo_grid_crop.py—— 照片像素网格标定 + 区域裁剪放大(照片解析阶段)scripts/render_views.py—— FreeCAD 模型着色多视图渲染 + 照片并排对比 + GB 三视图排布(对比阶段)
Phase 0:前置检查(缺一不可,先做)
- 视觉能力:确认当前会话模型支持图片输入。纯文本模型(如 deepseek-v4-flash)调用 Read 读图会报
does not support reading images,子代理同样返回VISION_UNAVAILABLE。若不支持:直接请用户在模型选择器切换多模态模型(如 GLM 系),不要尝试用代码硬解析照片语义。 - 用户已给尺寸优先:请用户先给关键实测尺寸(游标卡尺值),照片只用于拓扑与相对位置。绝对像素测量不可靠(透视畸变),只允许用"比例 × 用户尺寸"推算其余尺寸。
- 输出目录约定:与用户确认全部产物(脚本/STEP/FCStd/渲染图)写入哪个目录,脚本内用绝对路径。
Phase 1:照片解析(看懂结构再动手)
- 先整图 Read 一遍,建立总体印象(什么设备、大致姿态、视图标签含义)。
- 对话中显示的图片是降采样版,直接估像素坐标会系统性偏小(本机约 ×1.58)。正确做法:运行
scripts/photo_grid_crop.py在原始分辨率图上叠加每 100px 的带标注网格,输出网格版;再 Read 网格版,按网格标注的真实坐标指定裁剪框。 - 对关键部位逐个裁剪放大(2.5–3.5×,LANCZOS + 轻度对比度/锐化),Read 确认:
- 叠片铁芯的层叠方向(条纹走向 → 层叠轴是否沿轴线)
- 线包/绕组的轴线指向(端面 45×45 方块 = 轴线指向镜头;圆柱侧影 = 轴线在像面内)
- 轴承座/端盖与铁芯端面的贴合关系、轴的台阶与蜗杆、出线位置 - 用遮挡关系反推每个照片的拍摄方位(见 Phase 3 的配对纪律),写成带编号的假设清单(A1、A2…)交给用户确认。
- 照片无法消歧的尺寸,明确列为"待确认",不要静默编造。
Phase 2:参数化建模 + 自校验
- 单个建型脚本,全部尺寸集中在文件头参数区,便于后续一键改参重出。
- 常用几何助手:圆角方柱 =
Part.makeBox+ 仅对竖直棱makeFillet;圆柱/圆管用makeCylinder+cut。 - 执行通道用 headless(详见 references/pitfalls.md 的 freecadcmd 四条铁律)。跑完必做三项校验并写入结果文件:
-Shape.Volume对比解析值(圆角件允许差值 = 圆角去除量)
-BoundBox对比设计包络
- 两两part.common()干涉检查(体素级误装会在这里暴露) - 产物版本化命名(FanMotor_v2 / v3…),不覆盖旧版;STEP(交付)+ FCStd(参数源)+ 脚本 + verify 文本同目录输出。
Phase 3:渲染三视图与照片对比
- 不要用 TechDraw HLR:headless 下
projectEx对 Compound 几乎不返回边。用scripts/render_views.py(自写 numpy z-buffer 着色渲染,按零件上色,与照片观感一致,遮挡正确)。 - 渲染约定:
view_dir= 相机→场景方向;屏幕右方向 =cross(view_dir, up);写视图名时注明"相机在哪个方位",不要只写 +Z/-Z(极易把"从 +Z 看"标成"+Z 视图")。 - 视图配对纪律(本技能最重要的经验):把每张照片与渲染视图配对前,先用遮挡逻辑推理照片方位——
- 某零件在照片里呈端面(方块/圆)→ 其轴线垂直于拍摄方向;
- 完全看不见 → 轴线沿拍摄方向且被别的零件挡住;
- 侧影完整可见 → 轴线在像面内且零件伸出主体轮廓之外。
- 主/俯不一定是镜像对!可能是绕轴旋转 90° 的两个方位(例:主视=线圈端面朝左,俯视=线圈藏于铁芯正后方)。逐张推理,不要批量猜。 - 轴向端面照片分不清哪端时,用显著特征定端(如蜗杆端、台阶轴端),再定另一端。
- 照片是斜俯拍的,与端正交渲染天然存在左右/上下镜像差:先按遮挡推理定方位,再用镜像调整对齐;横版照片注意旋转方向(rotate 90 与 270 结果互为镜像)。
- 输出:每张照片一张"左照片 | 右渲染"并排对比图;另出一张 GB 第一角三视图排布(主视图左上、俯视图在主正下方、左视图在主右方,带对齐线与中文标签)——脚本的 SHEET 功能自动生成。
- 对比结论必须分"✓ 一致 / ✗ 不一致(按重要性排序)+ 拟修改方案"两块呈现,经用户确认后再改模型;确认意见要逐条落实(用户砍掉零件就真的删干净)。
Phase 4:迭代
改参数 → 重跑建型(校验)→ 重跑渲染(配对不变)→ 重新对比 → 等确认。每轮保留版本号,渲染图与对比图同步更新版本后缀。
经验教训速查
完整环境坑位清单见 references/pitfalls.md(freecadcmd 四条铁律、TechDraw 不可用、降采样坐标、二进制日志、uv 环境损坏、MCP 通道要点)。