https://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&feed=atom&action=historySOC Accepted Proposals - Revision history2024-03-28T21:38:21ZRevision history for this page on the wikiMediaWiki 1.36.1https://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=74054&oldid=prevNeoPhyte Rep: /* SOC Accepted Proposals */ Expanded OCAL Acronym2011-12-02T16:45:54Z<p><span dir="auto"><span class="autocomment">SOC Accepted Proposals: </span> Expanded OCAL Acronym</span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 16:45, 2 December 2011</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l5">Line 5:</td>
<td colspan="2" class="diff-lineno">Line 5:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - [http://code.samediff.net/ Michael Wybrow] [[UsingTheConnectorTool]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - [http://code.samediff.net/ Michael Wybrow] [[UsingTheConnectorTool]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]]) ([[Inkboard2.0]])</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]]) ([[Inkboard2.0]])</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 OCAL Interface] - [https://developer.berlios.de/users/gsteff/ Greg Steffensen] (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 <ins style="font-weight: bold; text-decoration: none;">Open Clip Art Library (</ins>OCAL<ins style="font-weight: bold; text-decoration: none;">) </ins>Interface] - [https://developer.berlios.de/users/gsteff/ Greg Steffensen] (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* DXF Import / Export (proposal below) - Matthew Squires</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* DXF Import / Export (proposal below) - Matthew Squires</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
</table>NeoPhyte Rephttps://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=7167&oldid=prevGigaClon: Categorization2006-06-21T16:05:53Z<p>Categorization</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 16:05, 21 June 2006</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l97">Line 97:</td>
<td colspan="2" class="diff-lineno">Line 97:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== ACI to RGB conversion ===</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== ACI to RGB conversion ===</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>ACI stands for <del style="font-weight: bold; text-decoration: none;">[[</del>AutoCAD<del style="font-weight: bold; text-decoration: none;">]] </del>color index. It is a table of codes which describe color in DXF files. Here is some code to convert ACI to RGB, which I've written for my simple DXF reader. Resulting R, G and B values are 8-bit, in range 0-255. You can create a macro RGB(R,G,B) to convert it to proper colorspace values. I hope it can help a bit. The code is released under GPL.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>ACI stands for AutoCAD color index. It is a table of codes which describe color in DXF files. Here is some code to convert ACI to RGB, which I've written for my simple DXF reader. Resulting R, G and B values are 8-bit, in range 0-255. You can create a macro RGB(R,G,B) to convert it to proper colorspace values. I hope it can help a bit. The code is released under GPL.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>P.S. I know it is not the best place for pasting a code. Please remove it from this place, when it is no more useful or if it can be placed somewhere else.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>P.S. I know it is not the best place for pasting a code. Please remove it from this place, when it is no more useful or if it can be placed somewhere else.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l172">Line 172:</td>
<td colspan="2" class="diff-lineno">Line 172:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> return RGB(R,G,B);</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> return RGB(R,G,B);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> }</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> }</div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category:Wiki Attic]]</ins></div></td></tr>
</table>GigaClonhttps://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=4800&oldid=prevConversion script: link fix2006-01-22T02:33:46Z<p>link fix</p>
<p><b>New page</b></p><div>== SOC Accepted Proposals ==<br />
<br />
Four proposals were accepted.<br />
<br />
* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - [http://code.samediff.net/ Michael Wybrow] [[UsingTheConnectorTool]]<br />
* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]]) ([[Inkboard2.0]])<br />
* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 OCAL Interface] - [https://developer.berlios.de/users/gsteff/ Greg Steffensen] (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])<br />
* DXF Import / Export (proposal below) - Matthew Squires<br />
<br />
<br />
=== DXF import/export ===<br />
The proposal pretty much follows the Perl funding outline that was linked on the SOC website.<br />
<br />
Name: Matthew Squires<br />
<br />
Project Title: Creation of a library for the import/export of dxf in Inkscape<br />
<br />
Benefits to Inkscape<br />
<br />
A library for importing/exporting dxf files would make Inkscape a more flexible<br />
piece of software especially for those that create technical drawings. For<br />
example, I have used Macromedia Freehand to import dxf technical drawings so I<br />
could add artistic elements for papers and presentations. Directly importing and<br />
exporting dxf in Inkscape would make Inkscape a more attractive piece of software<br />
for those that already have CAD drawings but would like to make them "presentable."<br />
<br />
Synopsis<br />
<br />
I will create a library that will import/export data to/from Inkscape from/to the<br />
dxf format. This library will directly import all of the basic properties common<br />
to the dxf format and Inkscape (e.g. lines and layers). Objects that do not<br />
directly convert (e.g. spirals) will be supported by using extra information to<br />
properly complete the translation. It should be assumed that any 3D data contained<br />
in the dxf will be flattened.<br />
<br />
Deliverables<br />
<br />
The conversion functions will be made to incorporate into Inkscape via a library.<br />
I will also include documentation of the library including examples. I would<br />
like to create a svg2dxf and a dxf2svg directly from the code, but I do not want<br />
to commit to delivery of stand-alone programs in the time allotted.<br />
<br />
Project Details<br />
<br />
I will create a library that will directly convert all of the directly convertible<br />
information between a dxf/svg. That includes but is not limited to: lines,<br />
splines, layers, and text. All 3D information will be flattened but I would<br />
imagine that in the future a simple method for translating elevation to layers<br />
could be implemented, but not this summer. Because dxf does not include units this<br />
information will need to be supplied for all conversions.<br />
<br />
Items that require additional information will be converted if the information is<br />
given. This is done in other programs (i.e. [[FlexPDE]]) that require more information<br />
than dxf can provide. An example would be importing a spiral from dxf into svg. <br />
Additional tags can be applied to the dxf to supply the additional information (e.g.<br />
revolution) to create a spiral in Inkscape. Some items that would be supported in<br />
dxf import are spirals, stars, color, fills, and text on a path. On the other hand<br />
a spiral can be exported to dxf as a series of splines. The user can set the export<br />
resolution, or use the default resolution. Some items that would be exported to dxf<br />
are spirals and stars. I would like to work on exporting text on a path, but at<br />
this time I won’t promise that it will be functional until I understand better how<br />
Inkscape performs this task.<br />
<br />
Project Schedule<br />
<br />
First I will take a few days to better understand the Inkscape file format. Then I<br />
will break the schedule into two pieces: svg->dxf and dxf->svg. For the dxf->svg I<br />
estimate that the directly convertible code (DCC) can be written in a 2-3 days, the<br />
non-direct conversion code (NDCC) in 3-4. I think the svg->dxf DCC will take 3-4<br />
days. The NDCC is a little more complicated because extra information will need to<br />
be processed, so I am going to estimate about a week for that code. The total is<br />
about 2.5 weeks. As mentioned on the Inkscape wiki all projects take about pi times<br />
longer to complete, so the completion of this code should be reasonable in a summer.<br />
The documentation code should be written at the same time functions are written. <br />
Example programs will be developed along the way as result of testing.<br />
<br />
Bio<br />
<br />
I am a physics Phd candidate at the University of Colorado and I have recently been<br />
using Inkscape to create figures for papers and presentations. I have been coding<br />
in C++ for about 5 years. I am self-taught in C++, but have some formal education<br />
in other languages. I would say I am a proficient programmer and can create good<br />
code. I have mostly worked on ing magnetic fields, but part of my code reads<br />
some basic information from dxf files to define the regions of interest (ROI). I<br />
am familiar with the dxf standard and what it takes to read dxf. I have looked at<br />
open source dxf libraries, specifically dime and QCad. I also recently found<br />
Blender reads dxf files. I would have no problem pulling code from those sources.<br />
<br />
I am familiar with the SVG format, and actually looked at reading ROI information<br />
from SVG's but for some reason several years ago chose dxf instead (probably because<br />
at the time I found better CAD editors). I have also used a variant of XML in<br />
[[LabVIEW]] to control the parameters of my experiment. A lab mate performed most of<br />
the coding, but I have a working knowledge of XML. I think there is open source<br />
code for reading XML tags, so I would like to find some code that already reads the<br />
XML tags and information from a file to hurry the project along.<br />
<br />
<br />
=== ACI to RGB conversion ===<br />
ACI stands for [[AutoCAD]] color index. It is a table of codes which describe color in DXF files. Here is some code to convert ACI to RGB, which I've written for my simple DXF reader. Resulting R, G and B values are 8-bit, in range 0-255. You can create a macro RGB(R,G,B) to convert it to proper colorspace values. I hope it can help a bit. The code is released under GPL.<br />
<br />
P.S. I know it is not the best place for pasting a code. Please remove it from this place, when it is no more useful or if it can be placed somewhere else.<br />
<br />
float aci_to_rgb(int aci)<br />
{<br />
aci = abs(aci); // hidden layers have negative color values<br />
if (aci<10 || aci>249) // values of these ranges are special colors<br />
{<br />
switch (aci)<br />
{<br />
case 1: return RGB(255,0,0); // basic colors<br />
case 2: return RGB(255,255,0);<br />
case 3: return RGB(0,255,0);<br />
case 4: return RGB(0,255,255);<br />
case 5: return RGB(0,0,255);<br />
case 6: return RGB(255,0,255);<br />
case 7: return RGB(255,255,255);<br />
case 8: return RGB(128,128,128);<br />
case 9: return RGB(192,192,192);<br />
case 250: return RGB(51,51,51); // grey shades<br />
case 251: return RGB(91,91,91);<br />
case 252: return RGB(132,132,132);<br />
case 253: return RGB(173,173,173);<br />
case 254: return RGB(214,214,214);<br />
case 255: return RGB(255,255,255);<br />
case 256: // "by layer"<br />
// Here you should decide how to handle "by layer" logical color.<br />
// Maybe it is a good idea to return a value like -1.<br />
// The outer code will find what is the color of the layer which<br />
// this entity belongs to.<br />
return -1;<br />
}<br />
}<br />
// for all the rest of ACI codes<br />
float H,S,L, R,G,B;<br />
int remainder = aci % 10; <br />
H = 1.5f * (aci - remainder - 10); // hue in range 0-360<br />
S = ((aci % 2) ? 0.5f : 1.0f); // odd colors have 50% of saturation, even - 100%<br />
// set lighteness, the last digit of aci code stands for this<br />
if (reminder == 0 || reminder == 1) L = 1.0f; <br />
if (reminder == 2 || reminder == 3) L = 0.8f;<br />
if (reminder == 4 || reminder == 5) L = 0.6f;<br />
if (reminder == 6 || reminder == 7) L = 0.5f;<br />
if (reminder == 8 || reminder == 9) L = 0.3f;<br />
// here we have H,S,L set already<br />
// let's convert it to RGB, first without consideration of S and L<br />
if (H<=120)<br />
{<br />
R = (120-H)/60;<br />
G = H/60;<br />
B = 0;<br />
}<br />
if (H>120 && H<=240)<br />
{<br />
R = 0;<br />
G = (240-H)/60;<br />
B = (H-120)/60;<br />
}<br />
if (H>240 && H<=360)<br />
{<br />
R = (H-240)/60;<br />
G = 0;<br />
B = (360-H)/60;<br />
}<br />
R = min(R, 1);<br />
G = min(G, 1);<br />
B = min(B, 1);<br />
// influence of S and L<br />
float max_value = max(R,max(G,B));<br />
R = (max_value-S*(max_value-R)) * L * 255;<br />
G = (max_value-S*(max_value-G)) * L * 255;<br />
B = (max_value-S*(max_value-B)) * L * 255;<br />
return RGB(R,G,B);<br />
}</div>Conversion scripthttps://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=4815&oldid=prevJonCruz: despam2005-12-17T07:43:52Z<p>despam</p>
<p><b>New page</b></p><div>== SOC Accepted Proposals ==<br />
<br />
Four proposals were accepted.<br />
<br />
* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - [http://code.samediff.net/ Michael Wybrow] [[UsingTheConnectorTool]]<br />
* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]]) ([[Inkboard2.0]])<br />
* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 OCAL Interface] - [https://developer.berlios.de/users/gsteff/ Greg Steffensen] (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])<br />
* DXF Import / Export (proposal below) - Matthew Squires<br />
<br />
<br />
=== DXF import/export ===<br />
The proposal pretty much follows the Perl funding outline that was linked on the SOC website.<br />
<br />
Name: Matthew Squires<br />
<br />
Project Title: Creation of a library for the import/export of dxf in Inkscape<br />
<br />
Benefits to Inkscape<br />
<br />
A library for importing/exporting dxf files would make Inkscape a more flexible<br />
piece of software especially for those that create technical drawings. For<br />
example, I have used Macromedia Freehand to import dxf technical drawings so I<br />
could add artistic elements for papers and presentations. Directly importing and<br />
exporting dxf in Inkscape would make Inkscape a more attractive piece of software<br />
for those that already have CAD drawings but would like to make them "presentable."<br />
<br />
Synopsis<br />
<br />
I will create a library that will import/export data to/from Inkscape from/to the<br />
dxf format. This library will directly import all of the basic properties common<br />
to the dxf format and Inkscape (e.g. lines and layers). Objects that do not<br />
directly convert (e.g. spirals) will be supported by using extra information to<br />
properly complete the translation. It should be assumed that any 3D data contained<br />
in the dxf will be flattened.<br />
<br />
Deliverables<br />
<br />
The conversion functions will be made to incorporate into Inkscape via a library.<br />
I will also include documentation of the library including examples. I would<br />
like to create a svg2dxf and a dxf2svg directly from the code, but I do not want<br />
to commit to delivery of stand-alone programs in the time allotted.<br />
<br />
Project Details<br />
<br />
I will create a library that will directly convert all of the directly convertible<br />
information between a dxf/svg. That includes but is not limited to: lines,<br />
splines, layers, and text. All 3D information will be flattened but I would<br />
imagine that in the future a simple method for translating elevation to layers<br />
could be implemented, but not this summer. Because dxf does not include units this<br />
information will need to be supplied for all conversions.<br />
<br />
Items that require additional information will be converted if the information is<br />
given. This is done in other programs (i.e. FlexPDE) that require more information<br />
than dxf can provide. An example would be importing a spiral from dxf into svg. <br />
Additional tags can be applied to the dxf to supply the additional information (e.g.<br />
revolution) to create a spiral in Inkscape. Some items that would be supported in<br />
dxf import are spirals, stars, color, fills, and text on a path. On the other hand<br />
a spiral can be exported to dxf as a series of splines. The user can set the export<br />
resolution, or use the default resolution. Some items that would be exported to dxf<br />
are spirals and stars. I would like to work on exporting text on a path, but at<br />
this time I won’t promise that it will be functional until I understand better how<br />
Inkscape performs this task.<br />
<br />
Project Schedule<br />
<br />
First I will take a few days to better understand the Inkscape file format. Then I<br />
will break the schedule into two pieces: svg->dxf and dxf->svg. For the dxf->svg I<br />
estimate that the directly convertible code (DCC) can be written in a 2-3 days, the<br />
non-direct conversion code (NDCC) in 3-4. I think the svg->dxf DCC will take 3-4<br />
days. The NDCC is a little more complicated because extra information will need to<br />
be processed, so I am going to estimate about a week for that code. The total is<br />
about 2.5 weeks. As mentioned on the Inkscape wiki all projects take about pi times<br />
longer to complete, so the completion of this code should be reasonable in a summer.<br />
The documentation code should be written at the same time functions are written. <br />
Example programs will be developed along the way as result of testing.<br />
<br />
Bio<br />
<br />
I am a physics Phd candidate at the University of Colorado and I have recently been<br />
using Inkscape to create figures for papers and presentations. I have been coding<br />
in C++ for about 5 years. I am self-taught in C++, but have some formal education<br />
in other languages. I would say I am a proficient programmer and can create good<br />
code. I have mostly worked on ing magnetic fields, but part of my code reads<br />
some basic information from dxf files to define the regions of interest (ROI). I<br />
am familiar with the dxf standard and what it takes to read dxf. I have looked at<br />
open source dxf libraries, specifically dime and QCad. I also recently found<br />
Blender reads dxf files. I would have no problem pulling code from those sources.<br />
<br />
I am familiar with the SVG format, and actually looked at reading ROI information<br />
from SVG's but for some reason several years ago chose dxf instead (probably because<br />
at the time I found better CAD editors). I have also used a variant of XML in<br />
LabVIEW to control the parameters of my experiment. A lab mate performed most of<br />
the coding, but I have a working knowledge of XML. I think there is open source<br />
code for reading XML tags, so I would like to find some code that already reads the<br />
XML tags and information from a file to hurry the project along.<br />
<br />
<br />
=== ACI to RGB conversion ===<br />
ACI stands for AutoCAD color index. It is a table of codes which describe color in DXF files. Here is some code to convert ACI to RGB, which I've written for my simple DXF reader. Resulting R, G and B values are 8-bit, in range 0-255. You can create a macro RGB(R,G,B) to convert it to proper colorspace values. I hope it can help a bit. The code is released under GPL.<br />
<br />
P.S. I know it is not the best place for pasting a code. Please remove it from this place, when it is no more useful or if it can be placed somewhere else.<br />
<br />
float aci_to_rgb(int aci)<br />
{<br />
aci = abs(aci); // hidden layers have negative color values<br />
if (aci<10 || aci>249) // values of these ranges are special colors<br />
{<br />
switch (aci)<br />
{<br />
case 1: return RGB(255,0,0); // basic colors<br />
case 2: return RGB(255,255,0);<br />
case 3: return RGB(0,255,0);<br />
case 4: return RGB(0,255,255);<br />
case 5: return RGB(0,0,255);<br />
case 6: return RGB(255,0,255);<br />
case 7: return RGB(255,255,255);<br />
case 8: return RGB(128,128,128);<br />
case 9: return RGB(192,192,192);<br />
case 250: return RGB(51,51,51); // grey shades<br />
case 251: return RGB(91,91,91);<br />
case 252: return RGB(132,132,132);<br />
case 253: return RGB(173,173,173);<br />
case 254: return RGB(214,214,214);<br />
case 255: return RGB(255,255,255);<br />
case 256: // "by layer"<br />
// Here you should decide how to handle "by layer" logical color.<br />
// Maybe it is a good idea to return a value like -1.<br />
// The outer code will find what is the color of the layer which<br />
// this entity belongs to.<br />
return -1;<br />
}<br />
}<br />
// for all the rest of ACI codes<br />
float H,S,L, R,G,B;<br />
int remainder = aci % 10; <br />
H = 1.5f * (aci - remainder - 10); // hue in range 0-360<br />
S = ((aci % 2) ? 0.5f : 1.0f); // odd colors have 50% of saturation, even - 100%<br />
// set lighteness, the last digit of aci code stands for this<br />
if (reminder == 0 || reminder == 1) L = 1.0f; <br />
if (reminder == 2 || reminder == 3) L = 0.8f;<br />
if (reminder == 4 || reminder == 5) L = 0.6f;<br />
if (reminder == 6 || reminder == 7) L = 0.5f;<br />
if (reminder == 8 || reminder == 9) L = 0.3f;<br />
// here we have H,S,L set already<br />
// let's convert it to RGB, first without consideration of S and L<br />
if (H<=120)<br />
{<br />
R = (120-H)/60;<br />
G = H/60;<br />
B = 0;<br />
}<br />
if (H>120 && H<=240)<br />
{<br />
R = 0;<br />
G = (240-H)/60;<br />
B = (H-120)/60;<br />
}<br />
if (H>240 && H<=360)<br />
{<br />
R = (H-240)/60;<br />
G = 0;<br />
B = (360-H)/60;<br />
}<br />
R = min(R, 1);<br />
G = min(G, 1);<br />
B = min(B, 1);<br />
// influence of S and L<br />
float max_value = max(R,max(G,B));<br />
R = (max_value-S*(max_value-R)) * L * 255;<br />
G = (max_value-S*(max_value-G)) * L * 255;<br />
B = (max_value-S*(max_value-B)) * L * 255;<br />
return RGB(R,G,B);<br />
}</div>JonCruzhttps://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=4813&oldid=prev67.50.76.50: despam2005-12-15T22:49:41Z<p>despam</p>
<p><b>New page</b></p><div>== SOC Accepted Proposals ==<br />
<br />
Four proposals were accepted.<br />
<br />
* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - [http://code.samediff.net/ Michael Wybrow] [[UsingTheConnectorTool]]<br />
* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]]) ([[Inkboard2.0]])<br />
* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 OCAL Interface] - [https://developer.berlios.de/users/gsteff/ Greg Steffensen] (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])<br />
* DXF Import / Export (proposal below) - Matthew Squires<br />
<br />
<br />
=== DXF import/export ===<br />
The proposal pretty much follows the Perl funding outline that was linked on the SOC website.<br />
<br />
Name: Matthew Squires<br />
<br />
Project Title: Creation of a library for the import/export of dxf in Inkscape<br />
<br />
Benefits to Inkscape<br />
<br />
A library for importing/exporting dxf files would make Inkscape a more flexible<br />
piece of software especially for those that create technical drawings. For<br />
example, I have used Macromedia Freehand to import dxf technical drawings so I<br />
could add artistic elements for papers and presentations. Directly importing and<br />
exporting dxf in Inkscape would make Inkscape a more attractive piece of software<br />
for those that already have CAD drawings but would like to make them "presentable."<br />
<br />
Synopsis<br />
<br />
I will create a library that will import/export data to/from Inkscape from/to the<br />
dxf format. This library will directly import all of the basic properties common<br />
to the dxf format and Inkscape (e.g. lines and layers). Objects that do not<br />
directly convert (e.g. spirals) will be supported by using extra information to<br />
properly complete the translation. It should be assumed that any 3D data contained<br />
in the dxf will be flattened.<br />
<br />
Deliverables<br />
<br />
The conversion functions will be made to incorporate into Inkscape via a library.<br />
I will also include documentation of the library including examples. I would<br />
like to create a svg2dxf and a dxf2svg directly from the code, but I do not want<br />
to commit to delivery of stand-alone programs in the time allotted.<br />
<br />
Project Details<br />
<br />
I will create a library that will directly convert all of the directly convertible<br />
information between a dxf/svg. That includes but is not limited to: lines,<br />
splines, layers, and text. All 3D information will be flattened but I would<br />
imagine that in the future a simple method for translating elevation to layers<br />
could be implemented, but not this summer. Because dxf does not include units this<br />
information will need to be supplied for all conversions.<br />
<br />
Items that require additional information will be converted if the information is<br />
given. This is done in other programs (i.e. FlexPDE) that require more information<br />
than dxf can provide. An example would be importing a spiral from dxf into svg. <br />
Additional tags can be applied to the dxf to supply the additional information (e.g.<br />
revolution) to create a spiral in Inkscape. Some items that would be supported in<br />
dxf import are spirals, stars, color, fills, and text on a path. On the other hand<br />
a spiral can be exported to dxf as a series of splines. The user can set the export<br />
resolution, or use the default resolution. Some items that would be exported to dxf<br />
are spirals and stars. I would like to work on exporting text on a path, but at<br />
this time I won’t promise that it will be functional until I understand better how<br />
Inkscape performs this task.<br />
<br />
Project Schedule<br />
<br />
First I will take a few days to better understand the Inkscape file format. Then I<br />
will break the schedule into two pieces: svg->dxf and dxf->svg. For the dxf->svg I<br />
estimate that the directly convertible code (DCC) can be written in a 2-3 days, the<br />
non-direct conversion code (NDCC) in 3-4. I think the svg->dxf DCC will take 3-4<br />
days. The NDCC is a little more complicated because extra information will need to<br />
be processed, so I am going to estimate about a week for that code. The total is<br />
about 2.5 weeks. As mentioned on the Inkscape wiki all projects take about pi times<br />
longer to complete, so the completion of this code should be reasonable in a summer.<br />
The documentation code should be written at the same time functions are written. <br />
Example programs will be developed along the way as result of testing.<br />
<br />
Bio<br />
<br />
I am a physics Phd candidate at the University of Colorado and I have recently been<br />
using Inkscape to create figures for papers and presentations. I have been coding<br />
in C++ for about 5 years. I am self-taught in C++, but have some formal education<br />
in other languages. I would say I am a proficient programmer and can create good<br />
code. I have mostly worked on ing magnetic fields, but part of my code reads<br />
some basic information from dxf files to define the regions of interest (ROI). I<br />
am familiar with the dxf standard and what it takes to read dxf. I have looked at<br />
open source dxf libraries, specifically dime and QCad. I also recently found<br />
Blender reads dxf files. I would have no problem pulling code from those sources.<br />
<br />
I am familiar with the SVG format, and actually looked at reading ROI information<br />
from SVG's but for some reason several years ago chose dxf instead (probably because<br />
at the time I found better CAD editors). I have also used a variant of XML in<br />
LabVIEW to control the parameters of my experiment. A lab mate performed most of<br />
the coding, but I have a working knowledge of XML. I think there is open source<br />
code for reading XML tags, so I would like to find some code that already reads the<br />
XML tags and information from a file to hurry the project along.<br />
<br />
<br />
=== ACI to RGB conversion ===<br />
ACI stands for AutoCAD color index. It is a table of codes which describe color in DXF files. Here is some code to convert ACI to RGB, which I've written for my simple DXF reader. Resulting R, G and B values are 8-bit, in range 0-255. You can create a macro RGB(R,G,B) to convert it to proper colorspace values. I hope it can help a bit. The code is released under GPL.<br />
<br />
P.S. I know it is not the best place for pasting a code. Please remove it from this place, when it is no more useful or if it can be placed somewhere else.<br />
<br />
float aci_to_rgb(int aci)<br />
{<br />
aci = abs(aci); // hidden layers have negative color values<br />
if (aci<10 || aci>249) // values of these ranges are special colors<br />
{<br />
switch (aci)<br />
{<br />
case 1: return RGB(255,0,0); // basic colors<br />
case 2: return RGB(255,255,0);<br />
case 3: return RGB(0,255,0);<br />
case 4: return RGB(0,255,255);<br />
case 5: return RGB(0,0,255);<br />
case 6: return RGB(255,0,255);<br />
case 7: return RGB(255,255,255);<br />
case 8: return RGB(128,128,128);<br />
case 9: return RGB(192,192,192);<br />
case 250: return RGB(51,51,51); // grey shades<br />
case 251: return RGB(91,91,91);<br />
case 252: return RGB(132,132,132);<br />
case 253: return RGB(173,173,173);<br />
case 254: return RGB(214,214,214);<br />
case 255: return RGB(255,255,255);<br />
case 256: // "by layer"<br />
// Here you should decide how to handle "by layer" logical color.<br />
// Maybe it is a good idea to return a value like -1.<br />
// The outer code will find what is the color of the layer which<br />
// this entity belongs to.<br />
return -1;<br />
}<br />
}<br />
// for all the rest of ACI codes<br />
float H,S,L, R,G,B;<br />
int remainder = aci % 10; <br />
H = 1.5f * (aci - remainder - 10); // hue in range 0-360<br />
S = ((aci % 2) ? 0.5f : 1.0f); // odd colors have 50% of saturation, even - 100%<br />
// set lighteness, the last digit of aci code stands for this<br />
if (reminder == 0 || reminder == 1) L = 1.0f; <br />
if (reminder == 2 || reminder == 3) L = 0.8f;<br />
if (reminder == 4 || reminder == 5) L = 0.6f;<br />
if (reminder == 6 || reminder == 7) L = 0.5f;<br />
if (reminder == 8 || reminder == 9) L = 0.3f;<br />
// here we have H,S,L set already<br />
// let's convert it to RGB, first without consideration of S and L<br />
if (H<=120)<br />
{<br />
R = (120-H)/60;<br />
G = H/60;<br />
B = 0;<br />
}<br />
if (H>120 && H<=240)<br />
{<br />
R = 0;<br />
G = (240-H)/60;<br />
B = (H-120)/60;<br />
}<br />
if (H>240 && H<=360)<br />
{<br />
R = (H-240)/60;<br />
G = 0;<br />
B = (360-H)/60;<br />
}<br />
R = min(R, 1);<br />
G = min(G, 1);<br />
B = min(B, 1);<br />
// influence of S and L<br />
float max_value = max(R,max(G,B));<br />
R = (max_value-S*(max_value-R)) * L * 255;<br />
G = (max_value-S*(max_value-G)) * L * 255;<br />
B = (max_value-S*(max_value-B)) * L * 255;<br />
return RGB(R,G,B);<br />
}</div>67.50.76.50https://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=4810&oldid=prev64.58.0.54: inkboard 2.0 link2005-07-19T11:31:57Z<p>inkboard 2.0 link</p>
<p><b>New page</b></p><div>== SOC Accepted Proposals ==<br />
<br />
Four proposals were accepted.<br />
<br />
* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - Michael Wybrow<br />
* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]]) ([[Inkboard2.0]])<br />
* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 OCAL Interface] - Greg Steffensen (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])<br />
* DXF Import / Export (proposal below) - Matthew Squires<br />
<br />
<br />
=== DXF import/export ===<br />
The proposal pretty much follows the Perl funding outline that was linked on the SOC website.<br />
<br />
Name: Matthew Squires<br />
<br />
Project Title: Creation of a library for the import/export of dxf in Inkscape<br />
<br />
Benefits to Inkscape<br />
<br />
A library for importing/exporting dxf files would make Inkscape a more flexible<br />
piece of software especially for those that create technical drawings. For<br />
example, I have used Macromedia Freehand to import dxf technical drawings so I<br />
could add artistic elements for papers and presentations. Directly importing and<br />
exporting dxf in Inkscape would make Inkscape a more attractive piece of software<br />
for those that already have CAD drawings but would like to make them "presentable."<br />
<br />
Synopsis<br />
<br />
I will create a library that will import/export data to/from Inkscape from/to the<br />
dxf format. This library will directly import all of the basic properties common<br />
to the dxf format and Inkscape (e.g. lines and layers). Objects that do not<br />
directly convert (e.g. spirals) will be supported by using extra information to<br />
properly complete the translation. It should be assumed that any 3D data contained<br />
in the dxf will be flattened.<br />
<br />
Deliverables<br />
<br />
The conversion functions will be made to incorporate into Inkscape via a library.<br />
I will also include documentation of the library including examples. I would<br />
like to create a svg2dxf and a dxf2svg directly from the code, but I do not want<br />
to commit to delivery of stand-alone programs in the time allotted.<br />
<br />
Project Details<br />
<br />
I will create a library that will directly convert all of the directly convertible<br />
information between a dxf/svg. That includes but is not limited to: lines,<br />
splines, layers, and text. All 3D information will be flattened but I would<br />
imagine that in the future a simple method for translating elevation to layers<br />
could be implemented, but not this summer. Because dxf does not include units this<br />
information will need to be supplied for all conversions.<br />
<br />
Items that require additional information will be converted if the information is<br />
given. This is done in other programs (i.e. FlexPDE) that require more information<br />
than dxf can provide. An example would be importing a spiral from dxf into svg. <br />
Additional tags can be applied to the dxf to supply the additional information (e.g.<br />
revolution) to create a spiral in Inkscape. Some items that would be supported in<br />
dxf import are spirals, stars, color, fills, and text on a path. On the other hand<br />
a spiral can be exported to dxf as a series of splines. The user can set the export<br />
resolution, or use the default resolution. Some items that would be exported to dxf<br />
are spirals and stars. I would like to work on exporting text on a path, but at<br />
this time I won’t promise that it will be functional until I understand better how<br />
Inkscape performs this task.<br />
<br />
Project Schedule<br />
<br />
First I will take a few days to better understand the Inkscape file format. Then I<br />
will break the schedule into two pieces: svg->dxf and dxf->svg. For the dxf->svg I<br />
estimate that the directly convertible code (DCC) can be written in a 2-3 days, the<br />
non-direct conversion code (NDCC) in 3-4. I think the svg->dxf DCC will take 3-4<br />
days. The NDCC is a little more complicated because extra information will need to<br />
be processed, so I am going to estimate about a week for that code. The total is<br />
about 2.5 weeks. As mentioned on the Inkscape wiki all projects take about pi times<br />
longer to complete, so the completion of this code should be reasonable in a summer.<br />
The documentation code should be written at the same time functions are written. <br />
Example programs will be developed along the way as result of testing.<br />
<br />
Bio<br />
<br />
I am a physics Phd candidate at the University of Colorado and I have recently been<br />
using Inkscape to create figures for papers and presentations. I have been coding<br />
in C++ for about 5 years. I am self-taught in C++, but have some formal education<br />
in other languages. I would say I am a proficient programmer and can create good<br />
code. I have mostly worked on ing magnetic fields, but part of my code reads<br />
some basic information from dxf files to define the regions of interest (ROI). I<br />
am familiar with the dxf standard and what it takes to read dxf. I have looked at<br />
open source dxf libraries, specifically dime and QCad. I also recently found<br />
Blender reads dxf files. I would have no problem pulling code from those sources.<br />
<br />
I am familiar with the SVG format, and actually looked at reading ROI information<br />
from SVG's but for some reason several years ago chose dxf instead (probably because<br />
at the time I found better CAD editors). I have also used a variant of XML in<br />
LabVIEW to control the parameters of my experiment. A lab mate performed most of<br />
the coding, but I have a working knowledge of XML. I think there is open source<br />
code for reading XML tags, so I would like to find some code that already reads the<br />
XML tags and information from a file to hurry the project along.<br />
<br />
<br />
=== ACI to RGB conversion ===<br />
ACI stands for AutoCAD color index. It is a table of codes which describe color in DXF files. Here is some code to convert ACI to RGB, which I've written for my simple DXF reader. Resulting R, G and B values are 8-bit, in range 0-255. You can create a macro RGB(R,G,B) to convert it to proper colorspace values. I hope it can help a bit. The code is released under GPL.<br />
<br />
P.S. I know it is not the best place for pasting a code. Please remove it from this place, when it is no more useful or if it can be placed somewhere else.<br />
<br />
float aci_to_rgb(int aci)<br />
{<br />
aci = abs(aci); // hidden layers have negative color values<br />
if (aci<10 || aci>249) // values of these ranges are special colors<br />
{<br />
switch (aci)<br />
{<br />
case 1: return RGB(255,0,0); // basic colors<br />
case 2: return RGB(255,255,0);<br />
case 3: return RGB(0,255,0);<br />
case 4: return RGB(0,255,255);<br />
case 5: return RGB(0,0,255);<br />
case 6: return RGB(255,0,255);<br />
case 7: return RGB(255,255,255);<br />
case 8: return RGB(128,128,128);<br />
case 9: return RGB(192,192,192);<br />
case 250: return RGB(51,51,51); // grey shades<br />
case 251: return RGB(91,91,91);<br />
case 252: return RGB(132,132,132);<br />
case 253: return RGB(173,173,173);<br />
case 254: return RGB(214,214,214);<br />
case 255: return RGB(255,255,255);<br />
case 256: // "by layer"<br />
// Here you should decide how to handle "by layer" logical color.<br />
// Maybe it is a good idea to return a value like -1.<br />
// The outer code will find what is the color of the layer which<br />
// this entity belongs to.<br />
return -1;<br />
}<br />
}<br />
// for all the rest of ACI codes<br />
float H,S,L, R,G,B;<br />
int remainder = aci % 10; <br />
H = 1.5f * (aci - remainder - 10); // hue in range 0-360<br />
S = ((aci % 2) ? 0.5f : 1.0f); // odd colors have 50% of saturation, even - 100%<br />
// set lighteness, the last digit of aci code stands for this<br />
if (reminder == 0 || reminder == 1) L = 1.0f; <br />
if (reminder == 2 || reminder == 3) L = 0.8f;<br />
if (reminder == 4 || reminder == 5) L = 0.6f;<br />
if (reminder == 6 || reminder == 7) L = 0.5f;<br />
if (reminder == 8 || reminder == 9) L = 0.3f;<br />
// here we have H,S,L set already<br />
// let's convert it to RGB, first without consideration of S and L<br />
if (H<=120)<br />
{<br />
R = (120-H)/60;<br />
G = H/60;<br />
B = 0;<br />
}<br />
if (H>120 && H<=240)<br />
{<br />
R = 0;<br />
G = (240-H)/60;<br />
B = (H-120)/60;<br />
}<br />
if (H>240 && H<=360)<br />
{<br />
R = (H-240)/60;<br />
G = 0;<br />
B = (360-H)/60;<br />
}<br />
R = min(R, 1);<br />
G = min(G, 1);<br />
B = min(B, 1);<br />
// influence of S and L<br />
float max_value = max(R,max(G,B));<br />
R = (max_value-S*(max_value-R)) * L * 255;<br />
G = (max_value-S*(max_value-G)) * L * 255;<br />
B = (max_value-S*(max_value-B)) * L * 255;<br />
return RGB(R,G,B);<br />
}</div>64.58.0.54https://wiki.inkscape.org/wiki/index.php?title=SOC_Accepted_Proposals&diff=4806&oldid=prev64.58.0.54: added link to Inkboard integration schedule2005-06-28T04:13:54Z<p>added link to Inkboard integration schedule</p>
<p><b>New page</b></p><div>== SOC Accepted Proposals ==<br />
<br />
Four proposals were accepted.<br />
<br />
* [http://www.csse.monash.edu.au/~mwybrow/soc-proposal.txt Connectors] - Michael Wybrow<br />
* [http://www.rose-hulman.edu/~yipdw/inkscape-proposal.txt Inkboard] - David Yip ([[InkboardIntegrationSchedule]])<br />
* [https://developer.berlios.de/docman/display_doc.php?docid=934&group_id=4098 OCAL Interface] - Greg Steffensen (project being developed at [http://developer.berlios.de/projects/ocalhelper Berlios])<br />
* DXF Import / Export (proposal below) - Matthew Squires<br />
<br />
<br />
=== DXF import/export ===<br />
The proposal pretty much follows the Perl funding outline that was linked on the SOC website.<br />
<br />
Name: Matthew Squires<br />
<br />
Project Title: Creation of a library for the import/export of dxf in Inkscape<br />
<br />
Benefits to Inkscape<br />
<br />
A library for importing/exporting dxf files would make Inkscape a more flexible<br />
piece of software especially for those that create technical drawings. For<br />
example, I have used Macromedia Freehand to import dxf technical drawings so I<br />
could add artistic elements for papers and presentations. Directly importing and<br />
exporting dxf in Inkscape would make Inkscape a more attractive piece of software<br />
for those that already have CAD drawings but would like to make them "presentable."<br />
<br />
Synopsis<br />
<br />
I will create a library that will import/export data to/from Inkscape from/to the<br />
dxf format. This library will directly import all of the basic properties common<br />
to the dxf format and Inkscape (e.g. lines and layers). Objects that do not<br />
directly convert (e.g. spirals) will be supported by using extra information to<br />
properly complete the translation. It should be assumed that any 3D data contained<br />
in the dxf will be flattened.<br />
<br />
Deliverables<br />
<br />
The conversion functions will be made to incorporate into Inkscape via a library.<br />
I will also include documentation of the library including examples. I would<br />
like to create a svg2dxf and a dxf2svg directly from the code, but I do not want<br />
to commit to delivery of stand-alone programs in the time allotted.<br />
<br />
Project Details<br />
<br />
I will create a library that will directly convert all of the directly convertible<br />
information between a dxf/svg. That includes but is not limited to: lines,<br />
splines, layers, and text. All 3D information will be flattened but I would<br />
imagine that in the future a simple method for translating elevation to layers<br />
could be implemented, but not this summer. Because dxf does not include units this<br />
information will need to be supplied for all conversions.<br />
<br />
Items that require additional information will be converted if the information is<br />
given. This is done in other programs (i.e. FlexPDE) that require more information<br />
than dxf can provide. An example would be importing a spiral from dxf into svg. <br />
Additional tags can be applied to the dxf to supply the additional information (e.g.<br />
revolution) to create a spiral in Inkscape. Some items that would be supported in<br />
dxf import are spirals, stars, color, fills, and text on a path. On the other hand<br />
a spiral can be exported to dxf as a series of splines. The user can set the export<br />
resolution, or use the default resolution. Some items that would be exported to dxf<br />
are spirals and stars. I would like to work on exporting text on a path, but at<br />
this time I won’t promise that it will be functional until I understand better how<br />
Inkscape performs this task.<br />
<br />
Project Schedule<br />
<br />
First I will take a few days to better understand the Inkscape file format. Then I<br />
will break the schedule into two pieces: svg->dxf and dxf->svg. For the dxf->svg I<br />
estimate that the directly convertible code (DCC) can be written in a 2-3 days, the<br />
non-direct conversion code (NDCC) in 3-4. I think the svg->dxf DCC will take 3-4<br />
days. The NDCC is a little more complicated because extra information will need to<br />
be processed, so I am going to estimate about a week for that code. The total is<br />
about 2.5 weeks. As mentioned on the Inkscape wiki all projects take about pi times<br />
longer to complete, so the completion of this code should be reasonable in a summer.<br />
The documentation code should be written at the same time functions are written. <br />
Example programs will be developed along the way as result of testing.<br />
<br />
Bio<br />
<br />
I am a physics Phd candidate at the University of Colorado and I have recently been<br />
using Inkscape to create figures for papers and presentations. I have been coding<br />
in C++ for about 5 years. I am self-taught in C++, but have some formal education<br />
in other languages. I would say I am a proficient programmer and can create good<br />
code. I have mostly worked on ing magnetic fields, but part of my code reads<br />
some basic information from dxf files to define the regions of interest (ROI). I<br />
am familiar with the dxf standard and what it takes to read dxf. I have looked at<br />
open source dxf libraries, specifically dime and QCad. I also recently found<br />
Blender reads dxf files. I would have no problem pulling code from those sources.<br />
<br />
I am familiar with the SVG format, and actually looked at reading ROI information<br />
from SVG's but for some reason several years ago chose dxf instead (probably because<br />
at the time I found better CAD editors). I have also used a variant of XML in<br />
LabVIEW to control the parameters of my experiment. A lab mate performed most of<br />
the coding, but I have a working knowledge of XML. I think there is open source<br />
code for reading XML tags, so I would like to find some code that already reads the<br />
XML tags and information from a file to hurry the project along.</div>64.58.0.54