#pragma once /** * @file cam_optimization.h * @brief CAM 综合优化 — 切屑减薄、车铣复合摆线、HSM高速加工、恒接触角铣削、刀具寿命管理 * * cam_advanced.h 提供高级加工策略,本模块在其之上提供面向效率与刀具保护的优化: * - chip_thinning_optimization — 切屑减薄优化,调整进给以维持恒定切屑厚度 * - trochoidal_turn_milling — 车铣复合摆线加工 * - high_speed_machining — HSM 高速加工策略(浅层大切宽) * - constant_engagement_milling — 恒接触角铣削,保持刀具啮合角恒定 * - tool_life_management — 刀具寿命管理,基于磨损模型预测剩余寿命 * * @ingroup core */ #include "vde/core/point.h" #include "vde/core/aabb.h" #include "vde/core/cam_toolpath.h" #include "vde/core/cam_strategies.h" #include "vde/core/cam_advanced.h" #include "vde/mesh/halfedge_mesh.h" #include #include #include #include namespace vde::brep { class BrepModel; } // namespace vde::brep namespace vde::core { using core::Point3D; using core::Vector3D; using core::AABB3D; // ═══════════════════════════════════════════════════════════════════════════ // 优化参数类型 // ═══════════════════════════════════════════════════════════════════════════ /// 高速加工 (HSM) 参数 struct HSMParams { double step_down = 0.5; ///< 每层切深 (mm) — HSM 通常浅层 double step_over = 4.0; ///< 横向步距 (mm) — HSM 大切宽 double feed_rate = 2000.0; ///< 进给速度 (mm/min) double spindle_rpm = 15000.0; ///< 主轴转速 (rpm) double safe_z = 15.0; ///< 安全高度 (mm) double stock_to_leave = 0.3; ///< 留量 (mm) double corner_radius = 2.0; ///< 拐角过渡半径 (mm) bool trochoidal_corners = true; ///< 拐角处是否使用摆线过渡 }; /// 恒接触角铣削参数 struct ConstantEngagementParams { double target_engagement = 45.0; ///< 目标啮合角 (度) double step_down = 0.8; ///< 每层切深 (mm) double feed_rate = 600.0; ///< 进给速度 (mm/min) double safe_z = 15.0; ///< 安全高度 (mm) double min_step_over = 0.3; ///< 最小横向步距 (mm) double max_step_over = 4.0; ///< 最大横向步距 (mm) double engagement_tolerance = 5.0; ///< 啮合角容差 (度) }; /// 刀具寿命管理参数 struct ToolLifeParams { double max_cutting_time_min = 60.0; ///< 最大切削时间 (分钟) double max_cutting_length_m = 500.0; ///< 最大切削距离 (米) double wear_coefficient = 1.0e-6; ///< 磨损系数 (mm³/N·m) double critical_flank_wear = 0.3; ///< 临界后刀面磨损 (mm) double spindle_speed_factor = 1.2; ///< 主轴转速修正系数 bool enable_adaptive_feed = true; ///< 是否启用自适应进给降级 }; /// 刀具寿命预估结果 struct ToolLifeResult { double estimated_life_min = 0.0; ///< 预估剩余寿命 (分钟) double accumulated_wear_mm = 0.0; ///< 累计磨损量 (mm) double material_removed_mm3 = 0.0; ///< 已切除材料体积 (mm³) double current_flank_wear = 0.0; ///< 当前后刀面磨损 (mm) bool needs_replacement = false;///< 是否需要更换刀具 double recommended_feed_scale = 1.0; ///< 推荐的进给缩放系数 std::string warning_message; ///< 警告消息 }; /// 车铣复合摆线参数 struct TurnMillParams { double stock_diameter = 0.0; ///< 毛坯直径 (mm),0 表示从模型推测 double step_down = 1.0; ///< 每层切深 (mm) double trochoid_radius = 2.5; ///< 摆线圈半径 (mm) double step_forward = 1.0; ///< 每圈前进量 (mm) double feed_rate = 500.0; ///< 进给速度 (mm/min) double spindle_rpm = 8000.0; ///< 铣主轴转速 (rpm) double turning_rpm = 500.0; ///< 车主轴转速 (rpm) double safe_z = 20.0; ///< 安全高度 (mm) bool sync_axes = true; ///< C/Y 轴同步 }; // ═══════════════════════════════════════════════════════════════════════════ // CAM 优化函数 // ═══════════════════════════════════════════════════════════════════════════ /// 切屑减薄优化 (Chip Thinning Optimization) /// /// 当径向切削深度小于刀具半径时,实际切屑厚度小于设定的每齿进给量。 /// 此函数调整进给率以补偿切屑减薄效应,维持恒定的实际切屑厚度, /// 避免切削过薄导致刀具摩擦而非切削。 /// /// 公式: f_adj = f_nominal × (D / (2 × √(ae×(D−ae)))) 当 ae < D/2 /// /// @param toolpath 原始刀路(进给率为名义值) /// @param tool 使用的刀具 /// @return 进给补偿后的刀路 /// /// @ingroup core [[nodiscard]] Toolpath chip_thinning_optimization( const Toolpath& toolpath, const Tool& tool); /// 车铣复合摆线加工 (Trochoidal Turn-Milling) /// /// 在车铣复合机床上使用铣刀对旋转工件进行摆线切削。 /// 工件旋转(C 轴)提供车削运动,铣刀沿径向和轴向做摆线切入。 /// 适用于轴类零件的深槽、偏心特征等。 /// /// 策略: /// 1. 工件以 turning_rpm 旋转 /// 2. 铣刀沿径向做摆线切入(trochoid_radius / step_forward) /// 3. 轴向分层推进(step_down) /// /// @param body B-Rep 实体模型 /// @param tool 铣刀参数 /// @param params 车铣复合参数 /// @return 车铣复合刀路 /// /// @ingroup core [[nodiscard]] Toolpath trochoidal_turn_milling( const brep::BrepModel& body, const Tool& tool, const TurnMillParams& params = TurnMillParams{}); /// 高速加工 (High-Speed Machining) /// /// 采用浅层大切宽策略,配合拐角摆线过渡以维持恒定切削负载。 /// 不同于传统粗加工的重切削,HSM 利用高主轴转速和快速进给, /// 以"高速轻切"的方式实现更高的材料去除率。 /// /// 特点: /// - 浅切深 (step_down ~0.5mm),大切宽 (step_over ~4mm) /// - 拐角自动摆线过渡,避免负载突变 /// - 更高进给率 (通常 >2000 mm/min) /// - 平滑的刀路轨迹减少加减速 /// /// @param toolpath 原始刀路(作基础路径参考) /// @param params HSM 参数 /// @return 优化后的高速刀路 /// /// @ingroup core [[nodiscard]] Toolpath high_speed_machining( const Toolpath& toolpath, const HSMParams& params); /// 恒接触角铣削 (Constant Engagement Milling) /// /// 在加工过程中动态调整横向步距,使刀具与材料的啮合角始终保持恒定。 /// 恒定啮合角 = 恒定切削力 = 刀具负载稳定 → 延长刀具寿命、提高表面质量。 /// /// 在进入角落或狭窄区域时减小步距,在开放区域时增大步距。 /// /// @param body B-Rep 实体模型 /// @param tool 使用的刀具 /// @param params 恒接触角参数 /// @return 恒接触角刀路 /// /// @ingroup core [[nodiscard]] Toolpath constant_engagement_milling( const brep::BrepModel& body, const Tool& tool, const ConstantEngagementParams& params = ConstantEngagementParams{}); /// 刀具寿命管理 (Tool Life Management) /// /// 基于 Taylor 刀具寿命公式和累积磨损模型,预测刀具的剩余寿命, /// 并在需要时建议降低进给率以延长刀具寿命至完成当前任务。 /// /// Taylor 公式: Vc × T^n = C (Vc = 切削速度,T = 刀具寿命,n, C 为材料常数) /// /// @param tool 当前刀具 /// @param material 工件材料属性 /// @param params 刀具寿命管理参数 /// @return 刀具寿命预估结果(包含磨损量和建议进给修正) /// /// @ingroup core [[nodiscard]] ToolLifeResult tool_life_management( const Tool& tool, const Material& material, const ToolLifeParams& params = ToolLifeParams{}); } // namespace vde::core