Problem, die Werte einer DXF-Datei nach dem Lesen mit Python zu kategorisieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
newbee3268
User
Beiträge: 1
Registriert: Sonntag 9. April 2023, 07:27

Hallo alle zusammen,

Ich habe ein Problem im folgenden Code.Mein Code kann die Koordinaten der .dxf Datei lesen und wie folgt drucken. Aber ich muss es als Linie oder Kreis kategorisieren. Die Kategorisierungsbedingungen sind wie folgt: -

1) Identifizieren Sie den Kreis, wenn die Geometrie durch die Koordinaten des Mittelpunkts und des Radius beschrieben wird
2) Identifizieren Sie als Linien, wenn (Geometrie wird durch Position, Breite(width) und pitch(auf Englisch) definiert).

Könnten Sie bitte vorschlagen, wie kann ich die Änderungen in meinem obigen Code vornehmen?

Code: Alles auswählen

import ezdxf
filename = r'D:\Python\sample.dxf'
# Open the DXF file
doc = ezdxf.readfile(filename)

# Get the modelspace block from the DXF file [Abrufen des Modelspace-Blocks aus der DXF-Datei]
modelspace = doc.modelspace()

# Create an empty list to hold the contents of the DXF file [Erstellen Sie eine leere Liste für den Inhalt der DXF-Datei]
dxf_contents = []

# Iterate over all the entities in the modelspace block and append them to the list [Durchlaufen Sie alle Elemente im Modelspace-Block und hängen Sie sie an die Liste an.]
for entity in modelspace:
    dxf_contents.append(entity)

# Print the contents of the DXF file
print(dxf_contents)
Ausgabedaten der DXF-Datei

Code: Alles auswählen

<class 'ezdxf.entities.circle.Circle'> CIRCLE(#2FBFD), <class 'ezdxf.entities.circle.Circle'> CIRCLE(#2FBFE), <class 'ezdxf.entities.circle.Circle'> CIRCLE(#2FBFF), <class 'ezdxf.entities.circle.Circle'> CIRCLE(#2FC00), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E7C), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E85), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E86), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E87), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E88), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E89), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E8A), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E8D), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E8E), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E8F), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E90), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E91), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E94), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E95), <class 'ezdxf.entities.lwpolyline.LWPolyline'> LWPOLYLINE(#31E96)
Benutzeravatar
HarteWare
User
Beiträge: 69
Registriert: Samstag 23. Februar 2013, 21:16
Wohnort: localhost

__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Klassifizierung wird ja schon vorgenommen. Die Bibliothek erzeugt verschiedene Objekte. Um die zu unterscheiden, kann man zb isinstance mit der dazugehörigen klasse benutzen.
Antworten