Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于合并DXF文件的Python模块_Python_Dxf_Ezdxf - Fatal编程技术网

用于合并DXF文件的Python模块

用于合并DXF文件的Python模块,python,dxf,ezdxf,Python,Dxf,Ezdxf,我正在寻找一个python模块,将合并dxf文件。我已经找到了dxfgrabber和ezdxf,但是它们似乎用于不同的应用程序,然后我所追求的 我使用的是ExpressPCB,它分别输出PCB的每一层、孔和丝网。对于我的应用程序,我想将所有这些单独的DXF组合成一个单独的DXF。见图 据我所知,起源等都是一样的,所以应该像在现实生活中一样 目前,这两个模块都没有此类应用程序的教程。一些psudo代码以pythonic的方式传达想法: dxf_file1 = read(file1) dxf_fi

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

我使用的是ExpressPCB,它分别输出PCB的每一层、孔和丝网。对于我的应用程序,我想将所有这些单独的DXF组合成一个单独的DXF。见图

据我所知,起源等都是一样的,所以应该像在现实生活中一样

目前,这两个模块都没有此类应用程序的教程。一些psudo代码以pythonic的方式传达想法:

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中使用重写的导入程序加载项:

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')
此导入器仅支持基本图形,如直线、圆、圆弧和标注(无标注样式替代)等

所有扩展数据和第三方数据都将被忽略,但您的文件似乎足够简单,可以正常工作


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

使用上述代码正在合并dxf文件,但文件正在重叠,是否有办法在一个文件中创建多个带有偏移量的dxf?这超出了ezdxf的能力--您需要一个CAD应用程序。