>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C

Een AutoCAD-tekening lezen zonder AutoCAD zelf

Stel je dit voor: je moet data extraheren uit een oude technische tekening of de automatische generatie van diagrammen regelen, maar je budget laat de aanschaf van AutoCAD-licenties niet toe, en proprietaire SDK's kosten evenveel als een vliegtuigvleugel. Het DWG-formaat is een ware "black box" van de technische wereld. Het is gesloten, binair en verandert om de paar jaar. Het handmatig parsen ervan is een twijfelachtig genoegen dat maanden kan duren.

Daar komt LibreDWG om de hoek kijken. Dit is een gratis C-bibliotheek die deel uitmaakt van het GNU-project en zichzelf een ambitieus doel stelt: ontwikkelaars een volwaardig hulpmiddel bieden voor het lezen en schrijven van DWG-bestanden zonder vendor lock-in.

Waar dit project over gaat

LibreDWG is voortgekomen uit een fork van LibDWG. Ironisch genoeg was de reden voor de splitsing de taal: het oorspronkelijke project gebruikte Esperanto in de code en documentatie. De gemeenschap besloot dat Engels beter was voor het aantrekken van bijdragers, en zo werd LibreDWG geboren.

Tegenwoordig is het ongetwijfeld de meest serieuze Open Source-oplossing voor het werken met het DWG-formaat. De bibliotheek kan vrijwel alle versies van bestanden decoderen. Schrijven is wat gecompliceerder (vooral voor versies nieuwer dan R2004), maar het project wordt actief ontwikkeld. Als je alleen data hoeft te lezen, tekst moet extraheren of een tekening naar SVG wilt converteren — dit is precies wat je zoekt.

Wat de bibliotheek kan doen

De ontwikkelaars hebben niet alleen de bibliotheekcode vrijgegeven, maar deze ook voorzien van een heleboel nuttige hulpprogramma's. Dit zijn geweldige voorbeelden van hoe je de API in de praktijk kunt gebruiken.

Converteren naar vector en JSON

Met dwgread kun je een binaire tekening omzetten naar iets leesbaars. JSON, DXF en zelfs GeoJSON worden ondersteund. Dit opent de deur naar webvisualisatie: run het bestand door de converter, krijg JSON, render het op Canvas of SVG.

Door tekeningen zoeken

Met het hulpprogramma dwggrep kun je naar tekstreeksen in DWG-bestanden zoeken met behulp van reguliere expressies. Als je een archief van duizend tekeningen hebt en een specifiek knooppunt of specificatie moet vinden, bespaart dit hulpmiddel je uren werk.

Laagmanipulatie

Via dwglayers kun je snel een lijst van alle lagen ophalen. Dit is nuttig voor geautomatiseerde compliance-controlesystemen of gewoon om de structuur van een complex project te begrijpen.

Tekeningen vanaf nul genereren

Het hulpprogramma dwgadd is de gemakkelijkste manier om programmatisch een DWG-bestand te maken. Het accepteert eenvoudige commando's voor het maken van entiteiten en hun eigenschappen. Je hoeft je niet te verdiepen in de finesses van het binaire formaat — beschrijf gewoon wat je in de tekening wilt zien.

Technische fundamenten

De bibliotheek is geschreven in C99, wat hem maximaal draagbaar maakt. Hij voelt zich thuis op Linux en Windows (via MSYS2 of Visual Studio 2019+).

Een interessant punt betreft de coderingen. Oude versies van DWG gebruikten ongeveer 30 verschillende codepagina's. LibreDWG handelt al het vuile werk af van het converteren van deze zoo naar UTF-8. Intern gebruikt het UTF-8 (meer precies WTF8, aangezien Windows UCS-2 zijn eigen eigenaardigheden heeft met surrogate pairs), wat problemen met "kapotte tekst" in laagnamen of teksten elimineert.

Voor degenen die niet in pure C willen schrijven, zijn er bindings voor Python en Perl beschikbaar via SWIG. Dit stelt je in staat om snel een script op te zetten voor het verwerken van tekeningen, met de volledige kracht van high-level talen.

Voor wie dit is

Ik zie verschillende scenario's waarin LibreDWG onmisbaar zal zijn:

  1. Documentworkflow-automatisering. Wanneer je data automatisch moet extraheren uit tekeningstempels en in een database moet invoeren.
  2. Webdiensten voor ingenieurs. Online viewers of converters maken zonder zware server-side software te gebruiken.
  3. Rapportgeneratie. Als je een apparatuurplattegrond aan een rapport moet toevoegen dat gegenereerd wordt in PDF of PostScript.
  4. GIS-integratie. Dankzij GeoJSON-ondersteuning kan data uit tekeningen direct worden gevoed naar geografische informatiesystemen.

Is het de moeite waard om te proberen

Je moet begrijpen dat werken met DWG altijd op dun ijs lopen is. Het formaat is propriatair, en reverse engineering houdt niet altijd gelijke tred met AutoCAD-updates. Zo kunnen er bij het schrijven van bestanden van versies R2010-R2018 nog steeds checksum (CRC)-fouten optreden.

Voor lees- en conversietaken is LibreDWG echter een krachtig en, het belangrijkste, gratis hulpmiddel. Als je de noodzaak hebt ervaren om tekeningen programmatisch te verwerken, begin dan met het verkennen van de voorbeelden in de examples-map. Daar staat een load_dwg.c-bestand — dat is een uitstekend skelet voor je toekomstige applicatie.

Het project leeft, er worden commits ingediend, en documentatie in Texinfo- en Doxygen-formaat helpen je door de diepten van de API te navigeren. Als je bereid bent om enkele beperkingen bij het schrijven van nieuwe formaten te tolereren, wordt LibreDWG een geweldige aanvulling op je gereedschapskist.

Gerelateerde projecten