Database Library Multiple Footprints

I am new to KiCad, having been burned with Autodesk obsoleting the Linux version of Eagle. I am playing around with the database library new in v7.

I have the connection working and parts can be selected, but I saw in an example that multiple footprints were assigned with a semi colon separating the entries. This doesn’t seem to work, but I was wondering if this is a bug or if this feature is not implemented?

If it’s not implemented, I can stop trying to get it to work. It would be very useful though.

Just been looking through the source code and found this, which clearly shows all footprints after the first semi colon are ignored.

    if( aRow.count( aTable.footprints_col ) )
    {
        // TODO: Support multiple footprint choices
        std::string footprints = std::any_cast<std::string>( aRow.at( aTable.footprints_col ) );
        wxString footprint = wxString( footprints.c_str(), wxConvUTF8 ).BeforeFirst( ';' );
        symbol->GetFootprintField().SetText( footprint );
    }

Can anyone point me in the right direction for implementing this?

I have not messed around with db-libraries myself (so no practical hints), but the question sounds like this open gitliab-issue: Allow picking from multiple PCB footprints for a single database part (#13587) · Issues · KiCad / KiCad Source Code / kicad · GitLab

1 Like

That does look like exactly what I want. I’ll follow that issue, thanks.

I do not understand why you would want more than one footprint with a database part. In the old days before the database was available, we had was the symbol editor’s ability to perform footprint filtering, where you could define a default footprint (like an 0603 cap)…

…and use a wildcard in the filter to allow you to select others (0402…). Those were simpler days:

But the database allows us to define fully-atomic parts – one separate part number for each different part, as it should be. Here are three different TLV9062 packages, with three different part numbers in the database (same symbol, of course):

The same physical part can be installed on multiple footprints. For example; a THT capacitor that can have two footprints, one representing it standing vertically and another representing it bent over so the legs are at 90 degrees and it lies on its side. Or, a SMD capacitor with 3 different IPC-density footprints.

OK, after peeking at the gitlab link, I see how you could want to use a different footprint for the SAME physical part – that is a more specialized use case. However, I would still assign those as different part numbers in the database so I could identify them from the bom (which I would need to do to keep our qms happy).

At least in my experience, the cases I described would not want to be represented by different BOM part numbers. That said, if you would want to represent them as different part numbers, you have no need of this proposed new feature :slight_smile:

Well fair enough Jon, I can see the utility of that. I can also see a scenario where I have three caps on a board (with tiny footprints) that seem to have solder issues (maybe they often tombstone), when the other dozen of the same part (with standard fat pads) never have a problem. I need to have a note somewhere that reminds me that those were different pads that I selected at placement time. So I have a production issue to diagnose, but I have no traceability that is clearly-defined (the auditor would not be happy). But that is not a concern for everybody.

I am very impressed that you dug into the source and found this – maybe you should join the dev team :slight_smile: And welcome to the kicad forum @microwavesafe!

2 Likes

Through hole resistor is another example. Horizontally mounted vs vertically mounted. 1 symbol, 2 footprints.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.