pcb-rnd knowledge pool
DXF exporter rewrite
dxf1 by Tibor 'Igor2' Palinkas on 2017-08-29
Tags: announcement, dxf, export, format, rewrite
Abstract: Original announcement on the DXF exporter rewrite.
1. What we have
pcb-rnd got a new dxf exporter. It exports the outline, plated drills, unplated drills, top copper, bottom copper, top silk and bottom silk; each of these in their own separate dxf layer. It is capable of exporting lines, arcs, holes, polygons (and this includes elements, texts, pins, pads, etc.).
The goal is not to provide a 100% reliable storage of PCB data, but to communicate with mechanical engineers who are interested in board dimensions and location of mounting holes.
The code is very young yet; known bugs are:
- lines are round cap, so SMD pads will get rounded too (it would be relatively easy to fix that, but I first want to gauge user demand)
- it seems some implementations don't draw the solid fill hatch areas, I will probably draw a thin outline around them (will be a 10 minutes fix)
- filled circle (pin/via ring) is not really filled yet (will be trivial to fix).
A sample board in the native .lht format, exported to the old .pcb format and .dxf and a png rendered with librecad (click for the soruce files):
The new feature is accessible from svn trunk; the next release in October will include it.
We've tested the output with librecad, freecad, solid works and aspire.
2. what we could have later - dxf importer, anyone interested?
In theory I could also write a basic, somewhat limited, strictly 2d dxf importer, if there's measurable active user demand (including will to contribute sample files on request).
This could be used for the other direction, when the mech eng designs the shape of the board and the location of the main components (e.g. connectors) and you want to import that for laying out the board around.
3. how it happened (full code rewrite)
This code is brand new. It does not depend on any external library. I started to write it from scratch yesterday. We used to have Bert's dxf HID, but that did not yield working output and it was large (4980 sloc vs. the new code that's only 520 sloc).
Before anyone says "not invented here syndrome": it took 5 and a half hours total, including the time I spent on understanding the basics of librecad and the dxf file format. I am sure fixing the ~5ksloc code would have taken a magnitude more. Learning the API of some largish dxf lib would have taken even longer. And the result wouldn't have been much better.
4. where to get it, how to try it
svn checkout svn://repo.hu/pcb-rnd/trunk ./configure --buildin-export_dxf make cd src && ./pcb-rnd
Testing & feedback are welcome.