← Back to team overview

kicad-developers team mailing list archive

Re: [FEATURE] Component table viewer

 

JP, others,

After further investigation, I have worked out why the components with
duplicated references were displaying incorrectly.

Patch_004 is attached, Thomas can you confirm that it fixes the display for
you?

Kind Regards,
Oliver

On Mon, Apr 17, 2017 at 7:53 AM, Oliver Walters <
oliver.henry.walters@xxxxxxxxx> wrote:

> JP,
>
> Thanks for the feedback.
>
> In the component table, multi-unit symbols are "compressed" into a single
> entry. Change a field value for one and it will change for all units of
> that symbol.
>
> For "duplicate" references, perhaps the best approach is to only allow a
> certain reference to be added once to the table?
>
> However this does not represent the true state of the schematic -
> component count would be incorrect, for one.
>
> Any suggestions?
>
> On 17 Apr 2017 00:31, "jp charras" <jp.charras@xxxxxxxxxx> wrote:
>
> Le 16/04/2017 à 15:12, Oliver Walters a écrit :
> > It's not KiCad that "knows" to exclude testing points, etc - my Python
> BOM script has a series of
> > regex filters that remove a whole swathe of virtual components.
> >
> > Sometimes you actually want test points to be in the BoM e.g. for
> loading probe hooks onto the board.
> >
> > Eventually I want to add such filtering to this tool but I'd rather have
> the first round merged
> > first before the feature set becomes too complicated.
> >
> > Can someone with intimate knowledge provide some info on how components
> in sheets that are
> > referenced multiple times should be annotated in the BOM? I feel that
> sending a BOM with duplicate
> > references is wrong...
> >
>
> See const wxString GetRef( const SCH_SHEET_PATH* sheet ) in sch_component.h
>
> The field F0 is not really the reference. It is the reference current
> displayed on the screen.
> It is the reference only for simple hierarchies, because there is only one
> reference by symbol.
>
> Complex hierarchies (i.e. having more than one instance of a given sheet)
> are always tricky to handle.
> Especially, because the same component is shared by all instances, only
> the reference is specific to
> each instance.
> By definition, all other fields are shared.
> Therefore you cannot set for instance the value field (or the footprint
> name field) of shared
> components with different texts.
> If a field is modified, it must be also modified in all rows linked to
> this shared component in your
> Component table viewer, which shows components as a flattened schematic
> (like in a netlist).
> (Perhaps all references of this shared component should be displayed in
> the same row)
>
> Components with multiple unites by package are also a bit tricky to manage.
>
> Complex hierarchies having components with multiple unites by package are
> *especially* tricky.
>
> --
> Jean-Pierre CHARRAS
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>
>
>
From f1f954cc80992bc095849a2ddc6cc3bffad4f417 Mon Sep 17 00:00:00 2001
From: Oliver Walters <oliver.henry.walters@xxxxxxxxx>
Date: Mon, 17 Apr 2017 12:08:21 +1000
Subject: [PATCH] Fixed display of references for duplicate sheets

Display part reference rather than REFERENCE field value
---
 eeschema/bom_table_model.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eeschema/bom_table_model.cpp b/eeschema/bom_table_model.cpp
index a43d749..5301e95 100644
--- a/eeschema/bom_table_model.cpp
+++ b/eeschema/bom_table_model.cpp
@@ -456,7 +456,7 @@ bool BOM_TABLE_COMPONENT::AddUnit( SCH_REFERENCE aUnit )
                 }
                 break;
             case BOM_COL_ID_REFERENCE:
-                value = cmp->GetField( REFERENCE )->GetText();
+                value = aUnit.GetRef();
                 break;
             case BOM_COL_ID_VALUE:
                 value = cmp->GetField( VALUE )->GetText();
-- 
2.7.4


Follow ups

References