View Issue Details

IDProjectCategoryView StatusLast Update
0002205FreeCADFeaturepublic2016-01-19 02:06
ReporteryorikAssigned Toyorik 
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
PlatformPCOSDebianOS VersionTesting 64bit
Product Version 
Target VersionFixed in Version0.16 
Summary0002205: Draft - Recode a DXF importer in C++
DescriptionThe current importer is way too slow for big files.
Maybe borrow dxf import code from heekscad:
https://github.com/Heeks/heekscad/tree/master/src
see HDxf.cpp (reimplements/extends dxf.cpp)
TagsNo tags attached.

Activities

lambda

2015-08-04 13:40

reporter   ~0006266

The main problem I had with big files and DXF export has been that FreeCAD consumes insane amounts of memory, which probably is more related to the algorithm then to the programming language. I was wondering if ezdxf by Manfred Moitzi http://bitbucket.org/mozman/ezdxf might be a suitable base for future DXF support. Did anybody look into this?

I notice that you wrote only about import, while I wrote about export, but I guess support for both should come from the some codebase if possible.

yorik

2015-08-04 13:54

administrator   ~0006267

The problem of the amount of memory is indeed not related to the programming language, but the speed is. Python is notoriously slow at treating huge lists of objects, which is exactly the case of a dxf file...

In any case recoding this from scratch with a simpler and faster code is the way to go,and doing it in C++ even better.

The ezdxf module you mention is pretty similar to the one we currently use, that comes from blender... There shouldn't be much difference in efficiency.

Export is actually less of a problem, because 1) You usually work with far less objects in FreeCAD and 2) We already have pretty fast dxf export code in the Drawing WB, it could just be extended...

yorik

2016-01-03 19:14

administrator   ~0006664

Almost done, still missing: dimensions support

Issue History

Date Modified Username Field Change
2015-08-03 14:25 yorik New Issue
2015-08-03 14:25 yorik Status new => assigned
2015-08-03 14:25 yorik Assigned To => yorik
2015-08-04 13:40 lambda Note Added: 0006266
2015-08-04 13:54 yorik Note Added: 0006267
2015-08-10 22:56 yorik Changeset attached => FreeCAD Master master d5f80ff6
2015-08-12 13:26 yorik Changeset attached => FreeCAD Master master 51cff8f0
2015-08-13 18:56 yorik Changeset attached => FreeCAD Master master 9d10f3e0
2016-01-03 19:14 yorik Note Added: 0006664
2016-01-04 20:01 yorik Changeset attached => FreeCAD Master master 273131c0
2016-01-04 20:01 yorik Status assigned => closed
2016-01-04 20:01 yorik Resolution open => fixed
2016-01-19 02:06 yorik Fixed in Version => 0.16