118 lines
3.3 KiB
Python
118 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
修复缺失的初始化函数
|
||
位置: blenderpython/suw_core/test/fix_missing_inits.py
|
||
作者: SUWood Team
|
||
版本: 1.0.0
|
||
"""
|
||
|
||
import os
|
||
|
||
|
||
def fix_part_creator():
|
||
"""修复 part_creator.py 中缺失的初始化函数"""
|
||
|
||
# 要添加的代码
|
||
additional_code = '''
|
||
def get_part_creator_stats(self) -> Dict[str, Any]:
|
||
"""获取部件创建器统计信息"""
|
||
try:
|
||
stats = {
|
||
"manager_type": "PartCreator",
|
||
"parts_by_uid": {uid: len(parts) for uid, parts in self.parts.items()},
|
||
"total_parts": sum(len(parts) for parts in self.parts.values()),
|
||
"creation_stats": self.creation_stats.copy(),
|
||
"blender_available": BLENDER_AVAILABLE
|
||
}
|
||
return stats
|
||
except Exception as e:
|
||
logger.error(f"获取部件创建器统计失败: {e}")
|
||
return {"error": str(e)}
|
||
|
||
|
||
# ==================== 模块实例 ====================
|
||
|
||
# 全局实例,将由SUWImpl初始化时设置
|
||
part_creator = None
|
||
|
||
def init_part_creator(suw_impl):
|
||
"""初始化部件创建器"""
|
||
global part_creator
|
||
part_creator = PartCreator(suw_impl)
|
||
return part_creator
|
||
'''
|
||
|
||
file_path = "../part_creator.py"
|
||
|
||
try:
|
||
# 读取现有文件
|
||
with open(file_path, 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
# 检查是否已经有 init_part_creator 函数
|
||
if "def init_part_creator" in content:
|
||
print("✅ part_creator.py 已经有初始化函数")
|
||
return True
|
||
|
||
# 查找替换点
|
||
old_pattern = '''# ==================== 全局实例 ====================
|
||
|
||
|
||
# 创建全局部件创建器实例
|
||
part_creator = PartCreator()'''
|
||
|
||
if old_pattern in content:
|
||
# 替换旧代码
|
||
new_content = content.replace(old_pattern, additional_code.strip())
|
||
|
||
# 写回文件
|
||
with open(file_path, 'w', encoding='utf-8') as f:
|
||
f.write(new_content)
|
||
|
||
print("✅ part_creator.py 初始化函数已添加")
|
||
return True
|
||
else:
|
||
# 如果找不到替换点,直接追加
|
||
with open(file_path, 'a', encoding='utf-8') as f:
|
||
f.write(additional_code)
|
||
|
||
print("✅ part_creator.py 初始化函数已追加")
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ 修复 part_creator.py 失败: {e}")
|
||
return False
|
||
|
||
|
||
def test_imports():
|
||
"""测试导入"""
|
||
try:
|
||
import sys
|
||
sys.path.insert(0, "../..")
|
||
|
||
from suw_core.part_creator import init_part_creator
|
||
print("✅ init_part_creator 导入成功")
|
||
|
||
from suw_core.material_manager import init_material_manager
|
||
print("✅ init_material_manager 导入成功")
|
||
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ 导入测试失败: {e}")
|
||
return False
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print("🔧 修复缺失的初始化函数")
|
||
print("=" * 40)
|
||
|
||
success1 = fix_part_creator()
|
||
success2 = test_imports()
|
||
|
||
if success1 and success2:
|
||
print("\n🎉 所有修复完成!")
|
||
else:
|
||
print("\n❌ 修复失败")
|