8 Replies Latest reply on Apr 26, 2016 11:30 AM by Simon Wilkins

    Pattern Rebuild Fail!

    Simon Wilkins

      Can anybody please help explain why the curve driven patterns within my profiles are not rebuilding in the assembly until you manually edit the part rebuild,save then exit back to the assembly? In the assembly to control the length of the profiles please edit the sketch called "Layout" and edit the LH/RH Panel dimensions by 75mm increments. Once you exit you will see the holes will not rebuild and update to their new positions. Only when you open/edit the parts individually will then rebuild to their proper locations!!! This actually is a completely stripped down version of a much bigger and complicated assembly (I had hoped that by taking everything else away it would work but clearly not!) Please help?

        • Re: Pattern Rebuild Fail!
          Dan Pihlaja

          Try CTRL Q once you get back to the assembly (and make sure that the parts aren't light weight inside the assembly)

           

          Sometimes you need to give it a little kick to get it going.  *grin*

            • Re: Pattern Rebuild Fail!
              Simon Wilkins

              use that on regular basis but no joy!

                • Re: Pattern Rebuild Fail!
                  Bill Toft

                  I think you need to look at the way you have your formulas set up. It looks as if you have circular references. (Between the assembly and the part files). See 2 screen shots.

                  Did you rename some files (-1)? I think this is the first problem.

                  Each of your equations had an error message (-2 is the first and others are similar).

                   

                  I like to put all my controlling parameters in the Assembly file, then link the Part parameters back up to the Assembly file. At a quick glance it appears you are going in both directions. That (->) beside the assembly's Equation folder is the clue.

                  The whole circular reference issue means a part gets partly rebuilt with the first CTRL-Q, then it takes another few CTRL-Q's to complete the rebuild.

                  So setting up the parameters to be a "one way street" ensure a single rebuild fully updates the model.

              • Re: Pattern Rebuild Fail!
                Ryan Navarro

                Biggest thing here is you have an equation/global variable referencing a driven dimension.

                If you test out modifying one of the parts on its own you will find it takes two rebuilds to update the pattern.

                This is because driven dimensions by their nature only get updated after the first rebuild is performed.


                So the best solution would be to avoid referencing any driven dimensions in your equations. I know you said this is already a very simplified model, but if you simplify a little more and test each part individually to make sure it is capable of updating in a single rebuild, then you should get the desired behavior from the top level assembly. This is a good example of why it's so important to manage references with equations. I've seen parts that take 3-4 rebuilds to "settle". Some people live with that at the part level, but it will cause problems in assembly as you are finding.

                 

                The reason being in an assembly CTRL+Q does not crawl through and rebuild each and every component's feature tree, only components that are flagged for updates. So, no matter how many times you rebuild the top level assembly it is not going to realize the parts need subsequent rebuilds (after the first rebuild it thinks the geometry is updated).

                  • Re: Pattern Rebuild Fail!
                    Ryan Navarro

                    Although the proper solution would be to eliminate the double rebuilds, something was bugging me about this because I definitely remember working on assemblies with equations that would do the double or triple rebuild.


                    So I looked into it a bit and it appears your assembly won't do the double rebuild because even though you are using equations, you are not passing any equations from the assembly to the parts.

                     

                    If you were to pass a global variable for instance to your relevant parts then the assembly will get update holders to update the equations in those parts (you can show these right clicking the top of your feature manager - useful to see for top-down/assembly layout type stuff).
                    With these it would let you do double, triple, etc rebuilds of that component from the assembly level.

                     

                    updater2.PNG

                    In this case I made a fake global variable in the assembly "Updater" and edited the components in-context to add a global variable "UpdateVar" that equals "Updater@PRF - Bottom Plate Update Pattern.Assembly"

                     

                    You may also be able to do a similar workaround with something like an fake/unnecessary in-context feature affecting those parts.

                  • Re: Pattern Rebuild Fail!
                    Arthur McRae

                    My workaround for issues like this is to have an Global Variable in my Assembly referencing my length in the Layout.  Then at the part level I just have their driven dimensions controlled by a local global variable that then references to the corresponding variable at the Part level.

                    • Re: Pattern Rebuild Fail!
                      Simon Wilkins

                      Hi Everyone - thank you for all your responses in relation to this problem... in response to the question about why I used curve driven instead of linear patterns: There was a whole other issue I identified on another thread I created looking for answers which I wont explain on here but might be worth a look at... Linear Pattern using equation fails when there is an evaluated .5?

                       

                       

                      In relation to this issue and taking into account what people have said I have made some adjustments within my part sketches which gets rid of the "Driven" dimension. This now seems to work with one exception... when there are two different top assemblies using the same parts and you modify one, save and exit then open the other and it asks you to rebuild on open it wont reflect the "Layout" sketch dimensions in that assembly it will show the other assemblies dimensions? I have attached a zip folder containing the parts and also two top assembly files (one is just a copy of he other and then I have modified the "Layout" sketch dims so one assembly differs in sizes from the other one). If you open an assembly and edit or open a part, rebuild then exit back to the assembly or indeed simply change the "Layout" sketch dims (by 75 increments as before) and rebuild then everything works... what it doesn't seem to do when opening for the first time is rebuild properly in accordance with its own "Layout" sketch or rebuild by pressing rebuild or "ctrl Q".

                       

                       

                      I don't think there is a circular reference now and certainly nothing is turning yellow in the equation manager to signify this. A comment was made in reference to the symbol (- >) next to the equation folder in the assembly but doesn't this just signify that there are externally referenced parts that the assembly equation manager references (this is to warn about keeping the part names the same etc as if changed then there could be issues?) I can see some benefit in driving everything from the top assembly and having all the controls in the top assembly but that would mean recreating those controls in every single assembly where the part occurred... wouldn't it be simpler to have the controls in the part based on say its length and then you could insert that part and drive its length in the top assembly? You could then also make sure the frequency of holes was consistent to the part rather than having the chance that someone had input an incorrect control in one of the 20 or so assemblies it was placed in?

                       

                       

                      Sorry for the delay in reply - I am not always in front of my machine but I really appreciate everyone's help on this!