Posting this in it’s own ‘Post.’ For a good understanding of SVG - This Tutorial
Fritzing is designed to use SVG Tiny 1.2 - This Is Specification
Programs/Applications that manipulate drawing elements (such as Difference, Subtraction, etc) do it via code that acts on drawn lines/objects using a combination of methods. Some do better at it, some, not so good. Hence, all the various menu items seen in those app’s.
However, There are a few intrinsic manipulations that SVG can do: This Example will Subtract an Inner Box from an Outer Box. It is done by simply defining the corner points for the Outer Box in a Clockwise direction (Called ‘Winding’) and defining the Inner Box’s corner points CounterClockwise (called ‘Unwinding’). No Boolean, no fuss…
Example1 (image - I was not able to post the code):
The First “M” winds the outer box, the Second “M” unwinds (thus, an Intrinsic Difference).
Examples of items learned from the Specification examples and the Tutorial - YES, Fritzing loads it without problems!
Example3: [EDIT] For the ‘Curious’ folks. Added an example of a PCB with a Cutout - all made using the principles shown in the Square with Cutout example.
It simply creates a Rectangular Clockwise Path and intrinsically subtracts a Counter-Clockwise Path for the cutout.
The cutout is closed via using a Moveto (you did learn what that is, I hope). It could use “Z” for closing the path but, that would not indicate (to Fritzing) there is a close path. Thus, it’s the correct way to close Cutouts.
No attempts to make a silkscreen, no layers are used and, no scaling adjustments. This is Pure SVG and Fritzing is Happy with it.
When loading, Fritz will indicate “No Cutouts” - Don’t worry - it’s only a ‘Message’ and does not cause problems.
Results shown in the Contour gerber…
The PCB Example