parent
3b658b4be6
commit
1ca9cbe547
|
@ -630,7 +630,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
|||
bool CompactForm,
|
||||
bool aIncludeSubComponents )
|
||||
{
|
||||
int Multi, Unit;
|
||||
EDA_BaseStruct* DrawList;
|
||||
SCH_COMPONENT* DrawLibItem;
|
||||
LIB_COMPONENT* Entry;
|
||||
|
@ -688,22 +687,20 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
|||
|
||||
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
||||
|
||||
Multi = 0;
|
||||
Unit = ' ';
|
||||
bool isMulti = false;
|
||||
wxString subRef;
|
||||
Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
|
||||
if( Entry )
|
||||
Multi = Entry->GetPartCount();
|
||||
isMulti = Entry->IsMulti();
|
||||
|
||||
if( ( Multi > 1 ) && aIncludeSubComponents )
|
||||
#if defined(KICAD_GOST)
|
||||
Unit = aList[ii].m_Unit + '1' - 1;
|
||||
#else
|
||||
Unit = aList[ii].m_Unit + 'A' - 1;
|
||||
#endif
|
||||
if( isMulti && aIncludeSubComponents )
|
||||
subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit );
|
||||
else
|
||||
subRef.Empty();
|
||||
|
||||
sprintf( CmpName, "%s", aList[ii].m_Reference );
|
||||
if( !CompactForm || Unit != ' ' )
|
||||
sprintf( CmpName + strlen( CmpName ), "%c", Unit );
|
||||
if( !CompactForm )
|
||||
sprintf( CmpName + strlen( CmpName ), "%s", CONV_TO_UTF8(subRef) );
|
||||
|
||||
if( CompactForm )
|
||||
#if defined(KICAD_GOST)
|
||||
|
@ -875,8 +872,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal(
|
|||
std::vector <OBJ_CMP_TO_LIST>& aList,
|
||||
bool aIncludeSubComponents )
|
||||
{
|
||||
int Multi;
|
||||
wxChar Unit;
|
||||
EDA_BaseStruct* DrawList;
|
||||
SCH_COMPONENT* DrawLibItem;
|
||||
LIB_COMPONENT* Entry;
|
||||
|
@ -902,25 +897,19 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal(
|
|||
|
||||
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
||||
|
||||
Multi = 0;
|
||||
Unit = ' ';
|
||||
bool isMulti = false;
|
||||
Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
|
||||
if( Entry )
|
||||
Multi = Entry->GetPartCount();
|
||||
isMulti = Entry->IsMulti();
|
||||
|
||||
if( ( Multi > 1 ) && aIncludeSubComponents )
|
||||
{
|
||||
#if defined(KICAD_GOST)
|
||||
Unit = aList[ii].m_Unit + '1' - 1;
|
||||
}
|
||||
wxString subRef;
|
||||
if( isMulti && aIncludeSubComponents )
|
||||
subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit );
|
||||
else
|
||||
subRef.Empty();
|
||||
|
||||
sprintf( CmpName, "%s.%c", aList[ii].m_Reference, Unit );
|
||||
#else
|
||||
Unit = aList[ii].m_Unit + 'A' - 1;
|
||||
}
|
||||
sprintf( CmpName, "%s%s", aList[ii].m_Reference, CONV_TO_UTF8(subRef) );
|
||||
|
||||
sprintf( CmpName, "%s%c", aList[ii].m_Reference, Unit );
|
||||
#endif
|
||||
fprintf( f, "| %-12s %-10s",
|
||||
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ),
|
||||
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,
|
||||
const wxPoint& aOffset, int aMulti,
|
||||
|
|
|
@ -575,6 +575,20 @@ public:
|
|||
|
||||
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.
|
||||
*
|
||||
|
|
|
@ -502,20 +502,10 @@ wxString LIB_FIELD::GetFullText( int unit )
|
|||
return m_Text;
|
||||
|
||||
wxString text = m_Text;
|
||||
text << wxT( "?" );
|
||||
|
||||
if( GetParent()->GetPartCount() > 1 )
|
||||
{
|
||||
#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( "?" );
|
||||
if( GetParent()->IsMulti() )
|
||||
text << LIB_COMPONENT::ReturnSubReference( unit );
|
||||
|
||||
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
|
||||
* A, B, ... or 1, 2, .. to the reference. */
|
||||
wxString fulltext = m_Text;
|
||||
char part_id;
|
||||
#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 );
|
||||
fulltext << LIB_COMPONENT::ReturnSubReference( parentComponent->m_Multi );
|
||||
|
||||
DrawGraphicText( panel, DC, textpos, color, fulltext,
|
||||
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
|
||||
* A, B, ... or 1, 2, .. to the reference. */
|
||||
int part_id = pSch->GetUnitSelection( sheet );
|
||||
#if defined(KICAD_GOST)
|
||||
fulltext.Append( '.' );
|
||||
part_id += '1' - 1;
|
||||
#else
|
||||
part_id += 'A' - 1;
|
||||
#endif
|
||||
fulltext.Append( (char)part_id );
|
||||
fulltext << LIB_COMPONENT::ReturnSubReference( part_id );
|
||||
}
|
||||
return SCH_ITEM::Matches( fulltext, aSearchData );
|
||||
}
|
||||
|
|
|
@ -125,15 +125,7 @@ static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem,
|
|||
{
|
||||
/* Adding A, B ... to the reference */
|
||||
wxString Text;
|
||||
Text = field->m_Text;
|
||||
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 );
|
||||
Text = field->m_Text + LIB_COMPONENT::ReturnSubReference( DrawLibItem->m_Multi );
|
||||
plotter->text( textpos, color, Text,
|
||||
orient,
|
||||
field->m_Size, hjustify, vjustify,
|
||||
|
|
Loading…
Reference in New Issue