← Back to team overview

kicad-developers team mailing list archive

Re: EESCHEMA wire end length reduction


Le 22/03/2012 06:17, Dick Hollenbeck a écrit :
On 03/21/2012 05:55 PM, Wayne Stambaugh wrote:
On 3/21/2012 3:28 PM, Dick Hollenbeck wrote:
I used to be able to shorten a wire by dragging its endpoint towards the opposite end.
I also checked this out while I was checking the tab problem you were
having with the Pin Properties dialog and I don't have this problem
either.  I can right click, select drag, and drag a wire end without any
issues.  Are you using the context menu or the hot key?

Both of those work.  After using the program for 5 years, I had grown accustomed to
previous behavior which did not require selecting drag.  You could simply use the wire
tool and back trace over an existing track starting from its end, with a new track
gesture.  This used to shorten the wire.

I can live with the single G key however.


I see...

It is certainly a side effect of my bug fix bzr3467.

Previously the SCH_LINE::MergeOverlap( SCH_LINE* aLine ) function tried to merge 2 collinear segments
(wires, busses or graphic lines) by creating a segment from the starting point of the first
 to the ending point of the second.
Therefore the intermediate point is not always the removed point.
The result of merging 2 collinear segments connecting 2 pins can be:
- a merging segment that still connect the 2 pins (the intermediate point was removed)
- or a shorter segment between a pin and the end of the second segment (not necessary the pin)
  and a connection is lost ((the intermediate point was kept and an end point removed ).

(I am thinking you were using the consequence of this bug)

However, during calculations, for each segment, ends can be swapped,
and you are not able to know in all cases the starting point end the ending point of a wire.

Now the resulting segment connects the ends having the bigger distance, and in my example the 2 pins
are always kept connected.

I noticed this bug when I tried to create a rectangle (4 consecutive wires or graphic segments)
in an empty sheet:
Depending on the way the 4 edges are created (CW or CCW) one or 2 segments were lost (removed).
(SCH_LINE::MergeOverlap( SCH_LINE* aLine ) is widely used in Eeschema after segments creations
and netlist calculations).

I was also able to create erroneous merges on existing complex connections
with collinear wires and junctions.

After creating a collinear wire on this kind of connections, some segments sometimes disappear.
(and a wrong connection created)

Jean-Pierre CHARRAS

Follow ups