From 645f7384c96ccc7ce82ca4d65b812a6cc1367264 Mon Sep 17 00:00:00 2001 From: dickelbeck Date: Thu, 30 Oct 2008 18:54:16 +0000 Subject: [PATCH] compensate for tendency of freerouter to move tracks on loading DSN --- pcbnew/specctra_export.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pcbnew/specctra_export.cpp b/pcbnew/specctra_export.cpp index 442c8d56b7..801a225cba 100644 --- a/pcbnew/specctra_export.cpp +++ b/pcbnew/specctra_export.cpp @@ -660,7 +660,7 @@ PADSTACK* SPECCTRA_DB::makeVia( int aCopperDiameter, int aDrillDiameter, char name[48]; PADSTACK* padstack = new PADSTACK(); - double dsnDiameter = scale(aCopperDiameter); + double dsnDiameter = scale( aCopperDiameter ); for( int layer=aTopLayer; layer<=aBotLayer; ++layer ) { @@ -986,9 +986,12 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError ) // Add .1 mil to the requested clearances as a safety margin. // There has been disagreement about interpretation of clearance in the past // between Kicad and Freerouter, so keep this safetyMargin until the - // disagreement is resolved and stable. Recently Kicad started adding - // 0.1 mils to what it is given, so we can use zero for now. - const double safetyMargin = 0.0; + // disagreement is resolved and stable. Freerouter seems to be moving + // (protected) traces upon loading the DSN file, and even though it seems to sometimes + // 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); @@ -1322,6 +1325,9 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError ) PADSTACK* padstack = makeVia( via ); 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 ) { delete padstack;