Fix incorrect comparison in CADSTAR PCB Archive Importer

Also avoid use of magic numbers in case KiCad internal units ever change
This commit is contained in:
Roberto Fernandez Bautista 2020-09-14 18:13:09 +01:00 committed by Seth Hillbrand
parent 514838dbbf
commit 5467729611
2 changed files with 6 additions and 4 deletions

View File

@ -51,8 +51,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::Load( ::BOARD* aBoard )
long long designSizeXkicad = (long long) designLimit.x * KiCadUnitMultiplier; long long designSizeXkicad = (long long) designLimit.x * KiCadUnitMultiplier;
long long designSizeYkicad = (long long) designLimit.y * KiCadUnitMultiplier; long long designSizeYkicad = (long long) designLimit.y * KiCadUnitMultiplier;
// Max size limited by the positive dimention of wxPoint // Max size limited by the positive dimension of wxPoint (which is an int)
double maxDesignSizekicad = Iu2Millimeter( std::numeric_limits<int>::max() ); long long maxDesignSizekicad = std::numeric_limits<int>::max();
if( designSizeXkicad > maxDesignSizekicad || designSizeYkicad > maxDesignSizekicad ) if( designSizeXkicad > maxDesignSizekicad || designSizeYkicad > maxDesignSizekicad )
THROW_IO_ERROR( wxString::Format( THROW_IO_ERROR( wxString::Format(
@ -63,7 +63,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::Load( ::BOARD* aBoard )
"Maximum permitted design size: %.2f, %.2f millimeters.\n" ), "Maximum permitted design size: %.2f, %.2f millimeters.\n" ),
(double) designSizeXkicad / PCB_IU_PER_MM, (double) designSizeXkicad / PCB_IU_PER_MM,
(double) designSizeYkicad / PCB_IU_PER_MM, (double) designSizeYkicad / PCB_IU_PER_MM,
maxDesignSizekicad, maxDesignSizekicad ) ); (double) maxDesignSizekicad / PCB_IU_PER_MM,
(double) maxDesignSizekicad / PCB_IU_PER_MM ) );
mDesignCenter = mDesignCenter =
( Assignments.Technology.DesignArea.first + Assignments.Technology.DesignArea.second ) ( Assignments.Technology.DesignArea.first + Assignments.Technology.DesignArea.second )

View File

@ -25,6 +25,7 @@
#include <cadstar_pcb_archive_parser.h> #include <cadstar_pcb_archive_parser.h>
#include <cmath> // pow() #include <cmath> // pow()
#include <convert_to_biu.h> // PCB_IU_PER_MM
void CADSTAR_PCB_ARCHIVE_PARSER::Parse() void CADSTAR_PCB_ARCHIVE_PARSER::Parse()
@ -45,7 +46,7 @@ void CADSTAR_PCB_ARCHIVE_PARSER::Parse()
switch( Header.Resolution ) switch( Header.Resolution )
{ {
case RESOLUTION::HUNDREDTH_MICRON: case RESOLUTION::HUNDREDTH_MICRON:
KiCadUnitMultiplier = 10; KiCadUnitMultiplier = PCB_IU_PER_MM / 1e5;
break; break;
default: default: