<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastianGoette</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastianGoette"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/SebastianGoette"/>
	<updated>2026-05-05T18:21:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Connectors&amp;diff=89138</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Connectors&amp;diff=89138"/>
		<updated>2013-09-21T10:41:52Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Connector Tool Improvements'''&lt;br /&gt;
&lt;br /&gt;
In Inkscape, it is possible to connect two shapes from their centers. But if you want to make a schematic with represent a family (for example), it's not possible to add connectors from an edge of a shape.&lt;br /&gt;
&lt;br /&gt;
It will be great if connectors can be added to edge of shape, in a way that auto adaptation to &amp;quot;best path&amp;quot; is still possible.&lt;br /&gt;
&lt;br /&gt;
Another idea is to implement a tool that can *restrict* the connector to vertical and horizontal lines only. For now, Inkscape is tracing straight lines or broken line if there is an shape in the path, but lines go in any direction.&lt;br /&gt;
&lt;br /&gt;
It will be great if connectors can be configured in a way that they must avoid others shapes, AND pass through some specific points, AND stay even horizontal even vertical.&lt;br /&gt;
&lt;br /&gt;
I do not speak yet about the functionality of making a little &amp;quot;bridge&amp;quot; when two lines cross each others and are not connected. This is a functionality that exists in M$ Visio but does not work very well :-/&lt;br /&gt;
&lt;br /&gt;
Thanks for reading !&lt;br /&gt;
&lt;br /&gt;
'''Printscreens'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Comments'''&lt;br /&gt;
&lt;br /&gt;
I'd like to formalise aspects of this project proposal. I'm the author of libavoid (the library used for routing in Inkscape) and the person who added the existing connector tool. I'd also probably be the most appropriate person to mentor this project if it were undertaken as a Google Summer of Code (GSoC) project. Below are some connector improvement tasks, along with some comments.&lt;br /&gt;
&lt;br /&gt;
1) Drawing to shape edge, rather than bounding box:&lt;br /&gt;
Currently, the connector tool only draws connectors to the bounding box of shapes. It should (probably) instead draw them up to the first intersection point with the shape's stroke. This is probably quite easy to achieve now that lib2geom is included in Inkscape -- 2geom can find intersection points between lines or curves making up shapes. Otherwise, the old Boolean Ops code could be used instead.&lt;br /&gt;
&lt;br /&gt;
2) Connector ports (Connecting to a specific point on a shape):&lt;br /&gt;
libavoid is able to route connectors to specific points. This work would require adding a GUI for this feature to Inkscape so that users could define connector ports on shapes. These would need to be editable through the canvas and the information saved and loaded from files. I think this activity, along with the other minor items on this list, would form the basis of a good GSoC project.&lt;br /&gt;
&lt;br /&gt;
3) Orthogonal connector support (vertical and horizontal lines only):&lt;br /&gt;
This is something I am working on in libavoid right now. An initial version will be complete during the 2009 GSoC period, so this feature will shortly become fairly trivial to add to Inkscape.&lt;br /&gt;
&lt;br /&gt;
4) Routing connectors through specific points:&lt;br /&gt;
This is not currently a feature of libavoid, though it is a fundamentally easy thing to do. I would be able to add this feature to libavoid fairly easily, and then the work would be in creating an interface for creating such points and working with them in Inkscape.&lt;br /&gt;
&lt;br /&gt;
5) Visualising connector crossings:&lt;br /&gt;
libavoid can be queried to determine where connector crossings occur. Thus, Inkscape could be updated to use this information to modify the connector's path to visualise the crossings distinctly (such as by drawing a little &amp;quot;bridge&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
6) Curved poly-line and orthogonal connectors:&lt;br /&gt;
Inkscape can return versions of poly-line or orthogonal connector paths with curved corners. This is purely an aesthetic improvement. Inkscape could be fairly easily modified to add an option for this and to use this feature of libavoid.&lt;br /&gt;
&lt;br /&gt;
7) Routing preferences and penalties:&lt;br /&gt;
libavoid can provide routes that have less segments, or that have less large bends. It does this by penalising these features when determining the routes. These options could be exposed within Inkscape to give users more control over the quality of the generated paths for connectors.&lt;br /&gt;
&lt;br /&gt;
I'm willing to mentor and assist an interested student who is willing to work on one or more of these tasks. -- Michael &lt;br /&gt;
&lt;br /&gt;
==GSoC 2013 Project==&lt;br /&gt;
I spent this GSoC improving the connectors tool. Here is an overview of the changes:&lt;br /&gt;
&lt;br /&gt;
* Added Points, 0-dimensional SVG elements (inkscape:point) with nothing but an X and a Y coordinate.&lt;br /&gt;
* Removed routing to *shapes*. Now, the ends of a connector must terminate in Points. The connector's path is always drawn up to that point and not clipped where it intersects some shape. To emulate the old behavior, place a Point on the shape's outline.&lt;br /&gt;
* Made the routing infrastructure more extensible. Now, libavoid routing is only one special case.&lt;br /&gt;
** Added simple, non object-avoiding straight and orthogonal routers.&lt;br /&gt;
* Modified the UI to accomodate the backend changes. Now, normal object selection is possible. Selections can contain both regular objects and Points.&lt;br /&gt;
&lt;br /&gt;
===UI overview===&lt;br /&gt;
As previously, there is a connector tool in the main toolbar that will enter the connector editing context. In this context, shapes and Points can be selected and moved or deleted. To place a point, press Shift and click on the document. I found requiring shift to be pressed is necessary to avoid spurious points from being created everywhere I do not want them. Once a point is created, a connector can be started from it by clicking it. Once started, the connector can be aborted by pressing Escape or finished by clicking somewhere (including on other points). To select Points, shift-click them. Control-click and control-shift-click should work as in the normal selection tool, bypassing group restrictions.&lt;br /&gt;
&lt;br /&gt;
To add a Point to a group, select nothing but the group and then create a Point by shift-clicking in the document. This part of the UI does not feel very finished yet as there is no way yet to remove a point from a group or to add it to one after the Point has been created.&lt;br /&gt;
&lt;br /&gt;
===SVG changes===&lt;br /&gt;
These changes break compatibility with the old implementation since the code intersecting connectors with objects and finding object centers has been removed. I do not think that is too much of a problem since the old implementation did not appear to have found very widespread use (-- Sebastian).&lt;br /&gt;
&lt;br /&gt;
SVG generated by the new implementation still contains connectors as Paths with a &amp;quot;inkscape:connector-type&amp;quot; attribute. This is a pretty bad hack that is to be fixed. The ends are indicated by URIs contained in the &amp;quot;inkscape:connection-start&amp;quot; and &amp;quot;inkscape:connection-end&amp;quot; attributes. This might change in future revisions to a single attribute containing a list of points to support intermediate points.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88664</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88664"/>
		<updated>2013-05-21T20:04:14Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Extension of the Symbols code to an abstraction usable for components&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing&lt;br /&gt;
