10 Replies Latest reply on Apr 28, 2018 6:35 PM by Bill Lacey

    Driving component dimensions through assembly equations

    Mike Childs

      I am creating an assembly of a pressure vessel to be used through a spreadsheet input in the design table rather than generating configurations, there are too many options required to make configurations feasible. One problem I am coming across is when I attempt to modify dimensions in components with multiple configurations. For example, the vessel can have up to three cylindrical shell courses, each with different lengths and/or material thicknesses. I have created a property for each course length and have added them to the equation manager as shown in the screen capture below (rows 4, 7, and 9):

       

      Capture.JPG

       

      In the example shown the first course is 120in, the 2nd course is 12in, and the 3rd course is 24in. The equation manager is using the correct values for each part assembled plus each part is using an individual configuration in the part. However, instead of each part being set to the correct length shown in the equation manager they are all being set to the last length used in the equation manager, 24in.

       

      Is it possible to drive the same dimension separately in each configuration? Is there something I need to change in the equation manager? Any help with this would be appreciated. Thanks.

        • Re: Driving component dimensions through assembly equations
          Frank Ruepp

          Hi Mike,

           

          I am not really sure if I have completely understood your request but in general it is possible to have different equations for different configurations:

          In the Equation Manager you will get a dropdown as soon as you have at least two configurations:

          And when you enter an equation you can set to which configuration(s) the current equation should be applied:

          So when you toggle the configuration in the Equation Manager you can see what is assigned to a dimension in which configuration:

          You can even have an equation in one configuration and no equation in another configuration.

           

          Hope this helps

          Kind regards

          Frank

          SOLIDWORKS Product Defintion Team

            • Re: Driving component dimensions through assembly equations
              Mike Childs

              Frank,

               

              Thanks for the response. What I'm trying to get to work is driving dimension(s) in a part from the top level assembly such that the dimension can be different between the configurations.

               

              The simplest example I guess I can use is this: Imagine I have top level assembly A and part B. Part B has 2 configurations called B1 and B2 which are both assembled into assembly A. In assembly A I have a spreadsheet that is driving the assembly and the engineer can enter thicknesses for configurations B1 & B2 which can be different. From assembly A I want to be able to modify the thickness in B1 & B2 and have them be different. Currently, when I create the equation in assembly A it will only set the thickness for both configurations to whatever value is run in the last equation in the list. How can I get it to assign the dimensions individually?

               

              It would be unfeasible to create multiple configurations in part B as there are thousands of thicknesses they can be set too based on pressure vessel calculations for each design. It would be simpler, and likely more efficient, to be able to assign the thicknesses through an equation.

               

              Any help and advice would be appreciated.

                • Re: Driving component dimensions through assembly equations
                  Josh Brady

                  From within the part file you can set equations to apply to certain configurations.  However, you can't specify at the assembly level that an equation only applies to certain configurations of a part. 

                   

                  I've not tried this, but you might be able to create a global variable at the part level for each instance of the part in the assembly.  So for your "thickness" example you'd call them "Thick1", "Thick2", and "Thick3" or something.  Then, at the assembly level, you can create equations that drive those values.  At the part level, you'd create the equations that link a dimension to "Thick1" for the first config, "Thick2" for the second, etc.

                   

                  However, I belive I would recommend having three different part files for your "up to 3 shell courses" (etc) rather than trying to simultaneously control the same dimension across three configs of the same part.

                    • Re: Driving component dimensions through assembly equations
                      Mike Childs

                      I will give that a try Josh.

                       

                      I have been thinking of going to separate parts if I couldn't get this to work. There are other components in the assembly this applies to and we are operating in a PDM environment, so I was trying to keep the number of files down to a minimum but I may have to potentially create hundreds of files if I can't get this to work.

                       

                      Thanks for the help.

                        • Re: Driving component dimensions through assembly equations
                          Josh Brady

                          I just messed with it a little bit... It looks like you can't control part-level global variables from an assembly-level equation.  What you would probably need to do is create a "helper" sketch in the part.  That sketch would contain 3 different circles or lines or something made from construction geometry that you can put a dimension on.  Then at the assembly level you can drive those dimensions with your three different equations.  At the part level you can then create the equations for each config that link the value you're really interested in to the values in the "helper" sketch.

                        • Re: Driving component dimensions through assembly equations
                          Mike Childs

                          Josh,

                           

                          I tried what you suggested and it does work, however it won't rebuild the part configuration automatically. I have to go into the part equations and re-edit one of them to get them all to update. I'm almost there, hopefully I can figure this one out.

                        • Re: Driving component dimensions through assembly equations
                          Frank Ruepp

                          Hi Mike,

                           

                          you can use an External Parameter File in order to hand down global variables from the assembly to the part level:

                          1. I have created two global variables at the assembly level:  Value-B1 and Value-B2:
                          2. Then I have selected the Export option from the Equation Manager:
                          3. I specified a file name and a file location and then I can see the parameters that should be saved in the external file:

                            The checkmarks indicate that these global variables will be exported and the second checkmark means that the values of the global variables will be linked to value in the file.

                          4. After I have clicked the Export button the global variables are linked to the external file:
                          5. Means whenever I make a change to this file (which is a plain text file) SOLIDWORKS will check the time stamp whenever the assembly gets rebuild and will read the values from the file and update my values in the Equation Manager:

                            Hit the rebuild and the Equation Manager will update accordingly:



                          6. Now I opened part "B" that has two configurations "B1" and "B2":
                          7. Opened the Equation Manager and hit the Import option:

                            Selected the file I exported from the assembly and made sure that both parameters were imported and linked.

                          8. Now I could create my equations with my imported global variables:



                          9. Whenever I open the external parameter file and I make changes to it (please make sure that you SAVE the file after you have altered any values) the assembly, respectively the part with its configurations will update accordingly:



                          So basically it is possible to control different configurations through an external parameter file.  The external parameter file can contain global variables and/or equations that should be used at the assembly and at the part level.  But I guess you will have to figure out which approach matches your approach better.  Having separate components can have its benefits as well as configurations.

                           

                          Kind regards

                          Frank

                          SOLIDWORKS Product Definition Team

                      • Re: Driving component dimensions through assembly equations
                        Bill Lacey

                        You can add a global variable to the top level assembly to drive the thickness of parts and then create another configuration at the assembly level. Then you can set the thickness to be specific to each configuration. While in the assembly, look through your tree to find the part and then the feature that you want to be driven by this global variable. Double click on the feature so that the dimensions show up on the screen. DO NOT do this while editing the part, or it will not work. When you see the dimension for the part thickness, double click on it so that you can edit the value. As long as you're not in the part editing mode, you should be able to enter the equal sign (=) and then select the assembly level global variable from the list. As you switch between configurations at the assembly level, your parts should update accordingly.

                         

                        This works, but it's probably not the best way to achieve what you want. I will use this method to make slight adjustments to the parts if the materials come in at a different thickness and I have to update the g-code for the parts before they get sent out to the machine. If you truly have different configurations, create the configs at the assembly level and write them back to the parts so each part will have an easier time updating.