99 lines
3.6 KiB
Python
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)
|