SOC Accepted Proposals
SOC Accepted Proposals
Four proposals were accepted.
- Connectors - Michael Wybrow
- Inkboard - David Yip (InkboardIntegrationSchedule)
- OCAL Interface - Greg Steffensen (project being developed at Berlios)
- DXF Import / Export (proposal below) - Matthew Squires
The proposal pretty much follows the Perl funding outline that was linked on the SOC website.
Name: Matthew Squires
Project Title: Creation of a library for the import/export of dxf in Inkscape
Benefits to Inkscape
A library for importing/exporting dxf files would make Inkscape a more flexible piece of software especially for those that create technical drawings. For example, I have used Macromedia Freehand to import dxf technical drawings so I could add artistic elements for papers and presentations. Directly importing and exporting dxf in Inkscape would make Inkscape a more attractive piece of software for those that already have CAD drawings but would like to make them "presentable."
I will create a library that will import/export data to/from Inkscape from/to the dxf format. This library will directly import all of the basic properties common to the dxf format and Inkscape (e.g. lines and layers). Objects that do not directly convert (e.g. spirals) will be supported by using extra information to properly complete the translation. It should be assumed that any 3D data contained in the dxf will be flattened.
The conversion functions will be made to incorporate into Inkscape via a library. I will also include documentation of the library including examples. I would like to create a svg2dxf and a dxf2svg directly from the code, but I do not want to commit to delivery of stand-alone programs in the time allotted.
I will create a library that will directly convert all of the directly convertible information between a dxf/svg. That includes but is not limited to: lines, splines, layers, and text. All 3D information will be flattened but I would imagine that in the future a simple method for translating elevation to layers could be implemented, but not this summer. Because dxf does not include units this information will need to be supplied for all conversions.
Items that require additional information will be converted if the information is given. This is done in other programs (i.e. FlexPDE) that require more information than dxf can provide. An example would be importing a spiral from dxf into svg. Additional tags can be applied to the dxf to supply the additional information (e.g. revolution) to create a spiral in Inkscape. Some items that would be supported in dxf import are spirals, stars, color, fills, and text on a path. On the other hand a spiral can be exported to dxf as a series of splines. The user can set the export resolution, or use the default resolution. Some items that would be exported to dxf are spirals and stars. I would like to work on exporting text on a path, but at this time I won’t promise that it will be functional until I understand better how Inkscape performs this task.
First I will take a few days to better understand the Inkscape file format. Then I will break the schedule into two pieces: svg->dxf and dxf->svg. For the dxf->svg I estimate that the directly convertible code (DCC) can be written in a 2-3 days, the non-direct conversion code (NDCC) in 3-4. I think the svg->dxf DCC will take 3-4 days. The NDCC is a little more complicated because extra information will need to be processed, so I am going to estimate about a week for that code. The total is about 2.5 weeks. As mentioned on the Inkscape wiki all projects take about pi times longer to complete, so the completion of this code should be reasonable in a summer. The documentation code should be written at the same time functions are written. Example programs will be developed along the way as result of testing.
I am a physics Phd candidate at the University of Colorado and I have recently been using Inkscape to create figures for papers and presentations. I have been coding in C++ for about 5 years. I am self-taught in C++, but have some formal education in other languages. I would say I am a proficient programmer and can create good code. I have mostly worked on ing magnetic fields, but part of my code reads some basic information from dxf files to define the regions of interest (ROI). I am familiar with the dxf standard and what it takes to read dxf. I have looked at open source dxf libraries, specifically dime and QCad. I also recently found Blender reads dxf files. I would have no problem pulling code from those sources.
I am familiar with the SVG format, and actually looked at reading ROI information from SVG's but for some reason several years ago chose dxf instead (probably because at the time I found better CAD editors). I have also used a variant of XML in LabVIEW to control the parameters of my experiment. A lab mate performed most of the coding, but I have a working knowledge of XML. I think there is open source code for reading XML tags, so I would like to find some code that already reads the XML tags and information from a file to hurry the project along.