
Hello Krzysztof,
Monday, March 10, 2014, 12:17:34 AM, you wrote:
2014-03-10 0:06 GMT+01:00 Alexander Brock <a.brock@...2965...>:
Is this just a very special case or does it have wider use than vinyl cutting (and embroidery)?
This kind of operation has a lot of use cases besides vinyl cutting,
I was reading about a similar use case over the weekend - vector art for printed circuit board (PCB) fabrication, avoiding having to go to raster artwork. PCB CAM processes can handle very limited vector artwork - solid filled non-hollow polygons.
(For an easy overview, see http://www.arachnidlabs.com/blog/2013/02/07/importing-polygons-into-eagle/ )
Here is a git repo for an svg to eagle converter (the limitation comes from the CAM process so is not specific to eagle): https://github.com/cmonr/Eagle-ULPs a similar procedure (with a different import script) could be used to import suitable SVG into KiCAD. The common factor is the need to manipulate graphics in Inkscape so that they only contain the right sort of flattened, non-hollow polygons.
Notice (in the readme) the big set of steps for "what to do in Inkscape before exporting the svg for this"
In Inkscape 0.47 or newer, Preferences > SVG output > Path data, untick "Allow relative coordinates" Type out the text that you want. Format it and such. Lock the height/width ratio Change height to 100 (this helps with changing the ratio) Ctrl-Shift-C (Object to Path) Select all (w/ Node Cursor) Extensions > Modify Path > Add Nodes (Default settings are alright) Extensions > Modify Path > Flatten Beziers (Default settings are alright) For the closed loop letters O,o,D,d,etc... Draw a rectangle dividing the letter ( O => ([)] ) Select the rectangle and the letter Ctrl-/ (Division) Repeat with all closed letters Select all (w/ Node Cursor) Ctrl-Shift-K (Break Apart) Save As > Plain SVG
Those instructions are focused on vector text, but the same set of operations applies to other graphics (such as the hollow shapes in the spider logo on the first link).
but right now there is no code to do this reliably. The existing boolean operations code is rather fragile and doesn't work for some corner cases.
During this summer I'll be doing a GSoC project which should address this.
Perhaps that use case could be covered as well?