Могу ли я преобразовать контурный график в matplotlib в формат, который можно импортировать и редактировать в AutoCAD?

Я написал скрипт на Python 3.3, который считывает положение (координаты x, y) и значения риска из текстового файла и сохраняет полученный контурный график с помощью matplotlib. Моя компания должна иметь возможность редактировать контур в AutoCAD. К сожалению, мои знания об AutoCAD сильно ограничены, а люди в моей компании, знающие AutoCAD, очень мало знают о создании контурных диаграмм.

Как создать контурную диаграмму, которую можно импортировать в AutoCAD? В настоящее время я думаю, что мне следует сохранить график в виде файла svg и преобразовать его во что-то, что может открыть AutoCAD, или установить плагин для AutoCAD, который позволит ему открывать один из форматов, которые может сохранить matplotlib. Я видел этот вопрос, но он не совсем соответствует моим потребностям.

*Редактировать*

Я попытался сохранить график как файл SVG, открыть его в Inkscape и сохранить как DXF, но это не так. не сохраняет информацию о цвете контура, и задачу в любом случае необходимо автоматизировать. Информация о цвете контура важна для сохранения, поскольку цвет указывает на порядок величины риска.


person Cody Piersall    schedule 16.04.2013    source источник
comment
Matplotlib может экспортировать в несколько векторных форматов, в то время как Autocad, похоже, не может читать ничего, кроме своего собственного формата. Возможно, вам следует попробовать какой-нибудь конвертер, который может создавать DXF из EPS, PDF, SVG...   -  person theta    schedule 16.04.2013
comment
Спасибо, @тета. Я могу вручную конвертировать SVG в формат DXF, используя Inkscape, но я теряю цвета контура и предпочел бы автоматизировать процесс, потому что мы могли бы иметь сотни из них для преобразования одновременно.   -  person Cody Piersall    schedule 17.04.2013
comment
ИМХО, pstoedit (как предложено ниже) - отличный вариант (PS/EPS в DXF). Если вы не используете шрифты, конвертация очень проста   -  person theta    schedule 17.04.2013


Ответы (2)


Если вы можете сгенерировать файл postscript (matplotlib может создавать pdf, верно?), вы можете использовать pstoedit из командной строки, чтобы преобразовать его в dxf.

Кроме того, вы можете использовать Illustrator (не бесплатно) или Inkscape (бесплатно), чтобы преобразовать svg в dxf. В Интернете ходят слухи, что Inkscape когда-нибудь превратит кривые Безье в прямые линии, но я не проверял, так ли это по-прежнему.

person miah    schedule 16.04.2013
comment
+1 за то, о чем я никогда раньше не слышал. Я только что попробовал это, и еще не понял, но, возможно, скоро смогу. - person Cody Piersall; 17.04.2013

В итоге моя программа для черчения создала очень простой скрипт Autocad. Я сослался на этот вопрос об извлечении данных x,y из контурного графика в написать скрипт автокада. Вот соответствующая функция:

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 импортирую скрипт. Это отображает каждый контур как случайный цвет, но его можно заменить любым цветом, который вы хотите.

person Cody Piersall    schedule 01.07.2013