** This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
** To ease this, schematic and PCB layout could be placed on different layers of a single SVG file&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills&lt;br /&gt;
** I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
** This naturally is part of the netlist generation&lt;br /&gt;
* PCB layers&lt;br /&gt;
** Can be implemented by SVG classes. When SVG 2.0 comes around, these can be assigned z-order attributes.&lt;br /&gt;
** Most other parts of Inkscape do not need to be aware of these classes, they only need special treatment when exporting to PCB formats.&lt;br /&gt;
** PCB layer classes are assigned when creating a component. Some kind of GUI would be nice for this.&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Does not seem too complicated. Since the heavy lifting is done by 2geom this could be implemented in python.&lt;br /&gt;
** Propagate net names (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
Inkscape's symbol functionality already supports most of this. &lt;br /&gt;
&lt;br /&gt;
===Component features===&lt;br /&gt;
# Like groups, components group objects together&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# The parts of a component may be on different PCB layers (i.e. be assigned different PCB layer classes)&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (for trace routing and netlist generation). This nicely maps to the ''point'' elements described in the SVG Connector draft&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Python interface for parametric symbol generation&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://bitbucket.org/boldport/pcbmode PCBmodE]&lt;br /&gt;
&lt;br /&gt;
The [https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/jaseg/1 GSoC Proposal]&lt;br /&gt;
&lt;br /&gt;
The [http://dev.w3.org/SVG/modules/connector/SVGConnector.html SVG Connector draft]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88658</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88658"/>
		<updated>2013-05-21T20:01:43Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Extension of the Symbols code to an abstraction usable for components&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing&lt;br /&gt;
** This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
** To ease this, schematic and PCB layout could be placed on different layers of a single SVG file&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills&lt;br /&gt;
** I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
** This naturally is part of the netlist generation&lt;br /&gt;
* PCB layers&lt;br /&gt;
** Can be implemented by SVG classes. When SVG 2.0 comes around, these can be assigned z-order attributes.&lt;br /&gt;
** Most other parts of Inkscape do not need to be aware of these classes, they only need special treatment when exporting to PCB formats.&lt;br /&gt;
** PCB layer classes are assigned when creating a component. Some kind of GUI would be nice for this.&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Does not seem too complicated. Since the heavy lifting is done by 2geom this could be implemented in python.&lt;br /&gt;
** Propagate net names (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
===Component features===&lt;br /&gt;
# Like groups, components group objects together&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# The parts of a component may be on different PCB layers (i.e. be assigned different PCB layer classes)&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (for trace routing and netlist generation). This nicely maps to the ''point'' elements described in the SVG Connector draft&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Python interface for parametric component generation&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://bitbucket.org/boldport/pcbmode PCBmodE]&lt;br /&gt;
&lt;br /&gt;
The [https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/jaseg/1 GSoC Proposal]&lt;br /&gt;
&lt;br /&gt;
The [http://dev.w3.org/SVG/modules/connector/SVGConnector.html SVG Connector draft]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88652</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88652"/>
		<updated>2013-05-21T19:51:41Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: /* Component abstraction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Extension of the Symbols code to an abstraction usable for components&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing → This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills → I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
* PCB layers → Will map nicely to regular inkscape layers&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Is there some existing functionality that can be (ab)used for that?&lt;br /&gt;
* Propagate net (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
===Component features===&lt;br /&gt;
# Like groups, components group objects together&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# The parts of a component may be on different PCB layers (i.e. be assigned different PCB layer classes)&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (for trace routing and netlist generation).  Pins may have some metadata like direction and default net name&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Python interface for parametric component generation&lt;br /&gt;
* Component ''templates'' to be placed in a library‒I plan on two options: an SVG file (which is just pasted into the document) or python scripts outputting SVG (for parametrizeable generators) → There already is a blueprint of that exact technology (but applied on a whole-document basis as document templates)&lt;br /&gt;
* An actual “component” object that can span multiple layers&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://bitbucket.org/boldport/pcbmode PCBmodE]&lt;br /&gt;
&lt;br /&gt;
The [https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/jaseg/1 GSoC Proposal]&lt;br /&gt;
&lt;br /&gt;
The [http://dev.w3.org/SVG/modules/connector/SVGConnector.html SVG Connector draft]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88646</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88646"/>
		<updated>2013-05-21T19:44:34Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: /* Hard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Extension of the Symbols code to an abstraction usable for components&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing → This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills → I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
* PCB layers → Will map nicely to regular inkscape layers&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Is there some existing functionality that can be (ab)used for that?&lt;br /&gt;
* Propagate net (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
===Component features===&lt;br /&gt;
# Components may be references to a ''library'' or be physically embedded into the document&lt;br /&gt;
# Like groups, components group objects together‒but they may do this cross-layer&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (these are important for trace routing and netlist generation). Pins may have some metadata like direction and default net name&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Component library‒(easiest version: folder of SVGs, or a folder of folders of SVGs for easier organization)&lt;br /&gt;
* Component ''templates'' to be placed in a library‒I plan on two options: an SVG file (which is just pasted into the document) or python scripts outputting SVG (for parametrizeable generators) → There already is a blueprint of that exact technology (but applied on a whole-document basis as document templates)&lt;br /&gt;
* An actual “component” object that can span multiple layers&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://bitbucket.org/boldport/pcbmode PCBmodE]&lt;br /&gt;
&lt;br /&gt;
The [https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/jaseg/1 GSoC Proposal]&lt;br /&gt;
&lt;br /&gt;
The [http://dev.w3.org/SVG/modules/connector/SVGConnector.html SVG Connector draft]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88586</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88586"/>
		<updated>2013-05-09T15:09:07Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Component abstraction&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing → This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills → I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
* PCB layers → Will map nicely to regular inkscape layers&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Is there some existing functionality that can be (ab)used for that?&lt;br /&gt;
* Propagate net (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
===Component features===&lt;br /&gt;
# Components may be references to a ''library'' or be physically embedded into the document&lt;br /&gt;
# Like groups, components group objects together‒but they may do this cross-layer&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (these are important for trace routing and netlist generation). Pins may have some metadata like direction and default net name&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Component library‒(easiest version: folder of SVGs, or a folder of folders of SVGs for easier organization)&lt;br /&gt;
* Component ''templates'' to be placed in a library‒I plan on two options: an SVG file (which is just pasted into the document) or python scripts outputting SVG (for parametrizeable generators) → There already is a blueprint of that exact technology (but applied on a whole-document basis as document templates)&lt;br /&gt;
* An actual “component” object that can span multiple layers&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://bitbucket.org/boldport/pcbmode PCBmodE]&lt;br /&gt;
&lt;br /&gt;
The [https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/jaseg/1 GSoC Proposal]&lt;br /&gt;
&lt;br /&gt;
The [http://dev.w3.org/SVG/modules/connector/SVGConnector.html SVG Connector draft]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88580</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88580"/>
		<updated>2013-05-09T15:08:31Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Component abstraction&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing → This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills → I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
* PCB layers → Will map nicely to regular inkscape layers&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Is there some existing functionality that can be (ab)used for that?&lt;br /&gt;
* Propagate net (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
===Component features===&lt;br /&gt;
# Components may be references to a ''library'' or be physically embedded into the document&lt;br /&gt;
# Like groups, components group objects together‒but they may do this cross-layer&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (these are important for trace routing and netlist generation). Pins may have some metadata like direction and default net name&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Component library‒(easiest version: folder of SVGs, or a folder of folders of SVGs for easier organization)&lt;br /&gt;
* Component ''templates'' to be placed in a library‒I plan on two options: an SVG file (which is just pasted into the document) or python scripts outputting SVG (for parametrizeable generators) → There already is a blueprint of that exact technology (but applied on a whole-document basis as document templates)&lt;br /&gt;
* An actual “component” object that can span multiple layers&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[https://bitbucket.org/boldport/pcbmode PCBmodE]&lt;br /&gt;
&lt;br /&gt;
The [https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/jaseg/1 GSoC Proposal]&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88502</id>
		<title>SpecElectronicsCAD</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SpecElectronicsCAD&amp;diff=88502"/>
		<updated>2013-04-30T14:38:51Z</updated>

		<summary type="html">&lt;p&gt;SebastianGoette: Created page with &amp;quot;=Electronics CAD with Inkscape‒Missing functionality=  Currently there is no ''nice'' open source electronics CAD tool. The largest competitors are gEDA which I find awkward...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Electronics CAD with Inkscape‒Missing functionality=&lt;br /&gt;
&lt;br /&gt;
Currently there is no ''nice'' open source electronics CAD tool. The largest&lt;br /&gt;
competitors are gEDA which I find awkward to use and KiCad which I find even&lt;br /&gt;
more awkward to use. Since a schematics editor is not much more than a&lt;br /&gt;
special-purpose flow graph editor and a PCB layout editor is in fact nothing&lt;br /&gt;
but a somewhat crippled vector graphics editor with some special-purpose&lt;br /&gt;
features added I think it is very promising to modify a general purpose vector&lt;br /&gt;
graphics editor to support the few special-purpose functions additionally&lt;br /&gt;
required by an electronics CAD tool.&lt;br /&gt;
&lt;br /&gt;
==Scenario==&lt;br /&gt;
The electronics CAD process mainly consists of two parts: Drawing the schematic&lt;br /&gt;
and PCB (Printed Circuit Board) layout. Normally, you will first draw a&lt;br /&gt;
schematic and base your PCB layout off that. However, from then on you will&lt;br /&gt;
frequently change the schematic and layout and want to have your chages in the&lt;br /&gt;
one represented in the other.&lt;br /&gt;
&lt;br /&gt;
A schematic is basically just a flow chart. The basic features are components&lt;br /&gt;
(symbols) taken from a library that are put on a grid (because you do not want&lt;br /&gt;
to mess around with a lot of manual aligning) and that are connected with wires&lt;br /&gt;
(represented by lines). Wires are always either vertical or horizontal and have&lt;br /&gt;
names for the signal the wire is carrying. Components have a list of attributes&lt;br /&gt;
(an unique id, value/voltage, part number, supplier etc.), some of which are&lt;br /&gt;
rendered on the schematic next to the component (normally these are id and value&lt;br /&gt;
or part number).  Finally, you want some function to place text anywhere for&lt;br /&gt;
comments.&lt;br /&gt;
&lt;br /&gt;
A PCB design in comparision is a little more complex. A printed circuit board is&lt;br /&gt;
a stack of plastic and copper foil. The copper foil is etched into such shapes&lt;br /&gt;
that when you solder components to it they are connected in just the right way.&lt;br /&gt;
There may be multiple layers of copper foil (up to more than 10) in more complex&lt;br /&gt;
designs. Two different layers of copper may be connected with a “via”, a small&lt;br /&gt;
hole whose inside surface is plated with metal. These vias may go all the way&lt;br /&gt;
from the top to the bottom of the board or just through a few layers in the&lt;br /&gt;
middle (the latter is more expensive but common in complicated designs). Similar&lt;br /&gt;
to vias, there are larger holes through which the leads of components may be&lt;br /&gt;
stuck for soldering.&lt;br /&gt;
&lt;br /&gt;
The outline of the PCB may be irregular, and the board may have slots, holes and&lt;br /&gt;
even grooves.&lt;br /&gt;
&lt;br /&gt;
Beyond the top- and bottommost copper layers, there are some special layers. On&lt;br /&gt;
each side there is a “solder mask” which is a varnish that protects any surface&lt;br /&gt;
that is not meant to be soldered on from dirt and oxidation (this makes the PCB&lt;br /&gt;
green or blue or red), and a “silk screen” layer which is a usually white paint&lt;br /&gt;
used to place human-readable markings with part numbers, ids, values, outlines&lt;br /&gt;
as well as comments, copyright notices etc. on the surface on the board.&lt;br /&gt;
&lt;br /&gt;
A very important feature of PCB layout programs is called “DRC” (design rule&lt;br /&gt;
checking). The most important of several possible design rule checks is that on&lt;br /&gt;
the PCB layout traces do no touch and there always is some clearance between&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
==Missing features==&lt;br /&gt;
===Hard===&lt;br /&gt;
* Component abstraction&lt;br /&gt;
** Auto reference generation (“C1”, “R17” etc.)&lt;br /&gt;
* Connectivity test/netlist generation/net names&lt;br /&gt;
* Trace routing tool with 45° outing → This absolutely is a task for the graph connector tool&lt;br /&gt;
* Schematic ↔ PCB mapping (components added in the schematic are also added on the PCB, components (packages) on the PCB may be exchanged for other, compatible packages)&lt;br /&gt;
&lt;br /&gt;
===Not so hard===&lt;br /&gt;
* Gnd/other plane fills → I think there already is a live path effect for that&lt;br /&gt;
* Clearance calculation/DRC&lt;br /&gt;
* PCB layers → Will map nicely to regular inkscape layers&lt;br /&gt;
* File format support&lt;br /&gt;
** old Eagle format&lt;br /&gt;
** new (XML-based) Eagle format&lt;br /&gt;
** Gerber&lt;br /&gt;
** gEDA&lt;br /&gt;
** KiCad&lt;br /&gt;
* Page frame templates → The actual frame can be realized as a drawing on a locked layer&lt;br /&gt;
** Auto-insertion of document properties into text fields → This looks like some pretty straight-forward placeholder replacement to me&lt;br /&gt;
*** ...and part numbers/values&lt;br /&gt;
* non-rectangular page outlines? → Probably, Inkscape's ''page'' abstraction will not even be used for the board outline (but instead a layer containing a polygon will be)&lt;br /&gt;
* distance measurement tool‒ ''This is very useful even outside of electronics''&lt;br /&gt;
* object highlighting → Some limited version of this already exists in form of these quickly disappearing red path visualizations&lt;br /&gt;
** Should appear on mouse hovering (perhaps with mod key)&lt;br /&gt;
** Should highlight the ''whole'' object, not just paths/fills/etc.&lt;br /&gt;
** Perhaps render the object transparent with increased brightness on top of everything else?&lt;br /&gt;
* transparent/desaturated “see-though” rendering of inactive layers&lt;br /&gt;
&lt;br /&gt;
==Connectivity testing/netlist generation==&lt;br /&gt;
===Algorithm overview===&lt;br /&gt;
* Select starting point&lt;br /&gt;
** Start with elements in descending net name priority: first human-set names, second everything derived from default pin names, third just make up names&lt;br /&gt;
* Find overlapping or touching elements&lt;br /&gt;
** Is there some existing functionality that can be (ab)used for that?&lt;br /&gt;
* Propagate net (via labelling new parts)‒this is basically flood fill&lt;br /&gt;
&lt;br /&gt;
===Net names===&lt;br /&gt;
* All pins/traces/planes ought to have net names&lt;br /&gt;
** Net names have a “priority” (an integer): 0 for auto-generated names, 100 for names derived frmo default pin names and 200 for manually-set names&lt;br /&gt;
* After propagating existing names, start assigning generated names to unnamed elements and propagate these&lt;br /&gt;
&lt;br /&gt;
===Starting points for the algorithm===&lt;br /&gt;
* Pins/pads, traces, planes&lt;br /&gt;
** Generate names for pins by using the default net name of the pin (“CLK”).  Check whether the name already exists in the document and if yes, append a number to the default net name (“CLK2”). Repeat until an unique name has been found.&lt;br /&gt;
* Find those by just iterating through the object tree → even pins should be found there despite them being part of a component&lt;br /&gt;
&lt;br /&gt;
===Dynamic updating===&lt;br /&gt;
* Dynamic updating should be the normal case. When something is removed, the connectivity of its former net has to be re-checked.&lt;br /&gt;
** If there is a netsplit, drop the old net name, then search the two net parts for two starting points for the aforementioned algorithm. If none are found, just use ''any'' element.&lt;br /&gt;
** If there is an addition to an existing net (and thus a name collision), do the obvious: Use the name with the higher priority&lt;br /&gt;
&lt;br /&gt;
==Component abstraction==&lt;br /&gt;
===Component features===&lt;br /&gt;
# Components may be references to a ''library'' or be physically embedded into the document&lt;br /&gt;
# Like groups, components group objects together‒but they may do this cross-layer&lt;br /&gt;
# Components have some metadata/parameters associated with them&lt;br /&gt;
# Components can have ''terminals'' or ''pins'' (these are important for trace routing and netlist generation). Pins may have some metadata like direction and default net name&lt;br /&gt;
&lt;br /&gt;
===Required code===&lt;br /&gt;
* Component library‒(easiest version: folder of SVGs, or a folder of folders of SVGs for easier organization)&lt;br /&gt;
* Component ''templates'' to be placed in a library‒I plan on two options: an SVG file (which is just pasted into the document) or python scripts outputting SVG (for parametrizeable generators) → There already is a blueprint of that exact technology (but applied on a whole-document basis as document templates)&lt;br /&gt;
* An actual “component” object that can span multiple layers&lt;/div&gt;</summary>
		<author><name>SebastianGoette</name></author>
	</entry>
</feed>