0 Replies Latest reply on Nov 16, 2017 2:54 PM by Robert Millot

    Equation References Not Updating When Using Copy Tree/Pack and Go

    Robert Millot

      Hello all,

       

      As a new SolidWorks user for the past 8 months, I have consistently struggled using equations to implement my design intent into my parts and assemblies.  One problem I was having, which is also listed as a problem for other users in a number of posts, is the lack of consistency of file referencing when using the Copy Tree or Pack and Go functions.  Users complain that some equations reference the original model rather than the copy, and there appears to be no rhyme or reason to which components update properly and which ones do not.  With much hair-tearing and hemming and hawing, I believe I have come up with a few solutions to this problem that I have listed below.  Hopefully this helps a few people out there who are struggling as I have.

       

      1.  The Copy Tree and Pack and Go are case-sensitive when it comes to file referencing.  So, if you are hand-typing your equations (as you must if you are pulling values from your assembly down to your parts rather than pushing them), you must maintain consistency between the cases of your references.  If your part is named "PART1" and your assembly is named "ASSEMBLY1", your part equation must read:

       

      "value@PART1" = "value@ASSEMBLY1.Assembly"

       

      it cannot read:

       

      "value@PART1" = "value@assembly1.assembly"

       

      Although the lower equation will work correctly for your original model, it will confuse the copy command and you will get incorrect results in your copy.

       

      2.  Before you use Copy Tree or Pack and Go, you must resolve any warnings for components that read "The File is Not Rebuilt".  You can see these warnings in the Copy Tree, or when you check in or check out a file in EPDM.  Since I don't use Pack and Go regularly, I'm not sure if these warnings appear there.  Sometimes the rebuild issue occurs with a particular configuration, so if you're using configurations, you must open the component, select the configuration referenced by the warning, rebuild it, and save it...that should eliminate the warning.  Repeat as many times as necessary until your assembly is clean and you have no "rebuild" warnings.  If you attempt to copy an assembly that has these "rebuild" warnings, it may reference the original model rather than the copy.

       

      The following two solutions do not have to do with Copy Tree and Pack and Go directly, but they are good design practices to prevent further issues:

       

      3.  If you are using assembly configurations with equations, and you are pulling values from the assembly to the component using equations in the component, you should not use the same component in multiple assembly configurations.  The equation that is placed in the component will only read values from the original assembly configuration in which you have programmed it...it will not update when you change assembly configurations.  Therefore, if you must have the same component in multiple configurations, do one of the following:

           a.  Copy the component and use the new instance in the other configuration.

           b.  Create a higher level assembly that does not have configurations and drive the component by pulling values from that.

           c.  Use multiple configurations in the part that correspond to the multiple configurations in the assembly.

       

      4.  You should not reference multiple assembly levels when pulling values to a component.  I don't know if this affects the Copy Tree or Pack and Go commands, but it makes rebuilding and programming very awkward since you will have errors on whichever level you are working from.  Thus, if you have these three models:

       

      ASSEMBLY1.Assembly

      SUBASSEMBLY1.Assembly

      PART1.Part

       

      Do this:

       

      "value1@PART1" =" value1@ASSEMBLY1.Assembly"

      "value2@PART1" =" value2@ASSEMBLY1.Assembly"

       

      Or this:

       

      "value1@PART1" =" value1@SUBASSEMBLY1.Assembly"

      "value2@PART1" =" value2@SUBASSEMBLY1.Assembly"

       

      Don't do this:

       

      "value1@PART1" =" value1@ASSEMBLY1.Assembly"

      "value2@PART1" =" value2@SUBASSEMBLY1.Assembly"

       

      I hope this discussion helps someone!  Happy programming!

       

      Robert