230 lines
6.6 KiB
Python
230 lines
6.6 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
SUWood 插件安装测试脚本
|
||
用于验证插件是否正确安装和加载
|
||
"""
|
||
|
||
import sys
|
||
import os
|
||
|
||
|
||
def test_blender_environment():
|
||
"""测试Blender环境"""
|
||
print("🔍 测试Blender环境...")
|
||
|
||
try:
|
||
import bpy
|
||
print("✅ Blender环境可用")
|
||
print(f" Blender版本: {bpy.app.version_string}")
|
||
print(f" Python版本: {sys.version}")
|
||
return True
|
||
except ImportError:
|
||
print("❌ Blender环境不可用")
|
||
return False
|
||
|
||
|
||
def test_suwood_modules():
|
||
"""测试SUWood模块导入"""
|
||
print("\n🔍 测试SUWood模块...")
|
||
|
||
modules_to_test = [
|
||
'suw_core',
|
||
'suw_menu',
|
||
'suw_observer',
|
||
'suw_client',
|
||
'suw_constants',
|
||
'suw_load',
|
||
'suw_unit_point_tool',
|
||
'suw_unit_face_tool',
|
||
'suw_unit_cont_tool',
|
||
'suw_zone_div1_tool'
|
||
]
|
||
|
||
success_count = 0
|
||
for module_name in modules_to_test:
|
||
try:
|
||
module = __import__(module_name)
|
||
print(f"✅ {module_name} - 导入成功")
|
||
success_count += 1
|
||
except ImportError as e:
|
||
print(f"❌ {module_name} - 导入失败: {e}")
|
||
|
||
print(f"\n📊 模块测试结果: {success_count}/{len(modules_to_test)} 成功")
|
||
return success_count == len(modules_to_test)
|
||
|
||
|
||
def test_addon_registration():
|
||
"""测试插件注册"""
|
||
print("\n🔍 测试插件注册...")
|
||
|
||
try:
|
||
import bpy
|
||
|
||
# 检查插件信息
|
||
if hasattr(bpy.context, 'preferences'):
|
||
addons = bpy.context.preferences.addons
|
||
suwood_addon = None
|
||
|
||
for addon in addons:
|
||
if 'suwood' in addon.module.lower():
|
||
suwood_addon = addon
|
||
break
|
||
|
||
if suwood_addon:
|
||
print("✅ SUWood插件已注册")
|
||
print(f" 插件名称: {suwood_addon.module}")
|
||
return True
|
||
else:
|
||
print("⚠️ SUWood插件未找到,可能需要手动注册")
|
||
return False
|
||
else:
|
||
print("⚠️ 无法访问Blender偏好设置")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f"❌ 插件注册测试失败: {e}")
|
||
return False
|
||
|
||
|
||
def test_panel_creation():
|
||
"""测试面板创建"""
|
||
print("\n🔍 测试面板创建...")
|
||
|
||
try:
|
||
import bpy
|
||
|
||
# 检查面板类是否存在
|
||
panel_classes = [
|
||
'SUWOOD_PT_main_panel',
|
||
'SUWOOD_OT_unit_point_tool',
|
||
'SUWOOD_OT_unit_face_tool',
|
||
'SUWOOD_OT_delete_unit',
|
||
'SUWOOD_OT_zone_div1_tool'
|
||
]
|
||
|
||
success_count = 0
|
||
for class_name in panel_classes:
|
||
if hasattr(bpy.types, class_name):
|
||
print(f"✅ {class_name} - 已注册")
|
||
success_count += 1
|
||
else:
|
||
print(f"❌ {class_name} - 未注册")
|
||
|
||
print(f"\n📊 面板测试结果: {success_count}/{len(panel_classes)} 成功")
|
||
return success_count == len(panel_classes)
|
||
|
||
except Exception as e:
|
||
print(f"❌ 面板测试失败: {e}")
|
||
return False
|
||
|
||
|
||
def test_tool_functions():
|
||
"""测试工具功能"""
|
||
print("\n🔍 测试工具功能...")
|
||
|
||
try:
|
||
# 测试工具函数
|
||
from suw_unit_point_tool import create_point_tool
|
||
from suw_unit_face_tool import create_face_tool
|
||
from suw_zone_div1_tool import create_zone_div1_tool
|
||
|
||
# 创建工具实例
|
||
point_tool = create_point_tool()
|
||
face_tool = create_face_tool(1) # 前视图
|
||
zone_tool = create_zone_div1_tool()
|
||
|
||
print("✅ 工具创建成功")
|
||
print(f" 点击创体工具: {type(point_tool).__name__}")
|
||
print(f" 选面创体工具: {type(face_tool).__name__}")
|
||
print(f" 六面切割工具: {type(zone_tool).__name__}")
|
||
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ 工具功能测试失败: {e}")
|
||
return False
|
||
|
||
|
||
def test_core_system():
|
||
"""测试核心系统"""
|
||
print("\n🔍 测试核心系统...")
|
||
|
||
try:
|
||
from suw_core import init_all_managers, get_selection_manager
|
||
|
||
# 初始化管理器
|
||
init_all_managers()
|
||
print("✅ 管理器初始化成功")
|
||
|
||
# 获取选择管理器
|
||
selection_manager = get_selection_manager()
|
||
if selection_manager:
|
||
print("✅ 选择管理器可用")
|
||
return True
|
||
else:
|
||
print("❌ 选择管理器不可用")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f"❌ 核心系统测试失败: {e}")
|
||
return False
|
||
|
||
|
||
def main():
|
||
"""主测试函数"""
|
||
print("🚀 SUWood 插件安装测试")
|
||
print("=" * 50)
|
||
|
||
# 运行所有测试
|
||
tests = [
|
||
("Blender环境", test_blender_environment),
|
||
("SUWood模块", test_suwood_modules),
|
||
("插件注册", test_addon_registration),
|
||
("面板创建", test_panel_creation),
|
||
("工具功能", test_tool_functions),
|
||
("核心系统", test_core_system)
|
||
]
|
||
|
||
results = []
|
||
for test_name, test_func in tests:
|
||
try:
|
||
result = test_func()
|
||
results.append((test_name, result))
|
||
except Exception as e:
|
||
print(f"❌ {test_name}测试异常: {e}")
|
||
results.append((test_name, False))
|
||
|
||
# 输出测试总结
|
||
print("\n" + "=" * 50)
|
||
print("📋 测试总结")
|
||
print("=" * 50)
|
||
|
||
passed = sum(1 for _, result in results if result)
|
||
total = len(results)
|
||
|
||
for test_name, result in results:
|
||
status = "✅ 通过" if result else "❌ 失败"
|
||
print(f"{test_name:12} - {status}")
|
||
|
||
print(f"\n📊 总体结果: {passed}/{total} 测试通过")
|
||
|
||
if passed == total:
|
||
print("\n🎉 恭喜!SUWood插件安装成功!")
|
||
print("📝 使用说明:")
|
||
print(" 1. 打开3D视图")
|
||
print(" 2. 按N键打开侧边栏")
|
||
print(" 3. 点击SUWood标签页")
|
||
print(" 4. 开始使用工具")
|
||
else:
|
||
print("\n⚠️ 部分测试失败,请检查安装")
|
||
print("📝 建议:")
|
||
print(" 1. 确保Blender版本为3.0+")
|
||
print(" 2. 检查插件是否正确安装")
|
||
print(" 3. 重启Blender")
|
||
print(" 4. 查看控制台错误信息")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|