# CLI-Anything FreeCAD：按尺寸约束生成带孔支架，改参数后核对 STEP 实体

## 执行范围

已运行FreeCAD 1.1.4原生Part内核，生成两种高度FCStd/STEP并重读STEP核对有效实体与体积；图形为真实实体网格阅读器，未调用CLI-Anything Agent模型。

## 输入与目标

有长宽厚、孔径与孔中心距离约束的原创支架尺寸单

交付：FCStd、STEP、尺寸对照和几何检查

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
python bracket.py
# 使用可导入FreeCAD/Part的Python环境
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **确定毫米尺寸**

原创尺寸为60×40×6mm底板，40mm背板，两孔半径3mm。孔心和板厚先固定，避免模型随意补孔或改变单位。

2. **调用原生实体**

在可导入FreeCAD/Part的环境新建文档。用真实box/fuse/cut生成实体，禁止仅画一张看似支架的图片当STEP成果。

3. **切出贯穿孔**

圆柱长度跨过底板上下表面，在(15,20)/(45,20)切孔。检查孔是否贯穿、是否意外切到背板。

4. **验证单一实体**

removeSplitter后核对isValid与Solids数量。原始参考为一个有效实体，包围盒高度46mm包含底板厚度。

5. **修改背板参数**

将背板高度从40改到55mm后重新生成形状。实际包围盒高度变61mm，体积同步增加，不只改文档属性标签。

6. **导出再重读取**

保存FCStd和STEP，再用Part.Shape.read重读STEP。两种版本均保持有效单实体，重读体积与源实体一致。

7. **移交可核验成果**

交付尺寸JSON、脚本、两套原生文件和网格预览。预览来自Part.tessellate实际几何，不能当作已测制造公差或工程强度。

## 来源

- https://raw.githubusercontent.com/HKUDS/CLI-Anything/main/freecad/agent-harness/FREECAD.md


## 原生工具与边界补充

使用能导入FreeCAD和Part的Python环境，作者为FreeCAD1.1.4的Part内核配合兼容Python3.11。原生Part::Box/MultiFuse/Cut保留参数链，修改BackPlate.Height后recompute。不要仅用普通Python画图替代内核。
