Login  Register

DXF read gives only points, no lines 2.1.0

Posted by PCB.Wiz on Jun 19, 2016; 9:16pm
URL: https://forum.librecad.org/DXF-read-gives-only-points-no-lines-2-1-0-tp5713964.html

Using this
Version: 2.1.0
Compiler: GNU GCC 4.9.1
Compiled on: Jun  5 2016
Qt Version: 5.4.1
Boost Version: 1.53.0
System: Windows 8.1

When I read DXF files, there are no errors, but no lines appear, just points. Text is ok,

Looking carefully, I can see points present for each entity, and zooming in, they look to be point-pairs, probably one line-width apart*. They are correctly scaled, just missing the lines ?
Layers look as expected.
So it mostly works, just renders in a strange manner.

Very strange, and I see recent posts somewhat similar.

DXF files are very simple outline drawings created from Mentor PADS via DXF Export.

Attached are two small simple test files - Just Circle/Square/Text/& 2 polyline with ARC
BoardOnly_mm_flat.dxf
BoardOnly_mm_Full.dxf

DXF files import fine into other CAD systems, and are a mature/older/stable DXF format.

* I changed the line width to 1mm, and checked the point-pairs, which report 0.25mm, so they are line related, but strangely spaced at one quarter the line width ?

Addit: As a workaround, I found if I download the old-but-good A9CAD and load DXF into that, (loads fine) then save-as, then the A9CAD dxf will then load into LibreCAD mostly ok. (seems to have line-width issues, but lines are all there)

addit2:
Looking at the fail/pass DXFs, I see the fail case uses SEQEND for the polylines, but the pass ones saved  using a vertex pair.
Maybe LibreCAD is not correctly handling the SEQEND structure ?
http://www.autodesk.com/techpubs/autocad/acad2000/dxf/seqend_dxf_06.htm
http://www.klayout.de/dxf_format.html

ok:
AcDbPolyline
 90
        2
 70
     0
 43
1.0
 10
5.969
 20
3.429
 10
5.08
 20
4.318
  0
LWPOLYLINE

fails?:
POLYLINE
 5
2E
  8
2DLINES_1
 66
1
 40
1.000000
 41
1.000000
  0
VERTEX
 5
2F
  8
2DLINES_1
 10
5.96900
 20
3.42900
  0
VERTEX
 5
30
  8
2DLINES_1
 10
5.08000
 20
4.31800
  0
SEQEND