Loading pcbnew/class_module.cpp +21 −6 Original line number Original line Diff line number Diff line /* /* * This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application. * * * Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2015 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2015 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2015 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * * * This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License Loading Loading @@ -174,6 +174,21 @@ MODULE::~MODULE() delete m_initial_comments; delete m_initial_comments; } } /** * Function ClearAllNets * Clear (i.e. force the ORPHANED dummy net info) the net info which * depends on a given board for all pads of the footprint. * This is needed when a footprint is copied between the fp editor and * the board editor for instance, because net info become fully broken */ void MODULE::ClearAllNets() { // Force the ORPHANED dummy net info for all pads. // ORPHANED dummy net does not depend on a board for( D_PAD* pad = Pads(); pad; pad = pad->Next() ) pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED ); } /* Draw the anchor cross (vertical) /* Draw the anchor cross (vertical) * Must be done after the pads, because drawing the hole will erase overwrite * Must be done after the pads, because drawing the hole will erase overwrite Loading pcbnew/class_module.h +12 −3 Original line number Original line Diff line number Diff line /* /* * This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application. * * * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 1992-2013 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * * * This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License Loading Loading @@ -93,7 +93,7 @@ public: void Copy( MODULE* Module ); // Copy structure void Copy( MODULE* Module ); // Copy structure /* /** * Function Add * Function Add * adds the given item to this MODULE and takes ownership of its memory. * adds the given item to this MODULE and takes ownership of its memory. * @param aBoardItem The item to add to this board. * @param aBoardItem The item to add to this board. Loading Loading @@ -123,6 +123,15 @@ public: */ */ BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem ); BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem ); /** * Function ClearAllNets * Clear (i.e. force the ORPHANED dummy net info) the net info which * depends on a given board for all pads of the footprint. * This is needed when a footprint is copied between the fp editor and * the board editor for instance, because net info become fully broken */ void ClearAllNets(); /** /** * Function CalculateBoundingBox * Function CalculateBoundingBox * calculates the bounding box in board coordinates. * calculates the bounding box in board coordinates. Loading pcbnew/loadcmp.cpp +7 −8 Original line number Original line Diff line number Diff line Loading @@ -101,8 +101,7 @@ bool FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD( MODULE* aModule ) // Morever we do not want to save any reference to an unknown net when // Morever we do not want to save any reference to an unknown net when // saving the footprint in lib cache // saving the footprint in lib cache // so we force the ORPHANED dummy net info for all pads // so we force the ORPHANED dummy net info for all pads for( D_PAD* pad = newModule->Pads(); pad; pad = pad->Next() ) newModule->ClearAllNets(); pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED ); SetCrossHairPosition( wxPoint( 0, 0 ) ); SetCrossHairPosition( wxPoint( 0, 0 ) ); PlaceModule( newModule, NULL ); PlaceModule( newModule, NULL ); Loading Loading @@ -332,12 +331,12 @@ MODULE* PCB_BASE_FRAME::loadFootprint( const FPID& aFootprintId ) MODULE* module = fptbl->FootprintLoadWithOptionalNickname( aFootprintId ); MODULE* module = fptbl->FootprintLoadWithOptionalNickname( aFootprintId ); // Clear all references to any net info, to be sure there is no broken links // If the module is found, clear all net info, // to any netinfo list (should be not needed, but...) // to be sure there is no broken links #if 0 // FIXME : currently crashes Pcbnew. should not. // to any netinfo list (should be not needed, but it can be edited from for( D_PAD* pad = module->Pads(); pad; pad = pad->Next() ) // the footprint editor ) pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED ); if( module ) #endif module->ClearAllNets(); return module; return module; } } Loading Loading
pcbnew/class_module.cpp +21 −6 Original line number Original line Diff line number Diff line /* /* * This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application. * * * Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2015 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2015 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2015 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * * * This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License Loading Loading @@ -174,6 +174,21 @@ MODULE::~MODULE() delete m_initial_comments; delete m_initial_comments; } } /** * Function ClearAllNets * Clear (i.e. force the ORPHANED dummy net info) the net info which * depends on a given board for all pads of the footprint. * This is needed when a footprint is copied between the fp editor and * the board editor for instance, because net info become fully broken */ void MODULE::ClearAllNets() { // Force the ORPHANED dummy net info for all pads. // ORPHANED dummy net does not depend on a board for( D_PAD* pad = Pads(); pad; pad = pad->Next() ) pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED ); } /* Draw the anchor cross (vertical) /* Draw the anchor cross (vertical) * Must be done after the pads, because drawing the hole will erase overwrite * Must be done after the pads, because drawing the hole will erase overwrite Loading
pcbnew/class_module.h +12 −3 Original line number Original line Diff line number Diff line /* /* * This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application. * * * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 1992-2013 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * * * This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License Loading Loading @@ -93,7 +93,7 @@ public: void Copy( MODULE* Module ); // Copy structure void Copy( MODULE* Module ); // Copy structure /* /** * Function Add * Function Add * adds the given item to this MODULE and takes ownership of its memory. * adds the given item to this MODULE and takes ownership of its memory. * @param aBoardItem The item to add to this board. * @param aBoardItem The item to add to this board. Loading Loading @@ -123,6 +123,15 @@ public: */ */ BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem ); BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem ); /** * Function ClearAllNets * Clear (i.e. force the ORPHANED dummy net info) the net info which * depends on a given board for all pads of the footprint. * This is needed when a footprint is copied between the fp editor and * the board editor for instance, because net info become fully broken */ void ClearAllNets(); /** /** * Function CalculateBoundingBox * Function CalculateBoundingBox * calculates the bounding box in board coordinates. * calculates the bounding box in board coordinates. Loading
pcbnew/loadcmp.cpp +7 −8 Original line number Original line Diff line number Diff line Loading @@ -101,8 +101,7 @@ bool FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD( MODULE* aModule ) // Morever we do not want to save any reference to an unknown net when // Morever we do not want to save any reference to an unknown net when // saving the footprint in lib cache // saving the footprint in lib cache // so we force the ORPHANED dummy net info for all pads // so we force the ORPHANED dummy net info for all pads for( D_PAD* pad = newModule->Pads(); pad; pad = pad->Next() ) newModule->ClearAllNets(); pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED ); SetCrossHairPosition( wxPoint( 0, 0 ) ); SetCrossHairPosition( wxPoint( 0, 0 ) ); PlaceModule( newModule, NULL ); PlaceModule( newModule, NULL ); Loading Loading @@ -332,12 +331,12 @@ MODULE* PCB_BASE_FRAME::loadFootprint( const FPID& aFootprintId ) MODULE* module = fptbl->FootprintLoadWithOptionalNickname( aFootprintId ); MODULE* module = fptbl->FootprintLoadWithOptionalNickname( aFootprintId ); // Clear all references to any net info, to be sure there is no broken links // If the module is found, clear all net info, // to any netinfo list (should be not needed, but...) // to be sure there is no broken links #if 0 // FIXME : currently crashes Pcbnew. should not. // to any netinfo list (should be not needed, but it can be edited from for( D_PAD* pad = module->Pads(); pad; pad = pad->Next() ) // the footprint editor ) pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED ); if( module ) #endif module->ClearAllNets(); return module; return module; } } Loading