≡ Menu

A Trick for Updating a Precise Assembly Quickly

Share the knowledge

There are times when a precise assembly structure is incorrect; the revisions configured aren’t the ones you’re actually using when you’re working on the assembly. This often becomes an issue when it’s time to release the assembly. You want the BVR (BOM View Revision) to accurately reflect the revisions of the components that were actually used when working on the current release. Maybe the assembly was already released with the incorrect BOM and you, as an administrator, need to fix it. Or you might try to fix it in Teamcenter’s Structure Manager by removing the wrong revisions and replacing them with the right ones. But that can take a lot of time and it would be easy to make a mistake. So, what to do?

Precise Rev Rule configuring wrong revision
Precise Rev Rule Configures Rev A of the Component

Here’s a trick that you can try that will let you quickly fix the assembly structure without opening the CAD tool at all or doing a lot of manual work on the assembly structure.


Here’s what you need in order to use this trick:

  1. A precise-only revision rule. How else are you going to verify that the precise structure is what you want it to be?

    “Latest Working” Rev Rule Shows Correct Revisions
  2. A revision rule that configures the assembly structure to show the revisions you want the precise structure to include.

And that’s it. On to the instructions. (By the way, if you’re confused about how a precise assembly structure can be configured to show revisions other than what is in its precise definition, take a moment to read this illustrated guide to understanding how revision rules work and this post about the differences between precise and imprecise assemblies.)

How to update your precise assembly structure

Here’s what you do:

  1. Send your assembly to Structure Manager
  2. Set the current revision rule to one that configures the correct revisions you want to see in your precise assembly structure
  3. Toggle the structure type to Imprecise
    Toggling between precise and imprecise
    Toggle Precise/Imprecise


    Imprecise Structure in Structure Manager
    Structure is now Imprecise
  4. Okay, pay attention now. Listen carefully because this step here is the key to the whole thing. So don’t screw it up. Okay, ready? Here it is: Toggle the structure type back to Precise. Got that? I didn’t go too fast for you, did I?
    After toggling back to precise
    Assembly Toggled Back to Precise

    Let’s recap:

    • Toggle from precise to imprecise.
    • Toggle from imprecise back to precise.
  5. Okay, if you made it this far, you’re almost done. Don’t mess it up now! Okay, so now, save the assembly structure. You don’t want to lose all that hard work, do you?
  6. Last but not least, set the current revision rule to your Precise-only revision rule to verify that the precise structure has been correctly updated.
Precise structure now updated
Precise Structure Updated

That’s it. You’re done!


So, what was that all about? Toggling it once… then toggling it back?

Precise → Imprecise

Okay, so you had your precise assembly, but you configured it with a revision rule that configured different revisions. Then you changed the assembly to an imprecise assembly. This means that the BVR doesn’t store specific revisions anymore, only the items. It depends entirely on the revision rules to select which revision to configure. It continues to configure the revisions according to the revision rule you chose earlier.

Imprecise → Precise

