6 Replies Latest reply on Jul 9, 2018 9:27 AM by lamabrew

    Update a project with all component updates from multiple libraries


      A similar question was asked in the past (update a schematic with an updated library component, which is done by selecting the library component and the 'pushing' the update to the schematic, which must be open).  That is NOT the problem I need to solve.


      I need to update every component in a project with the current symbol, parameters (for those that are linked), and footprint for every component in the project.  Opening every schematic sheet in the project and then going through every possible component in every possible library to make sure one doesn't get missed isn't workable.  I've searched through everything I can think of to figure out how to do this and I'm not finding the answer, apologies in advance if I missed the obvious.


      Here's the use case I'm dealing with:

      • System with 6 PCB designs in it, each with multi-sheet schematics.
      • System specific (Altium Integrated) libraries, about a dozen (libraries for specific vendors, components, etc)
      • Working on PCB A, realize that half dozen library parts need modification (could be as simple updated supplier PN, or more serious like a footprint change)
      • Make the library mods and update PCB A to verify using the documented method to push changes from SchLib & PCBLib to schematics & layout for PCB A project
      • Now need to update schematics and layouts for PCB B, C, D, etc...


      So far the only thing I can see is opening every schematic/layout in all of the PCB projects and then going back through each library with a written list of which components to push out an update to. IMHO the odds of getting every part in every project correct are zero; doesn't seem to be a way to run a report that would show where the project and the library have diverged?  There are definitely cases where I would not want to update a project with updated libraries - for example after release. But if you accidentally have a schematic page from something else open now that's been trashed if you push out the changes from the library side.

        • Re: Update a project with all component updates from multiple libraries

          It is possible to update all footprints from one library at a time.

          1 of 1 people found this helpful
            • Re: Update a project with all component updates from multiple libraries

              Hi Peter,


              I was actually more thinking about schematics than PCBs.


              Regardless, as I was just reminded when I hit this again after my post, "one library at a time" is unworkable as I have a number of integrated libraries, and then within those a lot of them are collections of individual components that I've pulled from various vendors and/or parts services. I'm around 30 .pcblib files at the moment. (yes I guess there's no harm in consolidated the one component per schlib/pcblib ones in to a 'common' schlib/pcblib per integrated lib, but I like the idea of keeping the files the way I get them in case there's an update).


              If I'm understanding it what you show is a "push" from the library, which means if I forgot to open a file or the converse (i.e. an older "frozen" release is opened) I would easily make a mess of things.


              What I'm looking for is some sort of right click on the PcbPrj file and select "update all components in schematics" and "update all components in layout" options.  Of course finer grain control would be much more useful, along with the ability to run a report prior to doing this to see what CS thinks the differences actually are.


              Somewhat parenthetically and not to rant nor to go all negative on CS, but the component handling is awful vs. my expectations. Sadly my expectations came from reading about Altium Component Vault from googling for documentation and not realizing it's something in Altium Designer that has no obvious relationship with what's included in CS.


              IMHO the Vault thing in CS is some bizarre anti-productivity tool dreamed up by Altium's competitors.  It's so bad that I've totally stopped using it, ignoring the incessant prompts to log in to it. However there's nothing else in CS to support organizing components, searching, cataloging, etc., so I've gone to "outside" CS to do that.


              The rest of CS IMHO represents really good value for the functionality and for me hits a sweet spot for low complexity designs I'm doing. But components/libraries has been nothing but disappointment and if I had to vote for one thing for Altium to do is to deal with that. I'm hoping the (announced but no sign of it yet)  integration with Ocotpart might be a step in that direction.


              Thanks again for looking in to this.

              • Re: Update a project with all component updates from multiple libraries

                I also am wondering how the heck to synchronize/update more than one component on my schematic at a time.


                I'm going through my schematic libraries and manually adding supplier links to each component.  Now that I have done that, I want the ability to either push all of those changes to my schematic document at the same time (from inside each library).  Alternatively, the ability to run a check from within my schematic document to see if any of the components in my design have corresponding source library diferences, and pull those differences to my schematic document.


                Thanks peterbarnard e14softwareuk

              • Re: Update a project with all component updates from multiple libraries

                Here's my workaround - it's long, ugly, complex, and error prone and is not a replacement for Altium providing a way from within the schematic and layout tools to check library versions of all components.


                Every component I use in a design has a my own library reference ID in the form of YYY-XX####-rev 


                • YYY are some fixed characters to make all of my IDs unique to me (hopefully) (as I'm sharing projects with others)
                • XX is a one or two letter code for the part type (like R, C, U, etc) (generally each library file maps to one code as a way to keep searching manageable)
                • #### is a 4 digit number where each new part I add increments it by 1
                • and rev is a single letter indicating the revision number of the part (starting with A).


                Changing a library component means copying the part and bumping the revision number.

                I have a master schematic for each library that has one of each part on it, from this I can "dump" the libraries and all details in the same format as a project BOM.

                I can then compare a project BOM with the master part (BOM) list and look for revision mismatches.


                I have only done this for schematic portion as initially I did not think I would update footprints vs. assigning new footprints to specific parts. In hindsight I probably should have done the revision control on the footprints too as I have made some minor tweaks and didn't want to update schematics.


                The downside to this (besides the complexity of it all, and still having to more or less manually check and update things by hand) is that updating the schematic part means putting in what looks like a new part.  This can cause problems as parameters are going to get reset; as well as there's still some issue with parts rotating or moving that makes a mess of the schematic (happens occasionally under circumstances that I still can't identify.


                Also too this wouldn't work if you use the Altium Vault library for some components; I gave up on Vault a long time ago


                IMHO Altium's lack of support for component revision control in the day & age of Git (whatever) is inexcusable for a tool aimed at more than the free tools market of CircuitMaker.  Likewise the lack of a way to manage libraries with any hierarchy for organizing parts. Maybe someday there would be a plug-in that one can purchase to fix these problems. There's a lot to like about CircuitStudio and the price point it's offered at, but if I look at the time/cost of a board spin because of a missed update (happened twice to me so far, despite everything I do to try and catch it) it gets frustrating.