← Back to team overview

kicad-developers team mailing list archive

Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"

 

Hi everyone!

I'm new here in the mailing list but I'm currently building my own
electronics business around KiCad which I use and love for years now.

I spent the last weeks, trying to tie together procurement, PCB design, and
fabrication in a single script-set.
Just to have it mentioned - before getting self-employed, I worked for 10
years in the electronics industry in a huge enterprise.
So I had some strict requirements for my tooling and I have some very
strong opinions on how my perfect workflow should look like :)

I'm very sorry but I need to say: PLEASE, don't just throw a part database
at the community!
Why? Because everyone has different approaches how to do procurement and
inventory management!
It's ok (and actually good!) if you try to come up with something but
PLEASE, go for a defined filter interface!

What I would suggest implementing  - actually, I have plans to implement it
myself in mid-term - is a simple checkbox in the component dialog named
"Apply Parts Filter" and a global URI parameter that provides the filter
(or better: the source of "wisdom" used by the filter). Maybe another
parameter defining the default for the checkbox would be nice as well...

I think even a simple CSV with columns for Symbol, Footprint, and Value
could provide sufficient information for effective filtering/adaption of
the symbol-tree.

A CSV like this:


"Audio:TLV320AIC23BPW", "TLV320AIC23BPW",
"Package_SO:TSSOP-28_4.4x9.7mm_P0.65mm"
"Device:R_Small", "1k", "Resistor_SMD:R_0805_2012Metric"
"Device:R*", "12k4", "Resistor_SMD:R_0805_2012Metric"
"Device:R*", "12k4", "Resistor_SMD:R_1206_3216Metric"
"Device:R*", "10R", "Resistor_SMD:R_0805_2012Metric"


should result in a component tree like this:

Audio

TLV320AIC23BPW     <-- this symbol has a matching default footprint and
value

Device

R  <-- this symbol is included in the CSV data

12k4     <-- a value of 12k4 would match Device:R and a corresponding
symbol is added by the filter

Resistor_SMD:R_0805_2012Metric   <--- both footprints would match Device:R
12k4 so the filter adds both symbols with the footprint and values fields
complemented
Resistor_SMD:R_0805_2012Metric   <--- ....

10R

Resistor_SMD:R_0805_2012Metric

R_Small

1k    <-- 1k only matches Device:R_Small

Resistor_SMD:R_0805_2012Metric

12k4

Resistor_SMD:R_0805_2012Metric
Resistor_SMD:R_0805_2012Metric

10R

Resistor_SMD:R_0805_2012Metric


So the filter should add all symbols referenced in the CSV.
If a symbol has no matching footprint and/or value => "create" them on fly

With this, you can use the whole symbol library or the existing parts in
your inventory.
The best of both worlds!

Regards,
    Johann


Am Fr., 28. Aug. 2020 um 16:38 Uhr schrieb Brian <lotharyx@xxxxxxxxx>:

> Just want to add my +1 for the interface approach.  I am glad to hear that
> is the intent (I’ve not had time to read the proposal).  With such an
> interface, as has been pointed out already, data-source-specific
> implementations should be relatively straightforward, and then I don’t have
> to potentially throw away my years of privately curated data or figure out
> how to cram it into some alternate schema.  All I would need to do is write
> the code to answer the questions presented by the interface.
>
> Hopefully in the next few days I’ll be able to read Jon’s draft spec and
> comment from a better-informed position.
>
> Cheers,
> -Brian
>
> On Aug 28, 2020, at 9:43 AM, Jon Evans <jon@xxxxxxxxxxxxx> wrote:
>
> 
> Hi Clemens,
>
> On Fri, Aug 28, 2020 at 9:34 AM Clemens Koller <cko@xxxxxxxxx> wrote:
>
>> Hello!
>>
>> This is related to the previous thread: "Automatic assignment of
>> footprint with a database"
>>
>> I would generally prefer assemble real components on a real PCB right
>> from the beginning instead of first placing generic components and then
>> assign footprints + manufacturers + types + x manually. This seems extra
>> work for each component which could possibly be avoided.
>>
>
> Me too!
>
>
>> So, regarding on the Kicad codebase, I would very likely not recomment to
>> embed a full component management / database system, since this might vary
>> from site to site and even from project/assembly house to project/house.
>> But it would be great to be able to have an interface to grab a component
>> out of a database and Kicad grabs all desired / a selection of individual
>> columns out of the database as needed.
>> This might include the actual footprints stored in the database as well.
>>
>
> What I plan on implementing is not a "full" database management system,
> but rather an interface to grab info out of a database, just like you say.
> The only difference is, there are no plans to store actual symbols or
> footprints in the database.
> The symbols and footprints will still be stored in "normal" KiCad library
> files; the database will just contain "pointers" telling KiCad which symbol
> to use (and what library it can be found in).
>
> BTW, the example schema in your email looks very familiar to me.  This is
> the kind of data source that can be used with the feature I am talking
> about: just add columns to the schema for tracking which KiCad symbol and
> footprint(s) should be used for a part.
>
> Regarding the advanced features you mention, some of them sound like they
> would be handled by a PLM tool.
> Some of the PLM tools I have worked with can interface to external
> databases for managing this kind of component library for an EDA or
> mechanical CAD tool.
>
> Best,
> Jon
> _______________________________________________
> 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
>
> _______________________________________________
> 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
>

Follow ups

References