How do I update the cached library

I am building my own libraries.
Suppose I created a component and inserted it in the schematic.
Then I make changes in the library (e.g - modify fields)
How do I get these changes into the components in the schematic?

I see an option of “check for conflicts” but it does not raise any alarm - maybe it works only if graphically a component is changed and not aligned anymore to the wires.

Is there some kind of “manually update cache”?

In general, if you change a component in a library KiCad picks up the changes automatically, e.g. if you change the graphics or pins. KiCad does not store these features in the schematic, so it must always refer back to the library.

But in the specific case of fields, these are not automatically updated. Copies of the fields are stored in the schematic, so they may have different values, different positions. Therefore if you add or modify fields in the library, those changes are only picked up when you add a new component.

As an exception to that, you can reset field positions to the library values with “Reset to library defaults”, but that only reset the positions and does not reset field values, or add any new fields.

1 Like

Editing in parallel with last bobc’s post: I recently switched to using the Sept 19 nightly under Win7 for my main installation and I have noticed if I for instance load a library by opening it independently in the Library Editor and change to use background color of a square in the library (I use one symbol=one library for my own libraries) and save it, it will immediately be updated and also become yellow in the schematics. However if I change one of the text fields, it is not propagating to the schematics. bobc’s post clarifies that this is expected behavior. What I usually practice if I need to update fields is simply to reinsert the symbol and delete the old one after I have gotten the annotation etc. correct. This can be a lot of work if there are many symbols where one need to enter information for BOM after the fact, so I have learned my lesson and now try to get all the information initially in there practicing use of “Molecular” parts, doing the work of part selection up front.

Still having problems.
This morning, after posting a different question yesterday, I edited a quad opamp in my library and removed the power pins from units B,C,D so that they show up only when placing A unit.
I already had the part in my schematic with power pins in all 4 units - and posted this question.

So, as otoien advised, I totally deleted the parts already in the schematics.
Went and picked it again from the library, but no good - although in the library it is clearly without the power pins, it is inserted with the power pins.
I see that in the “history” section it appears in the previous shape(with power pins).
So it seems that although I try to specifically pick it up from the library it takes what it already has in the history - any way to clear histroy?

BTW I am not using nightly builds - using the latest stable version

When you place a new component, KiCad always reads the data from the first library in the search list with a matching name. KiCad does not warn you if there are more than 1 match, it simply takes the first one it finds.

You have to make sure that the library you want to use is higher up the list than any other. You can view the library order (and change it) in eeschema:Preferences->Component Libraries.

A further wrinkle is that the project-cache.lib is automatically added to the end of the list, the cache file contains copies of the components from the last time you saved the schematic. If you want to add an updated component, you must not select the component from the cache file, otherwise you get stuck in a loop with the old version of the component.

3 Likes

Thanks - slowly learning the quirks.
I will simply discard any reference to the kicad builtin libraries.
Will use them only as the basis for creating my own components, but will do it in a dedicated project.

If you edit a part just make sure it has a unique name from the original, that way library order doesn’t matter and it won’t lurk in some other project as a ‘gotcha’.

Well, almost.

Actually, the name must be unique across all the loaded libraries, not just different from the original name. This subtle distinction is irrelevant for the first few projects that require you to modify a symbol. Creating a new symbol name by adding a " _ " (underscore) to the existing name, or adding " # ", or the numeral " 1 ", etc, will work just fine . . . until you modify a symbol that has already been modified and renamed using the same approach.

This isn’t a trivial problem, but a real solution requires a disciplined, documented, and enforced system for library management.

Dale