Files
geMoldInsight/scripts/simple_test.py
T
2026-03-11 01:05:18 +08:00

99 lines
3.6 KiB
Python

"""
简单测试分模算法改进
"""
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)