2017-07-17 2 views
1

Ich möchte alle Kreiseinheiten aus einer DXF-Datei löschen. Ich benutze ezdxf, es scheint ein gutes Werkzeug für diese Art von Arbeit zu sein.Entfernen Sie Kreise in DXF mit ezdxf

benutzte ich ezdxf doc meinen Code zu schreiben, aber ich erhalte eine Fehlermeldung von Python:

AttributeError: 'str' objet has no attribute 'destroy' 

Ich verstehe nicht, warum. Ich verwendet, um dieses doc: http://pythonhosted.org/ezdxf/layouts.html#delete-entities

Hier ist mein Code:

import dxfgrabber 
import ezdxf 

dwg = dxfgrabber.readfile("test.dxf") 
print(dwg) 
c = [] 
center_points = [entity.center for entity in dwg.entities if entity.dxftype == 'CIRCLE'] 
dxf = ezdxf.readfile("test.dxf") 
modelspace = dxf.modelspace() 
for point in center_points: 
    modelspace.add_point(point) 
    c.append(point) 
modelspace.delete_entity('CIRCLE') 
dxf.save() 
print(c) 

Dank.

Antwort

2

Ich war erfolgreich. Ich poste meinen Code:

entities = dxf.entities 
for e in entities: 
     if e.dxftype() == 'CIRCLE': 
      modelspace.delete_entity(e) 

Statt:

modelspace.delete_entity('CIRCLE') 

glaube, ich kann es einen besseren Weg, es zu tun, aber es funktioniert.

1
  1. Um eine DXF-Entität zu löschen, müssen Sie ein DXF-Entitätsobjekt und keine Zeichenfolge übergeben.
  2. Wenn Sie Objekte aus dem Modellbereich löschen, ist es besser, einfach über die Entitäten des Modellbereichs zu iterieren, dxf.entities enthält die Entitäten des Modellbereichs und den aktiven Papierbereich: für e in dxf.modelspace() .. .

oder verwenden Sie die Abfrage() Funktion:

msp = dxf.modelspace() 
for circle in msp.query('CIRCLE'): 
    msp.delete_entity(circle)