Commit 645f7384 authored by dickelbeck's avatar dickelbeck

compensate for tendency of freerouter to move tracks on loading DSN

parent 9de1af02
...@@ -660,7 +660,7 @@ PADSTACK* SPECCTRA_DB::makeVia( int aCopperDiameter, int aDrillDiameter, ...@@ -660,7 +660,7 @@ PADSTACK* SPECCTRA_DB::makeVia( int aCopperDiameter, int aDrillDiameter,
char name[48]; char name[48];
PADSTACK* padstack = new PADSTACK(); PADSTACK* padstack = new PADSTACK();
double dsnDiameter = scale(aCopperDiameter); double dsnDiameter = scale( aCopperDiameter );
for( int layer=aTopLayer; layer<=aBotLayer; ++layer ) for( int layer=aTopLayer; layer<=aBotLayer; ++layer )
{ {
...@@ -986,9 +986,12 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError ) ...@@ -986,9 +986,12 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
// Add .1 mil to the requested clearances as a safety margin. // Add .1 mil to the requested clearances as a safety margin.
// There has been disagreement about interpretation of clearance in the past // There has been disagreement about interpretation of clearance in the past
// between Kicad and Freerouter, so keep this safetyMargin until the // between Kicad and Freerouter, so keep this safetyMargin until the
// disagreement is resolved and stable. Recently Kicad started adding // disagreement is resolved and stable. Freerouter seems to be moving
// 0.1 mils to what it is given, so we can use zero for now. // (protected) traces upon loading the DSN file, and even though it seems to sometimes
const double safetyMargin = 0.0; // add its own 0.1 to the clearances, I believe this is happening after
// the load process (and moving traces) so I am of the opinion this is
// still needed.
const double safetyMargin = 0.1;
double clearance = scale(curTrackClear); double clearance = scale(curTrackClear);
...@@ -1322,6 +1325,9 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError ) ...@@ -1322,6 +1325,9 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
PADSTACK* padstack = makeVia( via ); PADSTACK* padstack = makeVia( via );
PADSTACK* registered = pcb->library->LookupVia( padstack ); PADSTACK* registered = pcb->library->LookupVia( padstack );
// if the one looked up is not our padstack, then delete our padstack
// since it was a duplicate of one already registered.
if( padstack != registered ) if( padstack != registered )
{ {
delete padstack; delete padstack;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment