Eeschema: Connecting power pins of all parts is no more needed. see changelog

This commit is contained in:
charras 2009-07-10 12:29:31 +00:00
parent baa278a3bc
commit a97a2b4b3c
10 changed files with 68 additions and 77 deletions

View File

@ -4,6 +4,18 @@ KiCad ChangeLog 2009
Please add newer entries at the top, list the date and your name with
email address.
2009-july-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++Eeschema:
Enhanced netlist creation and ERC tests for component having multiple parts per package
Connecting power pins of all parts is no more needed.
Usually, these components have in schematic duplicated power pins.
Op amps having 4 parts have also 4 duplicated pins per power input,
and therefore the user must place 4 power symboles per physical power pin
Now Only one power is needed (now eeschema search for a connected pin
between duplicated power pins)
Note this is a work in progress because the ERC does not check if these duplicate
are connected to the *same* net.
2009-july-06 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================

View File

@ -11,17 +11,17 @@
DIALOG_DISPLAY_HTML_TEXT_BASE::DIALOG_DISPLAY_HTML_TEXT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxSize( 400,170 ), wxDefaultSize );
this->SetSizeHints( wxSize( 400,120 ), wxDefaultSize );
wxBoxSizer* bMainSizer;
bMainSizer = new wxBoxSizer( wxVERTICAL );
m_htmlWindow = new wxHtmlWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
bMainSizer->Add( m_htmlWindow, 1, wxALL|wxEXPAND, 5 );
m_htmlWindow = new wxHtmlWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER );
bMainSizer->Add( m_htmlWindow, 1, wxEXPAND, 5 );
m_buttonClose = new wxButton( this, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonClose = new wxButton( this, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
m_buttonClose->SetDefault();
bMainSizer->Add( m_buttonClose, 0, wxALL|wxALIGN_RIGHT, 5 );
bMainSizer->Add( m_buttonClose, 0, wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
this->SetSizer( bMainSizer );
this->Layout();

View File

@ -29,10 +29,10 @@
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size">400,170</property>
<property name="minimum_size">400,120</property>
<property name="name">DIALOG_DISPLAY_HTML_TEXT_BASE</property>
<property name="pos"></property>
<property name="size">431,170</property>
<property name="size">431,120</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass"></property>
<property name="title"></property>
@ -77,7 +77,7 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxHtmlWindow" expanded="1">
<property name="bg"></property>
@ -98,7 +98,7 @@
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="window_style">wxSUNKEN_BORDER</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
@ -129,7 +129,7 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_RIGHT</property>
<property name="flag">wxALIGN_RIGHT|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="bg"></property>
@ -147,7 +147,7 @@
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="style">wxBU_EXACTFIT</property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>

View File

@ -40,7 +40,7 @@ class DIALOG_DISPLAY_HTML_TEXT_BASE : public wxDialog
public:
wxHtmlWindow* m_htmlWindow;
DIALOG_DISPLAY_HTML_TEXT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 431,180 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_DISPLAY_HTML_TEXT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 431,120 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_DISPLAY_HTML_TEXT_BASE();
};

View File

@ -661,6 +661,8 @@ void WinEDA_DrawPanel::OnPaint( wxPaintEvent& event )
m_ClipBox.SetHeight( PaintClipBox.GetHeight() );
#endif
// Be sure the drawpanel clipbox is bigger than the region to repair:
m_ClipBox.Inflate(1,1); // Give it one pixel more in each direction
#if 0 && defined (DEBUG)
printf( "2) PaintClipBox=(%d, %d, %d, %d) org=(%d, %d) m_ClipBox=(%d, %d, %d, %d)\n",

View File

@ -1,6 +1,7 @@
add_definitions(-DEESCHEMA)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/common
${Boost_INCLUDE_DIR}
)

View File

@ -82,35 +82,14 @@ void MARKER_SCH::Show( int nestLevel, std::ostream& os )
#endif
/**
* Function Save
* Function Save (do nothing : markers are no more saved in files )
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
* Currently: do nothing (markers are no more saved in files)
*/
bool MARKER_SCH::Save( FILE* aFile ) const
{
bool success = true;
#if 0
wxString msg = m_drc.GetMainText();
if( fprintf( aFile, "Kmarq %c %-4d %-4d \"%s\"",
GetMarkerType() + 'A', GetPos().x, GetPos().y,
CONV_TO_UTF8( msg ) ) == EOF )
success = false;
if ( m_drc.HasSecondItem() )
{
msg = GetReporter().GetAuxiliaryText();
if( fprintf( aFile, " \"%s\" %-4d %-4d",
GetMarkerType() + 'A', m_drc.GetPointB().x, m_drc.GetPointB().y,
CONV_TO_UTF8( msg ) ) == EOF )
success = false;
}
if( fprintf( aFile, " F=%X T=%X\n",
GetErrorLevel(), GetReporter().GetErrorCode() ) == EOF )
#endif
return success;
return true;
}
@ -160,7 +139,7 @@ void MARKER_SCH::DisplayMarkerInfo( WinEDA_SchematicFrame* aFrame )
wxString msg = GetReporter().ShowHtml();
DIALOG_DISPLAY_HTML_TEXT_BASE infodisplay( aFrame, -1, wxEmptyString,
wxGetMousePosition(), wxSize( 550, 170 ) );
wxGetMousePosition(), wxSize( 550, 140 ) );
infodisplay.m_htmlWindow->SetPage( msg );
infodisplay.ShowModal();

View File

@ -122,8 +122,13 @@ SCH_ITEM* WinEDA_SchematicFrame:: SchematicGeneralLocateAndDisplay( const wxPoin
SCH_COMPONENT* LibItem;
wxString Text;
wxString msg;
int ii;
DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), MARKERITEM );
if( DrawStruct )
{
MsgPanel->EraseMsgBox();
return DrawStruct;
}
DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), NOCONNECTITEM );
if( DrawStruct )
{

View File

@ -549,10 +549,38 @@ static void TestOthersItems( WinEDA_DrawPanel* panel,
|| ( NetItemRef->GetNet() != NetItemTst->GetNet() ) ) // End of net
{
/* Fin de netcode trouve: Tst connexion minimum */
if( (*MinConnexion < NET_NC )
&& (local_minconn < NET_NC ) ) /* Not connected or not driven pin */
if( (*MinConnexion < NET_NC ) && (local_minconn < NET_NC ) ) /* Not connected or not driven pin */
{
Diagnose( panel, NetItemRef, NULL, local_minconn, WAR );
bool seterr = true;
if( local_minconn == NOC && NetItemRef->m_Type == NET_PIN)
{
/* This pin is not connected: for multiple part per package, and duplicated pin,
* search for an other instance of this pin
* this will be flagged only is all instances of this pin are not connected
* TODO test also if instances connected are connected to the same net
*/
for ( ObjetNetListStruct *duppin = g_TabObjNet; duppin < Lim; duppin ++ )
{
if ( duppin->m_Type != NET_PIN )
continue;
if( duppin == NetItemRef )
continue;
if ( NetItemRef->m_PinNum != duppin->m_PinNum )
continue;
if( ( (SCH_COMPONENT*) NetItemRef->m_Link )->GetRef(&NetItemRef->m_SheetList) !=
((SCH_COMPONENT*) duppin->m_Link )->GetRef(&duppin->m_SheetList) )
continue;
// Same component and same pin. Do dot create error for this pin
// if the other pin is connected (i.e. if duppin net has an other item)
if ( (duppin > g_TabObjNet) && (duppin->GetNet() == (duppin-1)->GetNet()))
seterr = false;
if ( (duppin < Lim-1) && (duppin->GetNet() == (duppin+1)->GetNet()) )
seterr = false;
}
}
if ( seterr )
Diagnose( panel, NetItemRef, NULL, local_minconn, WAR );
*MinConnexion = DRV; // inhibition autres messages de ce type pour ce net
}
return;

View File

@ -324,43 +324,7 @@ at line %d, aborted" ),
break;
case 'K': /* It is a Marker item. */
#if 0 // Markers are no more read from file
if( sscanf( SLine, "%s %d %d", Name1, &pos.x, &pos.y ) != 3 )
{
MsgDiag.Printf( wxT( "EESchema file marker struct error line %d, aborted" ),
LineCount );
MsgDiag << wxT( "\n" ) << CONV_FROM_UTF8( Line );
Failed = true;
}
else
{
char* text;
char BufLine[1024];
BufLine[0] = 0;
int errtype = 0;
MARKER_SCH* Marker = new MARKER_SCH( );
ii = ReadDelimitedText( BufLine, Line, 1024 );
int type = (TypeMarker) ( (Name1[0] & 255) - 'A' );
if( type < 0 || type >= MARK_NMAX)
type = MARK_UNSPEC;
Marker->SetMarkerType( type );
text = Line+ii;
text = strstr( text, " F=" );
if( text )
{
ii = 0;
sscanf( text + 3, "%X", &ii );
Marker->SetErrorLevel( ii );
text = strstr( text, " T=" );
if( text )
sscanf( text + 3, "%X", &errtype );
}
Marker->SetData(errtype, pos, CONV_FROM_UTF8( BufLine ) , pos);
Marker->SetNext( screen->EEDrawList );
screen->EEDrawList = Marker;
}
#endif
// Markers are no more read from file. they are only created on demand in schematic
break;
case 'T': /* It is a text item. */