Pcbnew: fix issues: Ensure pads type connector have a drill size= 0, like SMD pads. Ensure keepout zones have no net.

This commit is contained in:
jean-pierre charras 2013-03-10 14:59:47 +01:00
parent ccd9500bfb
commit 9d40727b4c
5 changed files with 301 additions and 281 deletions

View File

@ -7,9 +7,9 @@
#ifndef KICAD_BUILD_VERSION
#if defined KICAD_GOST
# define KICAD_BUILD_VERSION "(2013-mar-09 GOST)"
# define KICAD_BUILD_VERSION "(2013-mar-10 GOST)"
#else
# define KICAD_BUILD_VERSION "(2013-mar-09)"
# define KICAD_BUILD_VERSION "(2013-mar-10)"
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@
; General Product Description Definitions
!define PRODUCT_NAME "KiCad"
!define PRODUCT_VERSION "2013.03.09"
!define PRODUCT_VERSION "2013.03.10"
!define PRODUCT_WEB_SITE "http://iut-tice.ujf-grenoble.fr/kicad/"
!define SOURCEFORGE_WEB_SITE "http://kicad.sourceforge.net/"
!define COMPANY_NAME ""
@ -36,7 +36,7 @@ SetCompressor /final /solid lzma
CRCCheck force
XPStyle on
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}_stable-${PRODUCT_VERSION}-BZR3990_Win_full_version.exe"
OutFile "${PRODUCT_NAME}_stable-${PRODUCT_VERSION}-BZR3992_Win_full_version.exe"
InstallDir "$PROGRAMFILES\KiCad"
ShowInstDetails hide
ShowUnInstDetails hide

View File

@ -2375,6 +2375,14 @@ void LEGACY_PLUGIN::loadZONE_CONTAINER()
else if( TESTLINE( "$endCZONE_OUTLINE" ) )
{
// Ensure keepout does not have a net
// (which have no sense for a keepout zone)
if( zc->GetIsKeepout() )
{
zc->SetNet(0);
zc->SetNetName( wxEmptyString );
}
// should always occur, but who knows, a zone without two corners
// is no zone at all, it's a spot?

View File

@ -2004,11 +2004,16 @@ D_PAD* PCB_PARSER::parseD_PAD() throw( IO_ERROR, PARSE_ERROR )
pad->SetAttribute( PAD_SMD );
// Default D_PAD object is thru hole with drill.
// SMD pads have no hole
pad->SetDrillSize( wxSize( 0, 0 ) );
break;
case T_connect:
pad->SetAttribute( PAD_CONN );
// Default D_PAD object is thru hole with drill.
// CONN pads have no hole
pad->SetDrillSize( wxSize( 0, 0 ) );
break;
case T_np_thru_hole:
@ -2136,8 +2141,8 @@ D_PAD* PCB_PARSER::parseD_PAD() throw( IO_ERROR, PARSE_ERROR )
// This fixes a bug caused by setting the default D_PAD drill size to a value
// other than 0 used to fix a bunch of debug assertions even though it is defined
// as a through hole pad. Wouldn't a though hole pad with no drill be a surface
// mount pad?
if( pad->GetAttribute() != PAD_SMD )
// mount pad (or a conn pad which is a smd pad with no solder paste)?
if( ( pad->GetAttribute() != PAD_SMD ) && ( pad->GetAttribute() != PAD_CONN ) )
pad->SetDrillSize( drillSize );
else
pad->SetDrillSize( wxSize( 0, 0 ) );
@ -2667,6 +2672,13 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER() throw( IO_ERROR, PARSE_ERROR )
if( pts.size() )
zone->AddFilledPolysList( pts );
// Ensure keepout does not have a net (which have no sense for a keepout zone)
if( zone->GetIsKeepout() )
{
zone->SetNet(0);
zone->SetNetName( wxEmptyString );
}
return zone.release();
}