#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Aspose.CAD for Python 测试脚本 功能:测试DWG文件加载、信息读取和格式转换 作者:AI Assistant 日期:2024 """ import os import sys from pathlib import Path import aspose.cad as cad from aspose.cad.imageoptions import CadRasterizationOptions, PngOptions, PdfOptions from aspose.cad import Color def print_separator(title=""): """打印分隔线""" print("=" * 60) if title: print(f" {title} ") print("=" * 60) def test_aspose_cad_installation(): """测试Aspose.CAD安装是否正常""" print_separator("测试Aspose.CAD安装") try: # 测试基本导入 print("✓ 成功导入aspose.cad模块") # 测试版本信息 print(f"✓ Aspose.CAD版本信息: {cad.__version__ if hasattr(cad, '__version__') else '版本信息不可用'}") return True except ImportError as e: print(f"✗ 导入失败: {e}") print("请确保已正确安装Aspose.CAD for Python") return False except Exception as e: print(f"✗ 测试失败: {e}") return False def get_dwg_file_info(dwg_path): """获取DWG文件基本信息""" print_separator("DWG文件信息") if not os.path.exists(dwg_path): print(f"✗ 文件不存在: {dwg_path}") return None try: # 获取文件基本信息 file_size = os.path.getsize(dwg_path) print(f"文件路径: {dwg_path}") print(f"文件大小: {file_size:,} 字节 ({file_size/1024/1024:.2f} MB)") # 加载DWG文件 print("正在加载DWG文件...") with cad.Image.load(dwg_path) as image: print(f"✓ 成功加载DWG文件") # 获取图像信息 print(f"图像宽度: {image.width} 像素") print(f"图像高度: {image.height} 像素") print(f"图像格式: {type(image).__name__}") # 如果是CAD图像,尝试获取更多信息 if hasattr(image, 'layers'): print(f"图层数量: {len(image.layers) if image.layers else '未知'}") return image except Exception as e: print(f"✗ 加载DWG文件失败: {e}") return None def convert_dwg_to_png(dwg_path, output_path=None): """将DWG文件转换为PNG格式""" print_separator("DWG转PNG转换") if output_path is None: output_path = dwg_path.replace('.dwg', '_converted.png') try: # 加载DWG文件 with cad.Image.load(dwg_path) as image: # 设置光栅化选项 rasterization_options = CadRasterizationOptions() rasterization_options.page_width = 1600 rasterization_options.page_height = 1600 rasterization_options.background_color = Color.white # 设置PNG选项 png_options = PngOptions() png_options.vector_rasterization_options = rasterization_options # 保存为PNG print(f"正在转换为PNG格式...") image.save(output_path, png_options) print(f"✓ 转换成功: {output_path}") # 检查输出文件 if os.path.exists(output_path): output_size = os.path.getsize(output_path) print(f"输出文件大小: {output_size:,} 字节 ({output_size/1024/1024:.2f} MB)") return True except Exception as e: print(f"✗ PNG转换失败: {e}") return False def convert_dwg_to_pdf(dwg_path, output_path=None): """将DWG文件转换为PDF格式""" print_separator("DWG转PDF转换") if output_path is None: output_path = dwg_path.replace('.dwg', '_converted.pdf') try: # 加载DWG文件 with cad.Image.load(dwg_path) as image: # 设置光栅化选项 rasterization_options = CadRasterizationOptions() rasterization_options.page_width = 1600 rasterization_options.page_height = 1600 rasterization_options.background_color = Color.white # 设置PDF选项 pdf_options = PdfOptions() pdf_options.vector_rasterization_options = rasterization_options # 保存为PDF print(f"正在转换为PDF格式...") image.save(output_path, pdf_options) print(f"✓ 转换成功: {output_path}") # 检查输出文件 if os.path.exists(output_path): output_size = os.path.getsize(output_path) print(f"输出文件大小: {output_size:,} 字节 ({output_size/1024/1024:.2f} MB)") return True except Exception as e: print(f"✗ PDF转换失败: {e}") return False def main(): """主函数""" print_separator("Aspose.CAD for Python 测试脚本") print("此脚本将测试Aspose.CAD的基本功能") print() # 测试安装 if not test_aspose_cad_installation(): print("安装测试失败,请检查Aspose.CAD安装") return # 查找DWG文件 dwg_files = list(Path('.').glob('*.dwg')) if not dwg_files: print("✗ 当前目录下未找到DWG文件") print("请确保DWG文件在当前目录中") return print(f"找到 {len(dwg_files)} 个DWG文件:") for i, dwg_file in enumerate(dwg_files, 1): print(f" {i}. {dwg_file}") # 使用第一个DWG文件进行测试 test_file = str(dwg_files[0]) print(f"\n使用文件进行测试: {test_file}") # 获取文件信息 image = get_dwg_file_info(test_file) if image is None: print("无法加载DWG文件,测试终止") return # 测试格式转换 print("\n开始格式转换测试...") # 转换为PNG png_success = convert_dwg_to_png(test_file) # 转换为PDF pdf_success = convert_dwg_to_pdf(test_file) # 总结 print_separator("测试总结") print(f"DWG文件加载: {'✓ 成功' if image else '✗ 失败'}") print(f"PNG转换: {'✓ 成功' if png_success else '✗ 失败'}") print(f"PDF转换: {'✓ 成功' if pdf_success else '✗ 失败'}") if png_success or pdf_success: print("\n✓ Aspose.CAD测试完成!转换后的文件已保存到当前目录") else: print("\n✗ 所有转换测试都失败了") if __name__ == "__main__": try: main() except KeyboardInterrupt: print("\n\n用户中断了程序执行") except Exception as e: print(f"\n\n程序执行出错: {e}") import traceback traceback.print_exc()