[Python-de] DXF und Python

Georg Mischler schorsch at schorsch.com
Fre Aug 6 11:33:17 CEST 2004


Plum, Simon (RWTH Aachen) wrote:

>
> > > ich würde gern für mein Python-Programm Daten aus einem DXF-File
> einlesen
> > > und auch wieder zurück schreiben.
> > > Gibt es da schon fertige Schnittstellen oder Parser oder ähnliches?
> > > Ich habe bisher nichts gefunden :-(
> >
> > Ich habe mal einen DXF-Konverter in C geschrieben, aber der Code
> > ist im Moment nicht öffentlich zugänglich.
> > In Python kenne ich nichts, das sollte allerdings nicht besonders
> > schwierig zu machen sein. Wenn du Dateien üblicher Größe einlesen
> > willst, dann könnte es nur unerträglich langsam werden...
> > Was für Informationen willst du aus den Daten denn rausziehen?
> >
> >
> > -schorsch
>
>
> Ich brauche alle Informationen einer Datei, die mit 'E-Plan' (eine Art
> AutoCAD für elektrische Schaltpläne) erstellt wurde und Daten über die
> verwendeten grafischen Symbole elektrischer Bauteile enthält. Ich will diese
> Daten dann in XML ablegen, d.h. wenn ich die DXF-Datei in XML konvertieren
> könnte würde mir das auch schon reichen.

Das könnte fast schon eine reine Text-Transformation werden.

Jeder Datenpunkt (oder Knoten) ist in DXF in zwei Zeilen
dargestellt, wobei die erste Zeile ein Int als Code für den
Elementtyp enthält, und die zweite Zeile dessen Wert. Diese
Elemente bilden eine hierarchische Struktur, wobei eine neue
Gruppe (auf gleicher, höherer, oder niedrigerer Hierarchiestufe)
jeweils mit dem Code 0 eingeführt wird.

Die Hierarchie sieht folgendermassen aus:

DXF (implizit)
  SECTION
    ENTITY|BLOCK|LAYER|ETC.
      Key = Value
      ...
    ENDENTITY (meistens implizit)
    ...
  ENDSEC
  ...
ENDDXF (implizit)

Es gibt mehrere Sections, und darin jeweils die passenden
intergeordneten Elementgruppen.  Dabei können Elemente auch auf
einander Bezug nehmen.

Sobald du das in XML umgesetzt hast, wird allerdings die
eigentliche Arbeit erst anfangen, die Daten vernünftig zu
interpretieren. Je nach dem wie E-Plan arbeitet, können
dessen Daten in die "normalen" DXF-Daten noch zusätzlich
eingebettet sein, in einem beliebigen und wahrscheinlich
undokumentierten Format...

Ist das eine Studienarbeit, oder gibt es ein Budget dafür?
Unter Umständen könnte ich dir ja helfen. Mein Konverter
schaut im Moment zwar fast nur die Geometriedaten an, aber
das Prinzip liesse sich ggf. erweitern und auf XML-Output
umstricken. Der umgekehrte Weg ist dann allerdings wieder
eine andere Geschichte.


-schorsch

PS:
Das hatte jetzt schon nichts mehr direkt mit Python zu tun.
Wenn wir weiter in diese Richtung diskutieren, sollten wir
das vielleicht nicht auf der Liste tun.

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/