Ceci n'est qu'un test, en aucun cas un code fini, il prend en charge uniquement la fonction LINE, mais le mécanisme doit être identique pour lire des CIRCLE etc...

Au préalable il faut installer sous Ubuntu 14.04LTS la librairie qui va nous aider à lire le dxf " dxfgrabber " :

Télécharger le ici => https://pypi.python.org/pypi/dxfgrabber#downloads
Dézipper dans un répertoire quelconque puis rentrer dedans
Ouvrir un terminal et saisir :

python setup.py install

Créer un fichier text lire_dxf.py et copier coller le code ci dessous
récupérer un fichier dxf et renomer le en " a9.dxf " et le mettre dans le même répertoire que le script.

https://www.aventics.com/pneumatics-catalog/content/cad/files/symbols/dxf/a9.dxf

lancer la commande :

python lire_dxf.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dxfgrabber
dxf = dxfgrabber.readfile("a9.dxf") # on lit un fichier dxf qui porte se nom
print ("DXF version : {}".format(dxf.dxfversion))
header_var_count = len(dxf.header) # dict of dxf header vars
layer_count = len(dxf.layers) # collection of layer definitions
block_definition_count = len(dxf.blocks) # dict like collection of block definitions
entity_count = len(dxf.entities) # list like collection of entities
print header_var_count
print layer_count
print block_definition_count
print entity_count # nombre d'entités

from Tkinter import *
master = Tk()
master.title("Affiche dxf Basic")

w = Canvas(master, width=800, height=600)
w.pack()

for entity in dxf.entities:
    if entity.dxftype == 'LINE' :
       w.create_line(entity.start[0:2], entity.end[0:2])
       # print entity.start # affiche la valeur du point de départ x,y,z
       # print entity.start[0:2] # on sélectionne que x et y (pas z)
       # print entity.end # affiche la valeur du point d'arrivée x,y,z

for zz in w.find_all(): # mise à l'échelle
    w.scale(zz, -50, -50,7,7)

master.mainloop()


L'affichage sur les Y est inversé, c'est normale car la librairie Tkinter à ses origines en haut à gauche de l'écran.