""" 简单测试分模算法改进 """ import sys from pathlib import Path # 添加项目根目录到路径 project_root = Path(__file__).parent.parent / "src" sys.path.insert(0, str(project_root)) def test_basic(): """测试基本功能""" print("\n" + "="*60) print("测试分模算法改进") print("="*60) try: from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox from core.mold_generator import MoldCavityGenerator from core.ai_mold_assistant import AIPartingSurfaceDetector, AIDraftAnalyzer print("✓ 模块导入成功") # 创建测试形状 print("\n1. 创建测试长方体 (100x80x50)") box = BRepPrimAPI_MakeBox(100, 80, 50).Shape() print(" ✓ 长方体创建成功") # 创建模具生成器 print("\n2. 创建模具生成器") generator = MoldCavityGenerator( shrinkage_rate=0.005, draft_angle=2.0 ) print(" ✓ 模具生成器初始化成功") # 测试 AI 接口 print("\n3. 测试 AI 模型接口") parting_detector = AIPartingSurfaceDetector() draft_analyzer = AIDraftAnalyzer() generator.set_ai_model( parting_detector=parting_detector, draft_analyzer=draft_analyzer ) print(f" ✓ AI 模型接口已设置") print(f" - 分型面检测器:{generator.ai_parting_detector is not None}") print(f" - 拔模分析器:{generator.ai_draft_analyzer is not None}") # 生成分模 print("\n4. 生成分模") result = generator.generate_mold_cavities(box) print(f" ✓ 分模成功") print(f" - 产品体积:{result['analysis']['volume']:.2f} mm³") print(f" - 产品重量:{generator._calculate_product_weight(result['analysis'])}") print(f" - 分型线点数:{len(result['parting_line'])}") # 检查分型线 parting_line_length = generator._calculate_parting_line_length(result['parting_line']) print(f" - 分型线长度:{parting_line_length:.2f} mm") if len(result['parting_line']) > 4: print(f" ✓ 使用真实几何计算分型线") else: print(f" ⚠ 使用简化分型线") # 生成详细 JSON print("\n5. 生成详细型腔数据") detailed_json = generator.generate_detailed_cavity_json(result) print(f" ✓ JSON 生成成功") print(f" - 型腔顶点数:{detailed_json['mold_cavities']['cavity']['vertex_count']}") print(f" - 型芯顶点数:{detailed_json['mold_cavities']['core']['vertex_count']}") print(f" - 收缩率:{detailed_json['metadata']['shrinkage_rate']*100:.2f}%") print(f" - 拔模角:{detailed_json['metadata']['draft_angle']}°") # 测试法向量分析 print("\n6. 测试法向量分析") normal = generator._analyze_face_normals(box) print(f" ✓ 法向量分析完成") print(f" - 分型方向:({normal.X():.3f}, {normal.Y():.3f}, {normal.Z():.3f})") print("\n" + "="*60) print("测试完成!所有功能正常。") print("="*60) return True except Exception as e: print(f"\n✗ 测试失败:{e}") import traceback traceback.print_exc() return False if __name__ == "__main__": success = test_basic() sys.exit(0 if success else 1)