#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 测试Aspose.CAD 22.2版本 验证早期版本是否能解决API问题 """ import os import sys from pathlib import Path def print_separator(title=""): """打印分隔线""" print("=" * 60) if title: print(f" {title} ") print("=" * 60) def test_version_22_2(): """测试Aspose.CAD 22.2版本""" print_separator("测试Aspose.CAD 22.2版本") try: import aspose.cad as cad from aspose.cad.fileformats.cad import CadImage print("Aspose.CAD 22.2版本测试") # 查找DWG文件 dwg_files = list(Path('.').glob('*.dwg')) if not dwg_files: print("未找到DWG文件") return False test_file = str(dwg_files[0]) print(f"使用文件: {test_file}") # 测试1:基本加载 print("\n测试1:基本加载") try: with cad.Image.load(test_file) as image: print(f"成功加载,类型: {type(image).__name__}") print(f"图像尺寸: {image.width} x {image.height}") except Exception as e: print(f"基本加载失败: {e}") return False # 测试2:使用CadImage.load print("\n测试2:使用CadImage.load") try: cad_image = CadImage.load(test_file) print(f"成功使用CadImage.load,类型: {type(cad_image).__name__}") # 检查是否有CAD特定属性 attrs = [attr for attr in dir(cad_image) if not attr.startswith('_')] print(f"可用属性数量: {len(attrs)}") # 查找可能包含实体的属性 entity_attrs = [attr for attr in attrs if 'entit' in attr.lower() or 'block' in attr.lower() or 'layer' in attr.lower()] print(f"可能的实体属性: {entity_attrs}") # 尝试访问这些属性 for attr in entity_attrs: try: value = getattr(cad_image, attr) print(f" {attr}: {type(value).__name__}") if hasattr(value, '__len__'): print(f" 长度: {len(value)}") # 如果长度大于0,尝试访问前几个元素 if len(value) > 0: for i in range(min(3, len(value))): item = value[i] print(f" [{i}]: {type(item).__name__}") # 如果是CadLine,尝试提取信息 if type(item).__name__ == 'CadLine': print(f" 找到CadLine!") if hasattr(item, 'first_point') and hasattr(item, 'second_point'): print(f" 起点: {item.first_point}") print(f" 终点: {item.second_point}") except Exception as e: print(f" {attr}: 访问失败 - {e}") return True except Exception as e: print(f"使用CadImage.load失败: {e}") return False except Exception as e: print(f"测试失败: {e}") import traceback traceback.print_exc() return False def test_alternative_approaches_22_2(): """测试22.2版本的其他方法""" print_separator("测试22.2版本的其他方法") try: import aspose.cad as cad from aspose.cad.fileformats.cad import CadImage # 查找DWG文件 dwg_files = list(Path('.').glob('*.dwg')) if not dwg_files: print("未找到DWG文件") return False test_file = str(dwg_files[0]) # 方法1:尝试直接创建CadImage实例 print("\n方法1:直接创建CadImage实例") try: cad_image = CadImage() print(f"成功创建CadImage实例: {type(cad_image).__name__}") # 检查方法 methods = [attr for attr in dir(cad_image) if not attr.startswith('_') and callable(getattr(cad_image, attr))] print(f"可用方法: {methods}") # 尝试使用load方法 if 'load' in methods: try: loaded = cad_image.load(test_file) print(f"使用实例方法load成功: {type(loaded).__name__}") except Exception as e: print(f"使用实例方法load失败: {e}") except Exception as e: print(f"创建CadImage实例失败: {e}") # 方法2:尝试使用其他导入方式 print("\n方法2:尝试其他导入方式") try: from aspose.cad.fileformats.cad.cadobjects import CadLine print("成功导入CadLine") # 尝试创建CadLine实例 line = CadLine() print(f"成功创建CadLine实例: {type(line).__name__}") # 检查CadLine的属性 line_attrs = [attr for attr in dir(line) if not attr.startswith('_')] print(f"CadLine属性数量: {len(line_attrs)}") # 查找坐标相关属性 coord_attrs = [attr for attr in line_attrs if 'point' in attr.lower() or 'coord' in attr.lower()] print(f"坐标相关属性: {coord_attrs}") except Exception as e: print(f"其他导入方式失败: {e}") # 方法3:尝试遍历所有属性 print("\n方法3:遍历所有属性") try: with cad.Image.load(test_file) as image: all_attrs = [attr for attr in dir(image) if not attr.startswith('_')] print(f"Image对象所有属性: {all_attrs}") # 尝试访问每个属性 for attr in all_attrs: try: value = getattr(image, attr) if not callable(value): print(f" {attr}: {type(value).__name__} = {value}") else: print(f" {attr}: 方法") except Exception as e: print(f" {attr}: 访问失败 - {e}") except Exception as e: print(f"遍历属性失败: {e}") return True except Exception as e: print(f"测试其他方法失败: {e}") return False def main(): """主函数""" print_separator("Aspose.CAD 22.2版本测试") print("验证早期版本是否能解决API问题") print() # 测试22.2版本 success = test_version_22_2() if success: print("\n" + "=" * 60) print(" 22.2版本测试结果 ") print("=" * 60) print("✓ 22.2版本可以正常加载DWG文件") print("✓ 需要进一步测试是否能访问CAD特定功能") # 测试其他方法 test_alternative_approaches_22_2() else: print("\n" + "=" * 60) print(" 22.2版本测试结果 ") print("=" * 60) print("✗ 22.2版本仍然存在API问题") print("建议尝试其他版本或替代方案") if __name__ == "__main__": try: main() except KeyboardInterrupt: print("\n\n用户中断了程序执行") except Exception as e: print(f"\n\n程序执行出错: {e}") import traceback traceback.print_exc()