>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
C

So lesen Sie eine AutoCAD-Zeichnung ohne AutoCAD selbst

Stellen Sie sich vor: Sie müssen Daten aus einer alten technischen Zeichnung extrahieren oder die Diagrammerstellung automatisieren, aber Ihr Budget erlaubt keine AutoCAD-Lizenzen, und proprietäre SDKs kosten so viel wie ein Flugzeugflügel. Das DWG-Format ist eine echte „Black Box" der Technikerwelt. Es ist geschlossen, binär und ändert sich alle paar Jahre. Es manuell zu parsen ist ein zweifelhaftes Vergnügen, das sich über Monate hinziehen kann.

Genau hier kommt LibreDWG ins Spiel. Dies ist eine freie C-Bibliothek, die Teil des GNU-Projekts ist und sich ein ehrgeiziges Ziel gesetzt hat: Entwicklern ein vollwertiges Tool zum Lesen und Schreiben von DWG-Dateien ohne Vendor Lock-in zu bieten.

Worum es bei diesem Projekt geht

LibreDWG ist aus einem Fork von LibDWG hervorgegangen. Ironischerweise war der Grund für die Trennung die Sprache: Das ursprüngliche Projekt verwendete Esperanto in seinem Code und seiner Dokumentation. Die Community entschied, dass Englisch besser für die Gewinnung von Mitwirkenden sei, und so wurde LibreDWG geboren.

Heute ist es arguably die ernsthafteste Open-Source-Lösung für die Arbeit mit dem DWG-Format. Die Bibliothek kann praktisch alle Dateiversionen dekodieren. Das Schreiben ist etwas komplizierter (besonders für Versionen neuer als R2004), aber das Projekt entwickelt sich aktiv. Wenn Sie nur Daten lesen, Text extrahieren oder eine Zeichnung in SVG konvertieren müssen – das ist genau das, wonach Sie gesucht haben.

Was die Bibliothek kann

Die Entwickler haben nicht nur den Bibliothekscode veröffentlicht, sondern auch mit einer Reihe nützlicher Utilities ausgestattet. Dies sind großartige Beispiele dafür, wie die API in der Praxis verwendet werden kann.

Konvertierung zu Vektor und JSON

Mit dwgread können Sie eine binäre Zeichnung in ein menschenlesbares Format umwandeln. JSON, DXF und sogar GeoJSON werden unterstützt. Dies öffnet die Tür zur Web-Visualisierung: Führen Sie die Datei durch den Konverter, erhalten Sie JSON und rendern Sie es auf Canvas oder SVG.

Suche in Zeichnungen

Das dwggrep Utility ermöglicht es, mit regulären Ausdrücken nach Textzeichenketten in DWG-Dateien zu suchen. Wenn Sie ein Archiv mit tausend Zeichnungen haben und einen bestimmten Knoten oder eine bestimmte Spezifikation finden müssen, spart dieses Tool Ihnen stundenlange Arbeit.

Layer-Manipulation

Durch dwglayers können Sie schnell eine Liste aller Layer abrufen. Dies ist nützlich für automatisierte Compliance-Prüfsysteme oder einfach um die Struktur eines komplexen Projekts zu verstehen.

Zeichnungen von Grund auf generieren

Das dwgadd Tool ist der einfachste Weg, programmatisch eine DWG-Datei zu erstellen. Es akzeptiert einfache Befehle zum Erstellen von Entities und ihren Eigenschaften. Sie müssen nicht in die Feinheiten des Binärformats eintauchen – beschreiben Sie einfach, was Sie in der Zeichnung sehen möchten.

Technische Grundlagen

Die Bibliothek ist in C99 geschrieben, was sie maximal portabel macht. Sie fühlt sich auf Linux und Windows (über MSYS2 oder Visual Studio 2019+) wie zu Hause.

Ein interessanter Punkt betrifft Encodings. Alte DWG-Versionen verwendeten etwa 30 verschiedene Codepages. LibreDWG übernimmt die gesamte mühsame Arbeit der Konvertierung dieses Zoos nach UTF-8. Intern verwendet es UTF-8 (genauer gesagt WTF8, da Windows UCS-2 seine eigenen Eigenheiten mit Surrogate-Paaren hat), was Probleme mit „Kaputten Texten" in Layernamen oder Texten eliminiert.

Für diejenigen, die nicht in reinem C schreiben möchten, sind Bindings für Python und Perl über SWIG verfügbar. Dies ermöglicht es, schnell ein Skript für die Verarbeitung von Zeichnungen zu erstellen und die volle Leistung höherer Programmiersprachen zu nutzen.

Für wen ist das gedacht

Ich sehe mehrere Szenarien, in denen LibreDWG unverzichtbar sein wird:

  1. Automatisierung von Dokumenten-Workflows. Wenn Sie automatisch Daten aus Zeichnungsstempeln extrahieren und in eine Datenbank eingeben müssen.
  2. Webservices für Ingenieure. Erstellung von Online-Viewern oder Konvertern ohne Verwendung von schwerer serverseitiger Software.
  3. Berichterstellung. Wenn Sie ein Gerätelayout-Diagramm an einen in PDF oder PostScript generierten Bericht anhängen müssen.
  4. GIS-Integration. Dank GeoJSON-Unterstützung können Daten aus Zeichnungen direkt in geografische Informationssysteme geleitet werden.

Lohnt es sich, es zu versuchen

Sie müssen verstehen, dass die Arbeit mit DWG immer ein Eis betreten ist. Das Format ist proprietär, und Reverse Engineering hält nicht immer mit AutoCAD-Updates Schritt. Zum Beispiel kann das Schreiben von Dateien der Versionen R2010-R2018 immer noch zu Prüfsummenfehlern (CRC) führen.

Für Lese- und Konvertierungsaufgaben ist LibreDWG jedoch ein leistungsstarkes und vor allem kostenloses Tool. Wenn Sie auf die Notwendigkeit gestoßen sind, Zeichnungen programmatisch zu verarbeiten, beginnen Sie mit der Erkundung der Beispiele im examples-Ordner. Dort gibt es eine load_dwg.c-Datei – das ist ein ausgezeichnetes Grundgerüst für Ihre zukünftige Anwendung.

Das Projekt ist lebendig, Commits werden eingereicht, und Dokumentation in Texinfo- und Doxygen-Formaten wird Ihnen helfen, sich in den Tiefen der API zurechtzufinden. Wenn Sie bereit sind, einige Einschränkungen beim Schreiben neuer Formate zu tolerieren, wird LibreDWG eine großartige Ergänzung zu Ihrem Werkzeugkasten sein.

Ähnliche Projekte