The most common cause of this issue is that the SysID has changed. All components in a spec have a tag known as a SysID. This value is what makes the connection between the components in the model to the ones in the spec. When you run the "Update From Spec" tool, it checks the SysID and matches to the existing components. If they match, then it will update the components with the new information. The problem comes from what makes up the SysID. The SysID is made up of different values in the spec that are not typically changed, such as Rating, Schedule, width, etc... For example, if a user changes the value of WEIGHT_DRY, which turns out that it is also used to create the SysID, it will change the SysID which in turn will break the link between the model's components and the spec's components. This is why the "Update From Spec" doesn't work. Another possible cause for this would be editing the Catalogs and Specs in Microsoft Access rather then in SpecGen. This can causing the program not to generate the SysID properly. For this, see Other Possible Fixes. This can be fixed, but the fix depends on what the user needs. The first thing to consider is if the WEIGHT_DRY may change again or just needs to be updated this one time around. If the user feels that this field will be changed a great deal in the future, then they will need to first make sure that it is no longer used in the SysID creation. To do this, review the information below under Removing Component Field from SysID creation. If this is a onetime thing, then you can just skip to Updating Existing Components.
(NOTE: Before doing the following changes, make sure to backup any files used, including all spec files. This is a customization and as such is not supported by TSG. This TechNote goes over steps that customize some of the system files and it is highly recommend that this is not used for production use without detailed testing. Please contact your AutoPLANT Admin before applying the below steps to any project or system.)
The first thing to do is make it so that the SysID doesn't use the WEIGHT_DRY value in its generation. To do this, locate the 'specgen-settings.mdb' file. There should be a copy of it in the project under a SpecGen folder as well as a copy under the install root of the program (C:\Program Files\Bentley\Plant V8i\SpecGen). The file may not be located under the project root because it is only placed there if the project is used when opening SpecGen, thus new projects will not have this file. To affect all specs in every project, make the changes to the file in the install root and then either apply the same changes to the project copy of the file or just delete the project copy and let the program recreated it from the install root copy; in order to apply the changes to an individual project and its specs, make the changes to just the project copy of the file. Also, be sure that only the specs you wish to have this change are in the projects Master Spec Folder. Lastly, if you are making the changes across all the projects and specs, you will need to make sure anyone else who will be working on specs has a copy of the updated file in their install root.
To make the changes needed just open the 'specgen-settings.mdb' file in Microsoft Access and location the DefaultSysIDs table. This table lists all the values from the spec that are used to create the SysID for the catalogs and specs. To remove a field, all that is needed is to delete the row that it is on. Using the WEIGHT_DRY example, locate the row containing the WEIGHT_DRY in the SysID_Fields column and delete it. From this point on, SpecGen will no longer use this field to generate SysIDs. With this done, open the catalogs used to generate that spec in SpecGen and build them. After that, go into the spec itself and build the entire spec. When it is done, the specs will no long have the WEIGHT_DRY field included in the SysID and any spec made in the future will no longer use this field for the SysID. From now on, if the field is changed in the Catalog and then passed over to the Spec, the SysID will not change, and the component can be updated using the "Update From Spec" tool. However, any existing components will still no update properly. To fix those existing components, go the Update Existing Components section below.
In order to get the specs to pull the components, the SysID needs to match the one in the Spec. This part is a bit tricky because the components have lost that link and no longer know which component they came from in the spec they point to. There are two ways to work around this. The first is to redraw the components which can take a lot of time in a large project. The second way is use the 'Change Size\Change Spec' tool in Piping. Basically, with the ‘Change Size\Change Spec', the components would be changed to either a difference size or just to another spec and then changing them back. When changing the components spec, you can either point them to a new copy of the original spec (with a new name) that has the WEIGHT_DRY set correctly or you can point them to a temporary spec, build them, and then point them back to the original and rebuild them again. Here is a Blog post that was made on using the 'Change Size\Change Spec' that should provide a better understanding of how this tool works and which options are best for what is needed.
Typically, I would recommend that users just do a save as on the specs and create new specs with the needed data change and then use the tool to change the components to the new specs. This can even be done without modifying the SysID's building blocks since the new spec will have the updated SysID. (Handy if the user doesn't intend to change the value again and wishes to leave the SysID information as is). However, if the original name on the specs is needed, then it is possible to move the components from one spec or size and then move them back. Do NOT rename the spec as it will cause more trouble.
When working with systems were the SysID was just not generated correctly because a user modified the spec manually in Access, it might be possible to repair the component without doing a Redraw or using the "Change Size\Change Spec". The first thing that would be needed is the Spec to get repaired. To do this, load the spec into SpecGen. From there, go to File>Repair SYS IDs.
This will prompt the Repair Sys Ids dialog. Here you just add the spec/catalog that you wish to repair and press the "Start Repair" button.
After the repair is done, open the model that you wish to update and run the following two commands in the drawing -
These two commands will scan the system and attempt to repair any components with incorrect SysIds. If these commands do not work, then most likely, the other two options in this TechNote will be needed.
Product TechNotes and FAQs
Plant TechNotes And FAQs
Bentley Technical Support KnowledgeBase
Bentley LEARN Server
Bentley's Technical Support Group requests that you please confine any comments you have on this Wiki entry to this "Comments or Corrections?" section. THANK YOU!