#pragma once #include #include #include #include #include #include "CreoManager.h" // 层级统计请求结构 struct HierarchyStatisticsRequest { std::string project_name; // 可选的项目名称,默认使用当前模型名 std::string subassembly_path; // 可选的子装配体路径,如 "top.asm/sub.asm" }; // 层级统计结果结构 struct HierarchyStatisticsResult { bool success = false; std::string message; std::string model_name; // 当前模型名称 std::string model_type; // 模型类型 (assembly/part) int total_levels = 0; // 总层级数 std::map level_statistics; // key: 层级号, value: 该层级的直接子节点数量 std::string analysis_time; // 分析时间 std::string error_message; }; // 层级统计分析器类 class HierarchyStatisticsAnalyzer { public: static HierarchyStatisticsAnalyzer& Instance(); // 执行层级统计分析 HierarchyStatisticsResult AnalyzeHierarchyStatistics(const HierarchyStatisticsRequest& request); private: HierarchyStatisticsAnalyzer() = default; ~HierarchyStatisticsAnalyzer() = default; // 禁止拷贝 HierarchyStatisticsAnalyzer(const HierarchyStatisticsAnalyzer&) = delete; HierarchyStatisticsAnalyzer& operator=(const HierarchyStatisticsAnalyzer&) = delete; // 递归分析装配体层级 void AnalyzeAssemblyLevel(wfcWAssembly_ptr assembly, int level, std::map& statistics, int& maxLevel); // 根据路径查找子装配体 wfcWAssembly_ptr FindSubassemblyByPath(wfcWAssembly_ptr root_assembly, const std::string& path, const std::string& model_name); // 获取当前时间字符串 std::string GetCurrentTimeString(); };