81 lines
3.8 KiB
Markdown
81 lines
3.8 KiB
Markdown
# 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 格式。
|
||
|
||
## 🎯 最终结论
|
||
|
||
1. **Aspose.CAD for Python**: **不推荐使用**。其 API 存在根本性问题,返回的是通用 `Image` 对象,导致无法访问 `entities`、`layers` 等 CAD 专用数据。此问题在多个版本中(从 22.2 到 25.3)普遍存在。
|
||
2. **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**
|
||
|
||
### 如何运行
|
||
1. **进入 Java 项目目录**:
|
||
```shell
|
||
cd 02_Aspose_CAD_Java/problem/java
|
||
```
|
||
|
||
2. **使用 Maven 编译和执行**:
|
||
该项目已配置 `exec-maven-plugin`,可以方便地运行不同的主类。打开 `pom.xml` 文件,修改 `<mainClass>` 属性来选择要运行的程序。
|
||
|
||
例如,要运行 `GreenLineExtractor`:
|
||
```xml
|
||
<!-- pom.xml -->
|
||
<properties>
|
||
...
|
||
<mainClass>com.aspose.cad.examples.Lines.GreenLineExtractor</mainClass>
|
||
</properties>
|
||
```
|
||
|
||
然后执行以下命令:
|
||
```shell
|
||
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 是商业软件,在生产环境中使用时,请确保遵守其官方的许可证条款。 |