parent
3b658b4be6
commit
1ca9cbe547
|
@ -630,7 +630,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
||||||
bool CompactForm,
|
bool CompactForm,
|
||||||
bool aIncludeSubComponents )
|
bool aIncludeSubComponents )
|
||||||
{
|
{
|
||||||
int Multi, Unit;
|
|
||||||
EDA_BaseStruct* DrawList;
|
EDA_BaseStruct* DrawList;
|
||||||
SCH_COMPONENT* DrawLibItem;
|
SCH_COMPONENT* DrawLibItem;
|
||||||
LIB_COMPONENT* Entry;
|
LIB_COMPONENT* Entry;
|
||||||
|
@ -688,22 +687,20 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
||||||
|
|
||||||
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
||||||
|
|
||||||
Multi = 0;
|
bool isMulti = false;
|
||||||
Unit = ' ';
|
wxString subRef;
|
||||||
Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
|
Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
|
||||||
if( Entry )
|
if( Entry )
|
||||||
Multi = Entry->GetPartCount();
|
isMulti = Entry->IsMulti();
|
||||||
|
|
||||||
if( ( Multi > 1 ) && aIncludeSubComponents )
|
if( isMulti && aIncludeSubComponents )
|
||||||
#if defined(KICAD_GOST)
|
subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit );
|
||||||
Unit = aList[ii].m_Unit + '1' - 1;
|
else
|
||||||
#else
|
subRef.Empty();
|
||||||
Unit = aList[ii].m_Unit + 'A' - 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sprintf( CmpName, "%s", aList[ii].m_Reference );
|
sprintf( CmpName, "%s", aList[ii].m_Reference );
|
||||||
if( !CompactForm || Unit != ' ' )
|
if( !CompactForm )
|
||||||
sprintf( CmpName + strlen( CmpName ), "%c", Unit );
|
sprintf( CmpName + strlen( CmpName ), "%s", CONV_TO_UTF8(subRef) );
|
||||||
|
|
||||||
if( CompactForm )
|
if( CompactForm )
|
||||||
#if defined(KICAD_GOST)
|
#if defined(KICAD_GOST)
|
||||||
|
@ -875,8 +872,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal(
|
||||||
std::vector <OBJ_CMP_TO_LIST>& aList,
|
std::vector <OBJ_CMP_TO_LIST>& aList,
|
||||||
bool aIncludeSubComponents )
|
bool aIncludeSubComponents )
|
||||||
{
|
{
|
||||||
int Multi;
|
|
||||||
wxChar Unit;
|
|
||||||
EDA_BaseStruct* DrawList;
|
EDA_BaseStruct* DrawList;
|
||||||
SCH_COMPONENT* DrawLibItem;
|
SCH_COMPONENT* DrawLibItem;
|
||||||
LIB_COMPONENT* Entry;
|
LIB_COMPONENT* Entry;
|
||||||
|
@ -902,25 +897,19 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal(
|
||||||
|
|
||||||
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
||||||
|
|
||||||
Multi = 0;
|
bool isMulti = false;
|
||||||
Unit = ' ';
|
|
||||||
Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
|
Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
|
||||||
if( Entry )
|
if( Entry )
|
||||||
Multi = Entry->GetPartCount();
|
isMulti = Entry->IsMulti();
|
||||||
|
|
||||||
if( ( Multi > 1 ) && aIncludeSubComponents )
|
wxString subRef;
|
||||||
{
|
if( isMulti && aIncludeSubComponents )
|
||||||
#if defined(KICAD_GOST)
|
subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit );
|
||||||
Unit = aList[ii].m_Unit + '1' - 1;
|
else
|
||||||
}
|
subRef.Empty();
|
||||||
|
|
||||||
sprintf( CmpName, "%s.%c", aList[ii].m_Reference, Unit );
|
sprintf( CmpName, "%s%s", aList[ii].m_Reference, CONV_TO_UTF8(subRef) );
|
||||||
#else
|
|
||||||
Unit = aList[ii].m_Unit + 'A' - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sprintf( CmpName, "%s%c", aList[ii].m_Reference, Unit );
|
|
||||||
#endif
|
|
||||||
fprintf( f, "| %-12s %-10s",
|
fprintf( f, "| %-12s %-10s",
|
||||||
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ),
|
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ),
|
||||||
CmpName );
|
CmpName );
|
||||||
|
|
|
@ -230,6 +230,22 @@ LIB_COMPONENT::~LIB_COMPONENT()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** function IsMulti
|
||||||
|
* @return the sub reference for component having multiple parts per package.
|
||||||
|
* The sub reference identify the part (or unit)
|
||||||
|
* @param aUnit = the part identifier ( 1 to 26)
|
||||||
|
*/
|
||||||
|
wxString LIB_COMPONENT::ReturnSubReference( int aUnit )
|
||||||
|
{
|
||||||
|
wxString subRef;
|
||||||
|
#if defined(KICAD_GOST)
|
||||||
|
subRef.Printf( wxT(".%d" ), aUnit);
|
||||||
|
#else
|
||||||
|
subRef.Append( aUnit + 'A' - 1 );
|
||||||
|
#endif
|
||||||
|
return subRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc,
|
void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc,
|
||||||
const wxPoint& aOffset, int aMulti,
|
const wxPoint& aOffset, int aMulti,
|
||||||
|
|
|
@ -575,6 +575,20 @@ public:
|
||||||
|
|
||||||
int GetPartCount() { return unitCount; }
|
int GetPartCount() { return unitCount; }
|
||||||
|
|
||||||
|
/** function IsMulti
|
||||||
|
* @return true if the component has multiple parts per package.
|
||||||
|
* When happens, the reference has a sub reference ti identify part
|
||||||
|
*/
|
||||||
|
bool IsMulti() { return unitCount > 1; }
|
||||||
|
|
||||||
|
/** function IsMulti
|
||||||
|
* @return the sub reference for component having multiple parts per package.
|
||||||
|
* The sub reference identify the part (or unit)
|
||||||
|
* @param aUnit = the part identifier ( 1 to max count)
|
||||||
|
* Note: this is a static function.
|
||||||
|
*/
|
||||||
|
static wxString ReturnSubReference( int aUnit );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set or clear the alternate body style (DeMorgan) for the component.
|
* Set or clear the alternate body style (DeMorgan) for the component.
|
||||||
*
|
*
|
||||||
|
|
|
@ -502,20 +502,10 @@ wxString LIB_FIELD::GetFullText( int unit )
|
||||||
return m_Text;
|
return m_Text;
|
||||||
|
|
||||||
wxString text = m_Text;
|
wxString text = m_Text;
|
||||||
|
text << wxT( "?" );
|
||||||
|
|
||||||
if( GetParent()->GetPartCount() > 1 )
|
if( GetParent()->IsMulti() )
|
||||||
{
|
text << LIB_COMPONENT::ReturnSubReference( unit );
|
||||||
#if defined(KICAD_GOST)
|
|
||||||
text.Printf( wxT( "%s?.%c" ),
|
|
||||||
m_Text.GetData(), unit + '1' - 1 );
|
|
||||||
#else
|
|
||||||
|
|
||||||
text.Printf( wxT( "%s?%c" ),
|
|
||||||
m_Text.GetData(), unit + 'A' - 1 );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
text << wxT( "?" );
|
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,14 +140,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
/* For more than one part per package, we must add the part selection
|
/* For more than one part per package, we must add the part selection
|
||||||
* A, B, ... or 1, 2, .. to the reference. */
|
* A, B, ... or 1, 2, .. to the reference. */
|
||||||
wxString fulltext = m_Text;
|
wxString fulltext = m_Text;
|
||||||
char part_id;
|
fulltext << LIB_COMPONENT::ReturnSubReference( parentComponent->m_Multi );
|
||||||
#if defined(KICAD_GOST)
|
|
||||||
fulltext.Append( '.' );
|
|
||||||
part_id = '1' - 1 + parentComponent->m_Multi;
|
|
||||||
#else
|
|
||||||
part_id = 'A' - 1 + parentComponent->m_Multi;
|
|
||||||
#endif
|
|
||||||
fulltext.Append( part_id );
|
|
||||||
|
|
||||||
DrawGraphicText( panel, DC, textpos, color, fulltext,
|
DrawGraphicText( panel, DC, textpos, color, fulltext,
|
||||||
orient,
|
orient,
|
||||||
|
@ -432,13 +425,7 @@ bool SCH_FIELD::Matches( wxFindReplaceData& aSearchData, void * aAuxData )
|
||||||
/* For more than one part per package, we must add the part selection
|
/* For more than one part per package, we must add the part selection
|
||||||
* A, B, ... or 1, 2, .. to the reference. */
|
* A, B, ... or 1, 2, .. to the reference. */
|
||||||
int part_id = pSch->GetUnitSelection( sheet );
|
int part_id = pSch->GetUnitSelection( sheet );
|
||||||
#if defined(KICAD_GOST)
|
fulltext << LIB_COMPONENT::ReturnSubReference( part_id );
|
||||||
fulltext.Append( '.' );
|
|
||||||
part_id += '1' - 1;
|
|
||||||
#else
|
|
||||||
part_id += 'A' - 1;
|
|
||||||
#endif
|
|
||||||
fulltext.Append( (char)part_id );
|
|
||||||
}
|
}
|
||||||
return SCH_ITEM::Matches( fulltext, aSearchData );
|
return SCH_ITEM::Matches( fulltext, aSearchData );
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,15 +125,7 @@ static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem,
|
||||||
{
|
{
|
||||||
/* Adding A, B ... to the reference */
|
/* Adding A, B ... to the reference */
|
||||||
wxString Text;
|
wxString Text;
|
||||||
Text = field->m_Text;
|
Text = field->m_Text + LIB_COMPONENT::ReturnSubReference( DrawLibItem->m_Multi );
|
||||||
char unit_id;
|
|
||||||
#if defined(KICAD_GOST)
|
|
||||||
Text.Append( '.' );
|
|
||||||
unit_id = '1' - 1 + DrawLibItem->m_Multi;
|
|
||||||
#else
|
|
||||||
unit_id = 'A' - 1 + DrawLibItem->m_Multi;
|
|
||||||
#endif
|
|
||||||
Text.Append( unit_id );
|
|
||||||
plotter->text( textpos, color, Text,
|
plotter->text( textpos, color, Text,
|
||||||
orient,
|
orient,
|
||||||
field->m_Size, hjustify, vjustify,
|
field->m_Size, hjustify, vjustify,
|
||||||
|
|
Loading…
Reference in New Issue