Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
39afce35
Commit
39afce35
authored
Mar 05, 2009
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pcbnew: serious bugs fixed (see changelog)
parent
6b8bc98d
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
115 additions
and
65 deletions
+115
-65
CHANGELOG.txt
CHANGELOG.txt
+14
-0
move_or_drag_track.cpp
pcbnew/move_or_drag_track.cpp
+88
-56
track.cpp
pcbnew/track.cpp
+13
-9
No files found.
CHANGELOG.txt
View file @
39afce35
...
@@ -5,6 +5,20 @@ Started 2007-June-11
...
@@ -5,6 +5,20 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
Please add newer entries at the top, list the date and your name with
email address.
email address.
2009-mar-05 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++pcbnew:
bug fix in move_or_drag_track.cpp:
function SortTrackEndPoints() broken: does not handle pointers to pads for start and end and flags relative to these pointers
MergeCollinearTracks( ) broken, because it merge segments having different width or without any connectivity test.
2 collinear segments can be merged only in no other segment or vais is connected to the common point
and if they have the same width. See cleanup.cpp for merge functions
These functions break the connectivity calculations.
So they are temporary disabled (see my comments in these functions)
bug fix in Marque_Une_Piste(): the last segments created can be see as part of the flagged track:
so delete track (or edit track width) deletes the track and some others segments (last created)
2009-Feb-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
2009-Feb-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
================================================================================
================================================================================
++EESchema
++EESchema
...
...
pcbnew/move_or_drag_track.cpp
View file @
39afce35
This diff is collapsed.
Click to expand it.
pcbnew/track.cpp
View file @
39afce35
...
@@ -55,18 +55,24 @@ TRACK* Marque_Une_Piste( WinEDA_BasePcbFrame* frame, wxDC* DC,
...
@@ -55,18 +55,24 @@ TRACK* Marque_Une_Piste( WinEDA_BasePcbFrame* frame, wxDC* DC,
if
(
aTrackList
==
NULL
)
if
(
aTrackList
==
NULL
)
return
NULL
;
return
NULL
;
/* Marquage du segment pointe */
if
(
flagcolor
)
if
(
flagcolor
)
aTrackList
->
Draw
(
frame
->
DrawPanel
,
DC
,
flagcolor
);
aTrackList
->
Draw
(
frame
->
DrawPanel
,
DC
,
flagcolor
);
// Ensure the flag BUSY is cleared because we use it to mark segments of the track
for
(
TRACK
*
track
=
frame
->
GetBoard
()
->
m_Track
;
track
;
track
=
track
->
Next
()
)
track
->
SetState
(
BUSY
,
OFF
);
/* Set flags of the initial track segment */
aTrackList
->
SetState
(
BUSY
,
ON
);
aTrackList
->
SetState
(
BUSY
,
ON
);
int
masque_layer
=
aTrackList
->
ReturnMaskLayer
();
int
masque_layer
=
aTrackList
->
ReturnMaskLayer
();
trackList
.
push_back
(
aTrackList
);
trackList
.
push_back
(
aTrackList
);
/* Traitement du segment pointe : si c'est un segment, le cas est simple.
/* Examine the initial track segment : if it is really a segment, this is easy.
* Si c'est une via, on doit examiner le nombre de segments connectes.
* If it is a via, one must search for connected segments.
* Si <=2, on doit detecter une piste, si > 2 seule la via est marquee
* If <=2, this via connect 2 segments (or is connected to only one segment)
* and this via and these 2 segments are a part of a track.
* If > 2 only this via is flagged (the track has only this via)
*/
*/
if
(
aTrackList
->
Type
()
==
TYPE_VIA
)
if
(
aTrackList
->
Type
()
==
TYPE_VIA
)
{
{
...
@@ -83,17 +89,17 @@ TRACK* Marque_Une_Piste( WinEDA_BasePcbFrame* frame, wxDC* DC,
...
@@ -83,17 +89,17 @@ TRACK* Marque_Une_Piste( WinEDA_BasePcbFrame* frame, wxDC* DC,
Segm3
=
Fast_Locate_Piste
(
Segm2
->
Next
(),
NULL
,
Segm3
=
Fast_Locate_Piste
(
Segm2
->
Next
(),
NULL
,
aTrackList
->
m_Start
,
masque_layer
);
aTrackList
->
m_Start
,
masque_layer
);
}
}
if
(
Segm3
)
if
(
Segm3
)
// More than 2 segments are connected to this via. the "track" is only this via
{
{
*
nb_segm
=
1
;
*
nb_segm
=
1
;
return
aTrackList
;
return
aTrackList
;
}
}
if
(
Segm1
)
if
(
Segm1
)
// search for others segments connected to the initial segment start point
{
{
masque_layer
=
Segm1
->
ReturnMaskLayer
();
masque_layer
=
Segm1
->
ReturnMaskLayer
();
Marque_Chaine_segments
(
frame
->
GetBoard
(),
aTrackList
->
m_Start
,
masque_layer
,
&
trackList
);
Marque_Chaine_segments
(
frame
->
GetBoard
(),
aTrackList
->
m_Start
,
masque_layer
,
&
trackList
);
}
}
if
(
Segm2
)
if
(
Segm2
)
// search for others segments connected to the initial segment end point
{
{
masque_layer
=
Segm2
->
ReturnMaskLayer
();
masque_layer
=
Segm2
->
ReturnMaskLayer
();
Marque_Chaine_segments
(
frame
->
GetBoard
(),
aTrackList
->
m_Start
,
masque_layer
,
&
trackList
);
Marque_Chaine_segments
(
frame
->
GetBoard
(),
aTrackList
->
m_Start
,
masque_layer
,
&
trackList
);
...
@@ -171,9 +177,7 @@ TRACK* Marque_Une_Piste( WinEDA_BasePcbFrame* frame, wxDC* DC,
...
@@ -171,9 +177,7 @@ TRACK* Marque_Une_Piste( WinEDA_BasePcbFrame* frame, wxDC* DC,
if
(
track
->
GetState
(
BUSY
)
)
if
(
track
->
GetState
(
BUSY
)
)
{
{
NbSegmBusy
++
;
NbSegmBusy
++
;
track
->
UnLink
();
track
->
UnLink
();
list
->
Insert
(
track
,
firstTrack
->
Next
()
);
list
->
Insert
(
track
,
firstTrack
->
Next
()
);
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment