用于合并 DXF 文件的 Python 模块

标签 python dxf ezdxf

我正在寻找一个可以合并 dxf 文件的 python 模块。我找到了 dxfgrabber 和 ezdxf,但是它们似乎用于与我所追求的不同的应用程序。

我使用的是ExpressPCB,它分别输出PCB的每一层、孔和丝印。对于我的应用程序,我想将所有这些单独的 DXF 合并为一个。查看照片

enter image description here

据我所知,起源等都是相同的,所以它应该像现实生活中一样排列起来。

目前,这些模块都没有针对此类应用程序的任何教程。一些伪代码以 Python 方式表达这个想法:

dxf_file1 = read(file1)
dxf_file2 = read(file2)    
dxf_file3 = read(file3)

out_file.append(dxf_file1)
out_file.append(dxf_file2)
out_file.append(dxf_file3)

outfile.save()

在我的应用程序中,文件都将具有相同的原点并且永远不会重叠,因此您应该能够以某种方式轻松合并文件。感谢您提前提供的帮助!

最佳答案

您可以在 ezdxf v0.10 中使用重写的 Importer 插件:

import ezdxf
from ezdxf.addons import Importer


def merge(source, target):
    importer = Importer(source, target)
    # import all entities from source modelspace into target modelspace
    importer.import_modelspace()
    # import all required resources and dependencies
    importer.finalize()


base_dxf = ezdxf.readfile('file1.dxf')

for filename in ('file2.dxf', 'file3.dxf'):
    merge_dxf = ezdxf.readfile(filename)
    merge(merge_dxf, base_dxf)

# base_dxf.save()  # to save as file1.dxf
base_dxf.saveas('merged.dxf')

此导入器仅支持基本图形,例如 LINE、CIRCLE、ARC 和 DIMENSION(无尺寸样式覆盖)等。

所有 XDATA 和第 3 方数据都将被忽略,但您的文件似乎足够简单,可以工作。

可以找到导入器附加组件的文档 here .

关于用于合并 DXF 文件的 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58722235/

相关文章:

python - 密码学.异常.已经完成 : Context was already finalized

python - 提高 python for 循环对嵌套列表中的 ID 进行项目计数的效率

Android 导出为 .dwg

python - 有没有办法改变ezdxf中的背景颜色?

python - 如何使用ezdxf关闭属性打印设置?

python-3.x - 如何使用ezdxf返回 'MTEXT'内的字符串?

python - 如何使用\r (Python) 替换上一行中的字符串

python - 如何在 Python 中访问 N 维数组的部分?

c# - 读取 .DXF 文件

autocad - 当具有凸出因子的 dxf 顶点后面没有端点时,这意味着什么?