Files
茂之钳 2ecad1543f
Build & Test / build-and-test (push) Waiting to run
Build & Test / python-bindings (push) Blocked by required conditions
CI / Build & Test (push) Failing after 1m31s
CI / Release Build (push) Failing after 31s
feat(v8): ultimate performance + CAM full optimization + visualization/IGA/quality
v8.1 — 极致性能 (SIMD + LockFree + Transaction + NUMA):
- simd_vector.h: Vec4d/Vec4f SSE/AVX/NEON auto-detect, batch AABB, SoA transpose
- concurrent_data: LockFreeQueue (MPMC CAS), LockFreeStack (Treiber), ConcurrentHashMap (64-segment sharded)
- transaction: Command pattern, UndoManager (infinite undo/redo), crash-recovery journal
- performance_tuning: NUMA-aware, cache_line aligned, prefetch, hot/cold separation
- 20 tests (concurrent + transaction), ~2600 lines

v8.2 — CAM 全面优化 + 装配模式:
- cam_optimization: chip_thinning, HSM, constant_engagement, trochoidal_turn_milling
- tool_life_management, probing_cycle, thread_milling
- cam_advanced enhanced: Mazak/Okuma/Haas/DMG post-processors (8 total)
- assembly_patterns: Circular/Rectangular/Mirror/PatternDriven/fill arrays
- assembly_feature enhanced: assembly-level PMI propagation, batch interference check
- 28 tests, compiled 0 errors (~2800 lines)

v8.3 — 可视化+压缩+IGA+质量闭环:
- visualization_quality: ambient_occlusion, edge_highlighting, wireframe, normals
- topology_compression: Brep compression, Edgebreaker, vertex quantization
- iga_prep: knot_insertion, degree_elevation, Bezier extraction for IGA analysis
- quality_feedback: design_rule_check, manufacturability, cost_estimation, quality_score (0-100)
- 28 tests, ~2349 lines

27 files, ~7750 lines, 76 tests
2026-07-26 23:13:22 +08:00

