Python 3.x 是否可以将matplotlib中的等高线图转换为可以在AutoCAD中导入和编辑的格式?

Python 3.x 是否可以将matplotlib中的等高线图转换为可以在AutoCAD中导入和编辑的格式?,python-3.x,matplotlib,autocad,Python 3.x,Matplotlib,Autocad,我用Python 3.3编写了一个脚本,它从文本文件中读取位置(x,y坐标)和风险值,并使用matplotlib保存生成的等高线图。我的公司需要能够在AutoCAD中编辑轮廓。不幸的是,我对AutoCAD的了解非常有限,我公司熟悉AutoCAD的人员对生成等高线图知之甚少 如何创建可以在AutoCAD中导入的等高线图?我目前的想法是,我应该将绘图保存为svg文件,并将其转换为AutoCAD可以打开的格式,或者为AutoCAD安装一个插件,使其能够打开matplotlib可以保存的格式之一。我见过

我用Python 3.3编写了一个脚本,它从文本文件中读取位置(x,y坐标)和风险值,并使用matplotlib保存生成的等高线图。我的公司需要能够在AutoCAD中编辑轮廓。不幸的是,我对AutoCAD的了解非常有限,我公司熟悉AutoCAD的人员对生成等高线图知之甚少

如何创建可以在AutoCAD中导入的等高线图?我目前的想法是,我应该将绘图保存为svg文件,并将其转换为AutoCAD可以打开的格式,或者为AutoCAD安装一个插件,使其能够打开matplotlib可以保存的格式之一。我见过,但那不太适合我的需要

*编辑*


我曾尝试将绘图保存为SVG文件,在中打开并保存为DXF,但它不保存轮廓颜色信息,而且该任务仍需要自动化。轮廓颜色信息必须保留,因为颜色表示风险的大小顺序。

如果可以生成postscript文件(matplotlib可以创建pdf,对吗?),则可以从命令行将其转换为dxf


或者,您可以使用Illustrator(非免费)或Inkscape(免费)将svg转换为dxf。互联网上有一些传言称Inkscape有时会将bezier曲线变成直线,但我没有检查这是否仍然正确。

我最终让我的绘图程序创建了一个非常基本的Autocad脚本。我提到了从等高线图中提取x,y数据以编写Autocad脚本。以下是相关功能:

def make_autocad_script(outfile_name, contour):
    ''' 
    Creates an Autocad script which contains polylines for each contour.
    Args
    outfile_name: the name of the Autocad script file.
    contour: the contour plot that needs to be exported to Autocad.
    '''

    with open(outfile_name, 'w', newline='') as outfile:
        writer = csv.writer(outfile, delimiter=',', )
        # each collection is associated with a contour level    
        for collection in contour.collections:

            # If the contour level is never reached, then the collection will be an empty list.
            if collection:
                # Set color for contour level
                outfile.write('COLOR {}\n'.format(random.randint(1,100)))
                # Each continuous contour line in a collection is a path.
                for path in collection.get_paths():

                    vertices = path.vertices

                    # pline is an autocad command for polyline.  It interprets
                    # the next (x,y) pairs as coordinates of a line until
                    # it sees a blank line.
                    outfile.write('pline\n')
                    writer.writerows(vertices)
                    outfile.write('\n')

我发送所需的
make_autocad_script
outfile和
contour
绘图,并在autocad中导入脚本。这会将每个等高线绘制为随机颜色,但可以使用您想要的任何颜色进行替换。

Matplotlib可以导出为两种矢量格式,而Autocad似乎只能读取自己的格式。您也许应该尝试一些可以从EPS、PDF、SVG生成DXF的转换器……谢谢,@theta。我可以使用手动方式将SVG转换为DXF格式,但我会丢失轮廓颜色,我更愿意自动化此过程,因为我们一次可以转换数百种颜色。IMHO,
pstoedit
(如下所示)是一个很好的选择(PS/EPS到DXF)。如果你不使用字体转换是非常容易的+1的东西,我从来没有听说过。我只是试了一下,还没有找到答案,但也许我很快就能找到答案。