尝试以编程方式将 DXF 文件从版本 12 (AC1009) 转换为至少 2000 (AC1015)

问题描述 投票:0回答:1

所以我工作的公司创建了台面,并且有自己的逻辑和内部编写的 Java 应用程序,可以为我们的台面制作我们的 dxf 文件。我们现在要外包我们的一些工作,我们外包的公司正在获取我们的 dxf 文件并将使用它们。如标题所述,我们当前的 ACADVER 设置为“AC1009”,这是观众可以阅读的最低级别的 autocad。公司希望我们将 dxf 文件升级到更新版本,最好是最新版本 (AC1032),但他们愿意接受低至 AC1015 的版本,即 2000/2002 版本。

如果我进入 dxf 文件并手动将版本号调整为较新的版本,则打开 dxf 文件时会出错(我认为这行不通,但希望如此简单)。如果有人知道或参考升级您的 dxf 版本而不是降级,我从超级基础级别很好奇,因为我看到很多降级您的版本,添加某些字段(如果它们丢失)等等。

我的代码开头是

  0
SECTION
  2
HEADER
  9
$ACADVER
  1
AC1009

我会把那里的 ACADVER 改成其他版本,但都没有用。我还删除了除 Entities 部分以外的所有内容,它以不包括那些的最低默认版本打开。你们的任何帮助都会很棒 :D.

我尝试删除部分 (HEADER/TABLES/LAYERS) 并保留 ENTITIES,我尝试将 ACADVER 调整为更新版本。我已经浏览了代码并尝试使用在线转换器并并排阅读 dxf 文件,看看他们如何将其转换为更新版本,但在线转换器添加了如此多的庞然大物以至于很难破译它添加的任何内容。我只是希望能够将其转换为更新版本的 dxf 文件!

version upgrade autocad dxf
1个回答
0
投票

这并不像您想象的那么容易。从 DXF R12 到 DXF R2000 比更改一些标题变量要大得多。

简述最重要的要求:

  • 所有 DXF 实体和表格条目都需要句柄
  • DXF实体中的DXF标签已经通过子类标记进行分组和分隔,组码100
  • 新的必修课程部分
  • 新的必需对象部分
  • TABLES 部分需要新的 BLOCK_RECORD 表
  • 每个 BLOCK 都需要一个 BLOCK_RECORD 条目

AutoCAD 对 DXF R12 格式非常宽松,在 DXF R2000 中它变成了“非常迂腐”,这使得这种转换很麻烦,因为 AutoCAD 以错误消息和崩溃的形式反馈并不是很有帮助。

你至少有3个选项:

  1. 学习所有 DXF R2000+ 功能并编写您自己的程序
  2. 使用非常好的、可靠的和免费的 OpenDesign Alliance FileConverter for win/linux/mac
  3. 使用我的 ezdxf Python 包

将 DXF R12 文件转换为 DXF R2018 的 Python 脚本:

from ezdxf import recover

# Use the recover module to load the DXF files, the input files may not be error free:
doc, _ = recover.readfile("r12.dxf")
doc.dxfversion = "R2018"
doc.saveas("R2018.dxf")

© www.soinside.com 2019 - 2024. All rights reserved.