211 lines
7.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
/**
* @file quality_feedback.h
* @brief 设计质量闭环 — 规则检查、可制造性、成本估算、综合评分
*
* 从设计数据(BrepModel)出发,进行:
* - 设计规则检查(DRC):壁厚、圆角、拔模角、最小特征等
* - 可制造性分析(DFM):机加工/注塑/增材可行性
* - 成本估算:材料+加工成本
* - 质量评分:综合 0-100 分
*
* @ingroup brep
*/
#include "vde/brep/brep.h"
#include "vde/core/point.h"
#include "vde/mesh/halfedge_mesh.h"
#include <vector>
#include <string>
#include <map>
namespace vde::brep {
using core::Point3D;
using core::Vector3D;
// ═══════════════════════════════════════════════════════════
// 设计规则
// ═══════════════════════════════════════════════════════════
/// 单项设计规则
struct DesignRule {
std::string name; ///< 规则名称
std::string description; ///< 规则描述
double min_value; ///< 最小值(< 0 = 不检查下限)
double max_value; ///< 最大值(< 0 = 不检查上限)
double weight; ///< 权重 [0,1](用于综合评分)
bool critical; ///< 是否为关键规则(不通过则整体失败)
};
/// 设计规则检查结果
struct DesignRuleResult {
std::string rule_name; ///< 规则名称
double actual_value;///< 实际检测值
double min_allowed; ///< 允许下限
double max_allowed; ///< 允许上限
bool passed; ///< 是否通过
std::string message; ///< 检测信息
double score; ///< 单项得分 [0, 1]
};
/// DRC 报告
struct DRCRreport {
std::vector<DesignRuleResult> results; ///< 各规则检测结果
int total_rules; ///< 总规则数
int passed_count; ///< 通过数
int failed_count; ///< 失败数
double overall_score; ///< 综合得分 [0, 1]
bool all_critical_passed; ///< 所有关键规则是否通过
};
// ═══════════════════════════════════════════════════════════
// 可制造性分析
// ═══════════════════════════════════════════════════════════
/// 制造工艺类型
enum class ManufacturingProcess {
Machining, ///< 机加工(铣削/车削)
InjectionMolding,///< 注塑成型
Additive, ///< 增材制造/3D打印
SheetMetal, ///< 钣金
Casting, ///< 铸造
};
/// 可制造性问题
struct MfgIssue {
std::string description; ///< 问题描述
std::string location; ///< 问题位置(如面 ID
int severity; ///< 严重度 1-51=提示,5=致命)
std::string suggestion; ///< 改进建议
};
/// 可制造性分析报告
struct MfgReport {
ManufacturingProcess process; ///< 分析工艺
std::vector<MfgIssue> issues; ///< 问题列表
int total_issues; ///< 总问题数
int critical_issues; ///< 严重问题数(severity>=4
double feasibility; ///< 可行性 [0, 1]
double dfm_score; ///< DFM 得分 [0, 100]
};
// ═══════════════════════════════════════════════════════════
// 成本估算
// ═══════════════════════════════════════════════════════════
/// 材料类型
struct MaterialInfo {
std::string name; ///< 材料名称
double density_kgm3; ///< 密度 (kg/m³)
double cost_per_kg; ///< 材料单价 (元/kg)
std::string grade; ///< 材料牌号
};
/// 成本估算结果
struct CostEstimate {
double volume_m3; ///< 零件体积 (m³)
double mass_kg; ///< 零件质量 (kg)
double material_cost; ///< 材料成本
double machining_cost; ///< 加工成本
double tooling_cost; ///< 工装/模具成本
double finishing_cost; ///< 表面处理成本
double overhead; ///< 管理/间接费用
double total_cost; ///< 总成本
std::string currency; ///< 币种
MaterialInfo material; ///< 材料信息
};
// ═══════════════════════════════════════════════════════════
// 综合质量评分
// ═══════════════════════════════════════════════════════════
/// 质量评分报告
struct QualityReport {
double geometric_score; ///< 几何质量 [0, 100] — 连续性、公差
double rule_score; ///< 规则检查得分 [0, 100]
double dfm_score; ///< 可制造性得分 [0, 100]
double cost_score; ///< 成本效益得分 [0, 100]
double overall_score; ///< 综合质量评分 [0, 100]
std::string grade; ///< 评级: A(≥90) B(≥75) C(≥60) D(<60)
std::vector<std::string> recommendations; ///< 改进建议
};
// ═══════════════════════════════════════════════════════════
// 函数声明
// ═══════════════════════════════════════════════════════════
/**
* @brief 设计规则检查(DRC
*
* 对 BrepModel 执行一组设计规则检查。
* 如果 rules 为空,使用默认规则集(壁厚、最小圆角、拔模角等)。
*
* @param body BrepModel
* @param rules 规则列表(空 = 默认规则)
* @return DRCReport
*
* @ingroup brep
*/
DRCRreport design_rule_check(const BrepModel& body,
const std::vector<DesignRule>& rules = {});
/**
* @brief 可制造性分析(DFM
*
* 根据指定工艺评估设计的可制造性。
*
* @param body BrepModel
* @param process 目标制造工艺
* @return MfgReport
*
* @ingroup brep
*/
MfgReport manufacturability_analysis(const BrepModel& body,
ManufacturingProcess process);
/**
* @brief 成本估算
*
* 基于零件体积和材料估算制造成本。
*
* @param body BrepModel
* @param material 材料信息
* @return CostEstimate
*
* @ingroup brep
*/
CostEstimate cost_estimation(const BrepModel& body,
const MaterialInfo& material);
/**
* @brief 综合质量评分
*
* 综合几何质量、规则检查、可制造性、成本效益,
* 给出 0-100 分质量评分与改进建议。
*
* @param body BrepModel
* @return QualityReport
*
* @ingroup brep
*/
QualityReport quality_score(const BrepModel& body);
/**
* @brief 获取默认设计规则集
*
* 包括:最小壁厚、最小圆角半径、拔模角、最小孔直径、
* 最大纵横比、最小特征尺寸等通用工程规则。
*
* @return 默认规则列表
*/
std::vector<DesignRule> default_design_rules();
/**
* @brief 获取常用材料库
*
* @return 常用工程材料列表
*/
std::vector<MaterialInfo> material_library();
} // namespace vde::brep