|
|
||
|---|---|---|
| .specstory | ||
| 01_Aspose_CAD_Python | ||
| 02_Aspose_CAD_Java | ||
| 03_Python_Open-Source_DXF | ||
| 03_Python_OpenSource_DXF | ||
| 04_Test_Files | ||
| 06_Image_Processing | ||
| pure | ||
| .cursorindexingignore | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| 思路.MD | ||
Aspose.CAD DWG/DXF 处理:从 Python 问题到 Java 解决方案
📋 项目概述
本项目旨在评估和使用 Aspose.CAD 库处理 .dwg 文件。最初尝试使用 Aspose.CAD for Python,但在深入测试后发现其 Python API 存在严重的设计缺陷,无法访问 CAD 文件的核心实体数据。
随后,项目转向 Aspose.CAD for Java,并成功实现了所有预定目标,包括:
- 加载和解析 DWG 文件。
- 提取所有的线条 (
CadLine,CadLwPolyline) 和其他实体。 - 根据颜色(例如绿色)筛选特定实体。
- 将 DWG 文件成功转换为 PDF 和 DXF 格式。
🎯 最终结论
- Aspose.CAD for Python: 不推荐使用。其 API 存在根本性问题,返回的是通用
Image对象,导致无法访问entities、layers等 CAD 专用数据。此问题在多个版本中(从 22.2 到 25.3)普遍存在。 - Aspose.CAD for Java: 推荐的解决方案。Java API 功能完善且稳定,能够可靠地访问和操作 DWG 文件的所有实体,是进行 CAD 数据处理的可靠选择。
📁 项目文件结构
为了清晰地组织项目过程,所有文件已被归类到以下目录中:
.
├── 01_Aspose_CAD_Python/ # (归档) 所有 Python 版本的测试脚本和分析记录
├── 02_Aspose_CAD_Java/ # (成功) 完整的、可运行的 Java Maven 项目
├── 03_Python_OpenSource_DXF/ # (占位) 用于未来可能的 Python 开源库测试
├── 04_Test_Files/ # 所有用于测试的 .dwg 图纸文件
├── 05_Reports/ # 所有生成的报告和转换文件 (.txt, .csv, .pdf, .dxf)
└── README.md # 本文档
🚀 Java 解决方案快速入门
这是本项目的核心成功部分。按照以下步骤运行 Java 代码。
环境要求
- Java JDK 11 或更高版本
- Apache Maven
如何运行
-
进入 Java 项目目录:
cd 02_Aspose_CAD_Java/problem/java -
使用 Maven 编译和执行: 该项目已配置
exec-maven-plugin,可以方便地运行不同的主类。打开pom.xml文件,修改<mainClass>属性来选择要运行的程序。例如,要运行
GreenLineExtractor:<!-- pom.xml --> <properties> ... <mainClass>com.aspose.cad.examples.Lines.GreenLineExtractor</mainClass> </properties>然后执行以下命令:
mvn clean compile exec:java
已实现的功能 (Java)
SimpleLineExtractor.java: 提取并打印一个 DWG 文件中所有的CadLine和CadLwPolyline实体。GreenLineExtractor.java: 筛选出所有颜色为绿色的线条,将结果保存到green_lines.txt,并将 DWG 文件转换为图签测试.pdf和图签测试.dxf。ColorAnalyzer.java: 分析 DWG 文件中所有实体的颜色分布,并将报告写入color_analysis.txt。ApiExplorer.java: 一个工具类,用于通过反射动态探查 CAD 实体对象的可用方法,在API探索阶段非常有用。
🐍 Python 问题探索 (归档)
此部分仅为记录目的。在 01_Aspose_CAD_Python/ 目录中,包含了大量的测试脚本,用于验证不同版本的 Aspose.CAD for Python。
核心问题回顾
所有 Python 版本在加载 DWG 文件后,都无法将其识别为 CadImage 类型,而是返回一个通用的 Image 对象,导致无法访问 CAD 的内部结构。抛出的关键错误是:
'The given key Aspose.CAD.FileFormats.Cad.CadImage was not present in the dictionary'
这确认了问题源于 Aspose.CAD 的 Python API 封装,而非许可证或环境问题。
📄 许可证
本项目仅用于技术评估和研究。Aspose.CAD 是商业软件,在生产环境中使用时,请确保遵守其官方的许可证条款。