First, a short summary on the terminology: - in the cschem data model atomic drawing objects (such as lines) don't have attributes, only groups have, and it's very easy to make groups - a net is a group with role set to "wire-net" - any drawing object can participate in a wire-net; sch-rnd code tries to handle lines in smart ways and the wire tool draws wires - there are no "connections" within wirenet groups, having the drawing objects in the same wirenet group simply means they are all part of the same network; of course it's bad practice to create wirenet groups with disjunct/disconnected segments, and sch-rnd convenience tools do everything to avoid that (but you can do that with manual group conversion of course) - there are "junctions", which are not special objects or dedicated object type in the data model, just graphic; a junction is when two wires of the same wirenet cross or three wires meet in a point - there is a "connection" object defined in the data model: it indicates galvanic connections between 2 or more objects of _different_ groups; most typical case is when you connect a wire to a terminal: you really connect a line of a wirenet group to a line of a terminal group, and sch-rnd will automatically generate a connection object for that. This was just a short summary of basic terms; if you want to learn more about how these work in the data model, you can find the detailed spect in chapter 2 and 3 at http://repo.hu/projects/cschem/design/ Things to test: 1. drawing wirenets We have a dedicated tool for this, the wire tool. It draws 1 or 2 line segments at once. Just like in pcb-rnd the preferred refraction style can be changed using the / key or more temporarily by holding down shift while moving the cursor. If newly drawn wire(s)' endpoint hits to an existing wirenet, the newly drawn wires simply extend that existing wirenet. If there's no endpoint overlap, a new, anonymous wirenet is created. If a newly drawn wire line crosses an existing wirenet line but the new line's endpoint doesn't hit it, so it's a "+" style crossing, it is assumed no connection is intended. There are all sort of nasty corner cases, like when you connect two existing wirenets with a new wire. Please test whatever you can think of. There are two ways to verify if the code did what you wanted: - if you click a wire line, it is selected; if you click it again, the whole wirenet group is selected; this makes it easier to see what belongs together - the tree view dialog (accessible from right click context menu over the wire line) 2. junction graphics Please especially test if junction dots are placed and removed as described above, as expected. 3. connections You can place a terminal using {p t}. It's not necessary for testing this, but if you want to simulate real use patterns more closely, you can create a symbol group from multiple terminals and ordinary drawing objects (lines, arcs, polygons). If you draw a wire that intersects with a terminal, a connection is made between the two objects. You can see the connection object in the tree view or as bright green graphics if you turn on the "connections" layer. Note: when determinign the user intention on drawing a new wire intersecting an exisitng wire, only endpoint match is considered intent of connection. However, terminals are "hot": any intersection of wire-terminal will cause a connection to be made. Please test that connections are always made and removed as terminal-wire intersections suggest.