Then you toggle it back to precise. A precise assembly does store specific revisions. But which revisions should it store? It has no memory of which revisions it was storing before you toggled it to imprecise. So the logical choice is to store the revisions currently being configured by the active revision rule. So, in essence you’ve reset the configuration to match the currently selected rev rule. Pretty cool, eh? Let me know if this is helpful or not in the comments below. Thanks!

  • Jeremie FEBURIE


    Again a great post…

    Precise and imprecise mode, what’s a central topic when deploying a Teamcenter solution to a new customer.

    Do you remember if you understood exactly how it works the first time somebody tried to explain you ?
    Personally not … :-(

    But when you understand how it works, you can realize how it’s powerful.

    In most cases, end users still want to look at their structure in the same configuration that was released. But looking for the released date and applying the date in Structure Manager is so time consuming and complex for end user.

    In fact, NX is a special case because you still have the ability to open the “as saved” configuration.

    But for other CAD integrations and for those who don’t have CAD but only Teamcenter, it seems to be a mess. but in fact no.

    Best practice is the following :

    – when you are working, stay in imprecise mode so you are always up to date (no need to update any revisions)

    – just before releasing (bottom up 😉 ), toggle to precise

    – release your structure

    If you want to modify, revise your assembly and toggle it back to imprecise …

    In this way, by default, when you open a released structure, it is an “as released” structure (a sort of snapshot)

    What is almost powerful is that you can change the revision rule and see the “as produced today” by selecting a revision rule that doesn’t take “precise” mode into account …

    At PCO Innovation and for other PLM integration and even Siemens Professionnal Services, this best practice is delivered to customers from many years.



    • http://plmdojo.com/ Scott Pigman

      Thanks again. It’s been a busy week for me at the Dojo. I constantly feel on the verge of running out of ideas of what to do next 8-0

      No one ever tried to explain Imprecise/Precise to me. I had to figure it out for myself from the docs and by trial and error. It took awhile. Heavy on the “error” side of the equation.

      Where I work we only use precise structures. I’ve played around with the notion of using imprecise for work-in-progress but never pushed for it (we have bigger things to work on). There are those — and I expect we’ll be hearing from one of them shortly 😉 — who argue, quite convincingly, that Imprecise assemblies are not needed because revision rules can configure precise structures as if they were imprecise.

      I think that any plan to use imprecise assemblies for WIP would benefit from some customizations to automated the toggling. A post-action on revise to make the structure imprecise and a workflow action handler to toggle back, for example.

      One of the kickers about not using imprecise assemblies at all is that many of the out-of-the-box revision rules are redundant then because their first rule is “Precise”.

    • Teamcenter Heretic

      Don’t forget to open your Nx assembly and save it. Since there are potentially inter-part relations like overriding expressions and WAVE you need to make sure your Nx gets updated too. If you do this before you status, then you will probably have happier Nx users in the end.

      IMHO, the ability to load “as saved” should not even be available in Nx when running in Teamcenter. At the very least it needs to be controlled by the site admins.

      I do not understand why the Nx development/Marketing team cannot see the need for sites to control this usage.
      I’ve lodged this complaint woth many folks and it simple becomes a “Works as Designed” IR that gets converted into an ER that never gets addressed!!

      • http://plmdojo.com/ Scott Pigman

        ??? There’s another kind of ER?

        “As saved” adds another layer to an already confusing mess when it comes to assembly structures. I don’t often feel sympathetic for users, after all most of my aggravation during the day starts with them 😉 but I can appreciate the fact that it’s very confusing why when they save, close, and reopen an assembly using a precise rev rule, different revisions are loaded than what was in the ANT when they last saved

  • http://www.facebook.com/yogesh.fegade.56 Yogesh Fegade

    A word of caution though – “Precise” (is_precise) is the property of the PSBOMViewRevision and not of an occurrence. This trick is useful if you want to update entire assembly. However, if you just want to update revision of only one child keeping all other children at whatever revision level they are in an assembly, then you can’t use this approach. You will have to substitute in that case.

    • Shrikant

      Hi Yogesh,

      As mentioned in the post earlier, I am trying to convert some Imprecise BOMs to Precise, using ITK.
      I tried BOM_line_set_precise but it does not work.

      Is_precise attribute on the PSBOMViewRevision is set to Read could this be the problem. But then “Toggle Precise/Imprecise” does update the is_precise property value.

      Any inputs on how I can do this conversion would be much appreciated.

      • Jeremie FEBURIE

        setting an imprecise bom to precise by just setting the is_precise attribute is not the correct way.
        You have to load the entire structure and apply a revision rule before otherwise, you won’t be able to get childrens revisions to save in precise mode …

        • Shrikant

          Hi Jeremie,
          That is what I tried, I configured the BOM first using “Latest Released” revision rule and then used the BOM_line_set_precise. But it is not saving the BOM as precise.
          Below is the rough code snippet
          if((ITK_ok == iSts) && NULLTAG != tBOMViewRev)
          iSts = BOM_create_window(&tBomWindow);
          // Set Revision Rule
          if((ITK_ok == iSts) && (NULLTAG != tBomWindow) )
          //Find the Revision Rule
          iSts = CFM_find(“Latest Released”, &tRevRule);

          if((ITK_ok == iSts) && (NULLTAG != tRevRule))
          iSts = BOM_set_window_config_rule(tBomWindow, tRevRule);
          if(ITK_ok == iSts && (NULLTAG != tBomWindow))
          iSts = BOM_set_window_pack_all (tBomWindow, TRUE);

          if((ITK_ok == iSts) && (NULLTAG != tBomWindow) && (NULLTAG != tBOMViewRev) )
          iSts = BOM_set_window_top_line_bvr(tBomWindow, tBOMViewRev, &tTopLine);

          if(iSts == ITK_ok && tTopLine !=NULLTAG )
          iSts = BOM_line_set_precise ( tTopLine , true ) ;

          if(iSts ==ITK_ok)
          iSts = BOM_save_window(tWindow);

          if(iSts ==ITK_ok)


          • Jeremie FEBURIE

            OK, so you are in the good way
            unfortunatelly, I don’t write any custom code (so I can’t help you …)

          • Shrikant

            Sorry, that was a false alarm :) . BOM_line_set_precise is working as described. Thanks for your help anyways.

          • Rupesh Namekar

            hi guys..i want to create bom line by batch utility…say i am going to create 10 items using batch ITK ,so first one should be parents and another 9 should attached as child…can any1 help me to solve this

          • abhinandan

            Hi Shrikant, i am trying to update a existing BOM to precise BOM using SOA services.
            Can you please help me in same.

          • abhinandan

            Hi Shirkant,
            I am trying to update a existing BOM to precise BOM using SOA services.
            Can you please help me in the same.

        • abhinandan

          Hi Jeremie,
          I am trying to update a existing BOM to precise BOM using SOA services.
          Can you please help me in the same.

  • Shrikant

    We have a few of BOMs – 120,000 :), which we want to convert from Imprecise to Precise.
    What would be the easiest way of doing that?
    Thinking of writing an ITK tool, which would get the BOMView Revision ->create a BOM Window -> set the revision rule(latest released) -> Set the topline to precise(BOM_line_set_precise)
    Is there anything else that I need to do.

  • Teamcenter Heretic

    The toggle from imprecise to precise is a simple ITK call, but be aware that what you get may not be what you expect…..

    What is your expectation for your BVRs after said change?
    Are you going to toggle, select a rev rule and save?
    If not, what do you expect the precise config to be?

    Duh… i guess you already answered those questions 😉
    Just make sure that you don’t have any unconfirmed revs and expect your CAD folks to freak out when they next open the assy.

    what about “reelased” data? Are you going to do that also?

  • Arunprasath

    How to control the data set like PDF, WORD, in Attribute based ACL. It has to be controlled by different level. EX: In Body department itself there will be a two group of people, one group of people will have a read access other group of people will have a write access, only Body group should see the data,for word data shouldn’t be visible

  • Jagdish Mundada

    Is there any tool available for Enovia to Teamcenter data migration?

    • Venkat

      You can think about eQube-MI.
      It can be used for migration/integration of teamcenter with any other PLM or CAD tools

  • Chris Marr

    Is there a workflow handler that will check whether the BVR for an item type is set to precise or imprecise and provide an error log if the users have it set incorrectly? I recently had a discussion with a fellow member of the IT department (who should have been better educated on these matters than the average user) who told me that the revision rule was picking the wrong revisions in a scenario where precise was the obvious type to use. The rev rule selected should have configured the precise revisions saved but didn’t and sure enough, the root item was toggled to imprecise. With ~2000 users in our organization it would nip a lot of problems in the bud if our workflows could kick back an error report for improperly toggled structures.

    The way our assemblies are structured certain item types are always supposed to be toggled to imprecise and others are always precise.

    We have avoided some problems by adding a custom handler that automatically creates a precise BVR as a post-create action for certain item types. It serves it’s purpose well but has also been a contributing factor to certain bugs.

    • Jeremie FEBURIE

      There is no such handler but you can do that with a condition query (eg find all ItemRevision that contains a BVR in imprecise state, if some are found, pass the “false” path …)

  • Teamcenter Heretic

    That particular handler is a custom as Jamie has noted.
    The condition thingie works pretty well, but it doesn’t tell the user which one needs a fixin’.

    If you program ITK the handler is pretty simple to write. Let me know and I’ll post the basics for you.

  • Chris Marr

    If toggling between imprecise and precise doesn’t provide enough control the NX function Save Precise Assembly works well. We had a situation where we only wanted to update the precise links for one item type so toggling to imprecise could have inadvertently changed the links to the other item types. We wrote a batch program where one assembly at a time was opened in NX based on a list using a revision rule which configured the latest released revision of the required item type then performed Save Precise Assembly.

    • Jeremie FEBURIE

      For sure, toggling to imprecise impact all component at the same BOM level.
      If you just wan’t to update one component, use the “Replace” function instead

Optimization WordPress Plugins & Solutions by W3 EDGE