QCAD

QCAD - 2D CAD System.

Click here for a documentation of the DokuWiki formatting syntax that can be used in reports

Please search for existing tasks (also closed ones) before opening a new task.

Please make sure that you are using the latest Version of QCAD before posting a bug (menu Help - Check for Updates)

Tasklist

FS#122 - SVG of hatch with "hole"

Attached to Project: QCAD
Opened by Peter (hungerburg) - Sunday, 26 June 2011, 13:40 GMT+2
Last edited by Andrew (andrew) - Sunday, 26 June 2011, 14:25 GMT+2
Task Type Bug Report
Category Main
Status Closed
Assigned To Andrew (andrew)
Operating System All
Severity Low
Priority Normal
Reported Version Development
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

A hatch my have “holes”, if it eg. is made of two forms, an inner form, and and outer form, where the outer form is filled while the inner form appears like a window inside of the fill, that lets the background be seen.

QCAD exports such hatches as two SVG paths in one single entity. But the “hole” is lost in the process. I know of two workarounds, that preserve the original intention of the QCAD drawing, both get the same result most of the time, the second one looking more robust and easier to implement:

# draw the outer form clockwise, draw the inner form counterclockwise
# set the “fill-rule:evenodd” attribute on the fill definition of the entity

Drawing a star like in the SVG spec in QCAD actually produces the same picture – so that should be the way to go.

http://www.w3.org/TR/SVG/painting.html#FillRuleProperty

This task depends upon

Closed by  Andrew (andrew)
Sunday, 26 June 2011, 14:25 GMT+2
Reason for closing:  Fixed
Comment by Andrew (andrew) - Sunday, 26 June 2011, 14:25 GMT+2

Fixed for next release. To fix it for QCAD 3.0 TP1, please apply the following changes:

file: scripts/File/SvgExport/SvgExporter.js:
line: 294:

change:
this.stream.writeAttribute("style", "fill:%1;".arg(color));

to:
this.stream.writeAttribute("style", "fill:%1;fill-rule:evenodd".arg(color));

Loading...