SolidWorks Fillet Chamfer CNC
先判定任务模式
圆角/倒角多的模型,主要风险是拓扑变化、错误选边和不可制造参数,不是 API 参数本身。
- 新建 CNC 安装座或验证参数时,先使用模板脚本的
--dry-run;计划通过后再连接 SolidWorks。 - 修改既有零件时,先读取 详细经验 的“既有模型选边”部分,不套用模板的固定期望边数。
- 用户要求可变半径、面圆角、full-round 或 setback 时,先运行本子技能的高级能力探测;SolidWorks 版本或输入拓扑不同于已验证样例时保持
pilot,不要跨版本直接宣称稳定。 - 多控制点、曲面组合和宽度-宽度倒角已经有 SW2026 SP1.1 独立真机证据,但换版本或换拓扑仍须复跑;保持线圆角已经跨 Python、C# PIA、SWBasic 和进程内非托管 C++ 复测,故障边界收敛在本机 SW2026 SP1.1 的
ISetHoldLines调用,而非 Python 单一语言限制。该构建必须保持pilot/blocked,不能退化成普通面圆角后声称成功。
模板入口
先做无 COM 预检:
python subskills\solidworks-fillet-chamfer-cnc\scripts\create_cnc_mount_template.py `
--dry-run `
--set base_corner_radius=6 `
--set chamfer_angle_deg=30 `
--output-dir C:\CADAutomationWorkbench\cnc_mount
确认 *_plan.json 中 validation.errors 为空、语义目标和 expected_edge_count 符合设计,再删除 --dry-run 执行原生建模。大量参数优先放进 JSON:
python subskills\solidworks-fillet-chamfer-cnc\scripts\create_cnc_mount_template.py `
--params-json subskills\solidworks-fillet-chamfer-cnc\examples\cnc_mount_precision_params.json `
--failure-policy strict `
--output-dir C:\CADAutomationWorkbench\cnc_mount
strict 只接受请求尺寸;progressive 按 100%/75%/50% 尝试。发生降级时必须在交付摘要中写明实际尺寸,不能仍声称精确满足原值。
不可跳过的门禁
- 原生建模前运行父技能
scripts/sw_preflight.py;--dry-run不需要 SolidWorks。 - 参数预检必须覆盖有限数值、圆角/倒角上限、孔槽碰撞、最小边壁、特征间净距、沉孔/口袋底壁和输出基名安全。
- 新建模板按“基础体 → 立角圆角 → 外轮廓倒角 → 孔槽/口袋 → 孔口倒角”执行;既有模型根据依赖关系决定顺序。
- 选边以几何签名和期望数量为证据。数量不符时停止,不用扩大坐标容差、
Edge1或屏幕点击猜边。 - 每个圆角/倒角必须在重建后从特征树回读;COM 返回非空不等于持久化成功。
- 生成后保存 SLDPRT、导出 STEP、运行
sw_review.run_review(),并人工查看等轴测和俯视预览。
高级圆角入口
先只读探测本机类型库,不启动 SolidWorks:
python subskills\solidworks-fillet-chamfer-cnc\scripts\verify_advanced_fillets.py `
--output-dir C:\CADAutomationWorkbench\advanced_fillet_probe
执行当前六项已通过的独立真机回归:
python subskills\solidworks-fillet-chamfer-cnc\scripts\verify_advanced_fillets.py `
--verify-solidworks `
--modes variable face surface_combo full_round setback width_width_chamfer `
--output-dir C:\CADAutomationWorkbench\advanced_fillet_verified
只有报告中的能力状态为 verified,且对应 SLDPRT、STEP、重开证据和审查报告都存在,才能声明该环境支持。当前在 SolidWorks 2026 SP1.1 验证的最小样例为:
- 单边端点可变半径 R2→R5,特征类型回读为
VarFillet。 - 同一条边 25%/50%/75% 三个中间控制点分别回读 R3/R6/R4;
GetControlPointRadiusAtIndex的位置值按百分数25/50/75解释。 - 两组相邻面的 R4 face fillet,
ISimpleFilletFeatureData2.Type=2。 - 平面—圆柱面组合的 R3 G2 面圆角,重开后
CurvatureContinuous=true。 - 三组面各 1 个面的 full-round,
ISimpleFilletFeatureData2.Type=3。 - 三边角 R3、逐边 setback 1 mm,回读 setback 顶点数为 1。
- C2/C4 距离-距离倒角,
IChamferFeatureData2.Type=2,两侧距离按 side0/1回读为2/4 mm。
setback 的距离数组必须显式封装为 VT_ARRAY | VT_R8。普通 Python tuple 可能不抛 COM 异常,却让 FeatureFillet 返回 None,不得把这种结果降级为普通圆角。
保持线模式使用投影分割线、两组面 mark 2/4 和保持线 mark 8,并要求 GetHoldLineCount=1。官方 ISetHoldLines 只支持 SolidWorks 进程内非托管 C++,所以脚本已提供 MSVC x64 DLL + SWBasic 主线程调度器;C# PIA 和 Python 路径保留作对照。在本机 SW2026 SP1.1 / Revision 34.1.1 中,Python 普通数组回读为 0、显式 SAFEARRAY 服务器故障,C#、SWBasic 和原生 C++ 也未得到可持久化的保持线,原生调用更在 ISetHoldLines 边界触发服务器故障。默认因此只返回结构化 blocked/known_server_fault,不会执行危险调用。
只有需要在隔离的自有 SolidWorks 实例中复测其它服务包时,才显式加入 --unsafe-native-hold-line;该开关可能令实例退出,不得用于已有未保存文档的会话。成功标准仍是创建特征后与重开后两次 GetHoldLineCount=1。
开源复杂案例回归
新增 MIT 许可的 CadQuery parametric-bracket-library/l_gusset 回归。该件包含互相垂直的两块安装板、三角加强筋和六个安装孔;SW2026 导入基线为 1 solid / 18 faces / 49 edges。在同一复杂实体上创建 20/40/60/80% 四个中间控制点可变半径圆角,以及 C0.8/C1.4 宽度-宽度倒角:
python subskills\solidworks-fillet-chamfer-cnc\scripts\verify_open_source_bracket.py `
--source C:\CADAutomationWorkbench\sources\l_gusset.step `
--source-commit 5b285130bff480cda282499e83604b295dd0aa4d `
--version 2026 `
--output-dir C:\CADAutomationWorkbench\opensource_l_gusset
只有固定提交、CadQuery 2.8.0 生成物的 SHA-256、复杂度门禁、四个控制点的百分比/半径、不等宽倒角两侧距离、处理后拓扑、重建、SLDPRT、STEP、重开和四视角审查全部通过,才标记 verified。输入 STEP 可按该仓库 README 用 CadQuery 2.8.0 生成;脚本不会在运行时执行未经锁定的网络下载。
原有 FreeCAD-library 复杂角支架继续作为第二个独立倒角回归:
复杂模型回归固定使用 FreeCAD-library 的 2020_corner_bracket-Corner.step,锁定提交、SHA-256 和 CC BY 3.0 署名;不使用会随主分支变化的裸链接:
python subskills\solidworks-fillet-chamfer-cnc\scripts\verify_open_source_complex_case.py `
--version 2026 `
--output-dir C:\CADAutomationWorkbench\opensource_corner_bracket
脚本按清单中的唯一端点/长度签名选中 24.041631 mm 斜边,真实施加 C0.2/C0.4 宽度-宽度倒角。只有下载哈希、源拓扑精确为 1 solid / 40 faces / 98 edges、倒角 FeatureData 读回、处理后 41 faces / 101 edges / 66 vertices 重开保持、SLDPRT/STEP 和四视角审查全部通过,案例才标记 verified。网络不可用时可复用已缓存文件,但仍必须重新计算 SHA-256。
CNC 几何默认值
- 减重口袋默认使用
rounded_slot,避免把不可加工的零半径内角当作成品;明确需要后工序清角时才使用rectangle并保留 DFM 警告。 - 定位孔、中心槽和减重口袋必须用同一参数源做二维包络检查。模板 v2 默认把定位孔布置在 Y 方向,避免旧布局与中心槽相交。
- 恒定半径圆角和角度倒角是通用稳定路径;多控制点可变半径、face/full-round/setback、平面—圆柱面 G2 组合和宽度-宽度倒角已有 SolidWorks 2026 SP1.1 最小真机回归,但应用到其它拓扑或版本时仍须重新运行能力脚本。复杂过渡必须记录 API、SolidWorks 版本、输入拓扑、重建结果和预览证据后才能升级能力等级。
详细的选边签名、失败语义、既有模型策略和扩展路线见 CNC 多圆角/倒角经验。
验证要求
每次完成后输出:
*.SLDPRT*.step*_parameters.json*_review_report.json*_isometric.bmp或转换后的 PNG
审查时至少检查:
evaluation.status是否为pass或可解释的warnexpected_outputs_exist是否为Truepreviews_not_blank是否为Truevalidation.errors是否为空treatment_evidence是否记录请求值、实际值、每次尝试和所选边签名feature_evidence.missing_names是否为空- 特征树是否包含预期的
Fillet/Chamfer/Cut特征