dxfedit/README.md
2025-09-09 18:42:30 +08:00

81 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 是商业软件,在生产环境中使用时,请确保遵守其官方的许可证条款。