Forum: PC-Programmierung DXF Datei einlesen


von Leon (Gast)


Lesenswert?

Guten Morgen,

für eine spezielle Anforderung soll eine AutoCAD DXF Datei eingelesen 
und entsprechend soll auch die gezeichneten Linien, Kurven oder 
Rechtecke in C# manipuliert und anschließend wieder in eine DXF Datei 
gespeichert werden.

Zum Einlesen einer DXF Datei verwende ich folgenden C# Code:
https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files

Leider ist es mir bisher nicht gelungen, in dem C# Programm nachträglich 
zum Beispiel eine Linie zu verändern. Kennt sich hier jemand mit dem 
Quellcode aus?

von HyperMario (Gast)


Lesenswert?

Leon schrieb:
> für eine spezielle Anforderung soll eine AutoCAD DXF Datei eingelesen
> und entsprechend soll auch die gezeichneten Linien, Kurven oder
> Rechtecke in C# manipuliert und anschließend wieder in eine DXF Datei
> gespeichert werden.

Wäre es nicht einfacher die DXF Datei mit einem freien CAD Programm zu 
bearbeiten?

von Leon (Gast)


Lesenswert?

Mit eine C# Anwendung soll eine Berechnung durchgeführt werden.

von Leon (Gast)


Lesenswert?

Quasi eine Art Simulation.

von Leon (Gast)


Lesenswert?

Gibt es eine Freeware Möglichkeit dwg Dateien von AutoCAD in C# 
einzulesen?

von pegel (Gast)


Lesenswert?

Ich kann kein C#. Aber wenn es keine Lizenz Probleme gibt, würde ich mir 
den Quelltext von LibreCAD ansehen.

Die Funktionen dxfreader.cpp und dxfwriter.cpp sind doch recht 
überschaubar.

von stnv (Gast)


Lesenswert?

Leon schrieb:
"nachträglich … eine Linie ... verändern"


Wie umfangreich sollen die Änderungen aussehen?

von physiker (Gast)


Lesenswert?

Mann kann es auch umdrehen und ein plugin für ein CAD schreiben, z.B. 
qcad:
https://qcad.org/en/tutorial-creating-a-qcad-plugin

von STK500-Besitzer (Gast)


Lesenswert?

Leon schrieb:
> Leider ist es mir bisher nicht gelungen, in dem C# Programm nachträglich
> zum Beispiel eine Linie zu verändern. Kennt sich hier jemand mit dem
> Quellcode aus?

Das nicht, aber wuerdest du dein bisheriges Produkt hier reinstellen, 
k;nnte man die Hilfestellung geben. So klingt das mehr nach "Erledigt 
mal jemand meine Aufgabe f[r mich?!"

Es ist eine Textdatei. Man kann sie also mit einem Editor freier Wahl 
aendern und draus lernen.

von NichtWichtig (Gast)


Lesenswert?

DXF ist doch reiner Text,
der läßt sich doch 1a mit jeder Programmiersprache parsen.

Linien sind bestimmte Objekte die man nur rauspuhlen muß.

Hab sowas vor Jahren in C++ gemacht um aus CNC Maschinen zu füttern.

von oszi40 (Gast)


Lesenswert?

> sowas vor Jahren in C++ gemacht

Wenns wichtig wäre, hätte er sich schon gemeldet. Allerdings geht bei 
späterer DWG-Konvertierung auch einiges wieder verloren.

Leon schrieb:
> in C# manipuliert und anschließend wieder in eine DXF Datei
> gespeichert werden.

Sollte eigentlich kein Kunststück sein. Ein Viereck zeichnen, Editor 
anwerfen, ansehen und dann bearbeiten nach den Regeln Deiner Kunst. Die 
hohe Schule kommt dann später wenn die Grundlagen funktionieren.

von Leon (Gast)


Lesenswert?

Ja es handelt sich um eine Textdatei. Allerdings verstehe ich nicht wie 
zum Beispiel eine Linie oder Kreis in so einem Textfile abgelegt wird. 
Es kommt auch darauf an mit welcher Version das DXF File generiert wird. 
Das erste Ziel wäre, wie kann ich zum Beispiel eine Linie von so einem 
DXF File grafisch in C# ausgeben.

von HyperMario (Gast)


Lesenswert?

Leon schrieb:
> Ja es handelt sich um eine Textdatei. Allerdings verstehe ich nicht wie
> zum Beispiel eine Linie oder Kreis in so einem Textfile abgelegt wird.

Gar nicht, Sie wird mathematisch beschrieben. Linien haben Anfangs- und 
Endkoordinaten, Kreise Radien und Zentrumsposition.

Vom Prinzip her ist das alles super simpel. DXF ist aber ein extrem 
mächtiger Standard der über Jahrzehnte gewachsen ist. Da gibt es so 
viele Möglichkeiten dass man sich als Rookie nur auf das wesentliche 
konzentrieren kann.

von NichtWichtig (Gast)


Lesenswert?

Auch die grafische Darstellung ist keine große Sache.
Schritt 1 wäre das Erstellen einer simplen Software die Striche auf den 
Bildschirm zeichnen kann.

Schritt 2 das Einlesen des DXF, die Linien raus suchen und

Schritt 3: an die Grafikengine übergeben.


Ich hatte damals ein Konverter-Tool gebaut um die DXF-Objekte so zu 
ordnen das ein Fräser sie im Werkstück abfahren kann, also von DXF in 
das Format konvertieren was PCDreh einlesen konnte.

Anfang und Ende jeder Linie mit den anderen vegleichen und an ihrer 
Verbindungspunkte verketten, daher C++ mit Objekten.
Wobei da auch andere geometrische Dinge vor kamen.

Zu Analyse des Konverters und der DXF Files gabs dann noch ein 
Windows-Tool womit man die DXF Objekte sichtbar machen konnte.

von Clemens L. (c_l)


Lesenswert?

Leon schrieb:
> Allerdings verstehe ich nicht wie zum Beispiel eine Linie oder Kreis in
> so einem Textfile abgelegt wird.

http://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf

> Es kommt auch darauf an mit welcher Version das DXF File generiert wird.

Nein, das ist rückwärtskompatibel (die meisten Einträge kannst du 
ignorieren).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.