2 Replies Latest reply on Mar 4, 2014 5:46 AM by Luis C. Loredo Bellido

    Assembly mates from flexible to rigid

    Luis C. Loredo Bellido

      Hello everyone,


      I am new in this comunity although I´ve been using SolidWorks for a year. I am trying to maximize the number of rigid assemblies I use, to minimize the number of mates which must be resolved.


      The problem comes when the position of some of the parts in one of those assemblies must be defined related to another assembly, so the easiest way would be to set the subassy as flexible and give mates to each of its parts. After I set all the neccesary mates to define each part´s position, I set the subassy to rigid again, willing to keep the parts in the possition defined with mates. But they come back to their original position as if I hadn´t add any smartmate.


      Is there any means to "context edditing with mates" the subassy or something so that it keeps the changes when I turn it back to rigid?


      This matter is indeed important in cases dealing with high number of parts. I usually have to manage 500 parts which makes everything goes really slow.


      Some more info:

      Let´s say I have an assy as in PIC2.jpg and I make it to get its geometry as in PIC1.jpg by setting it to flexible. Is there any means to set it back to rigid so it keeps the desired geometry as in PIC3.jpg?.


      I also add parts and assemblies I´ve created for this issue.


      Thanks in advance.


        • Re: Assembly mates from flexible to rigid
          Jeff Mirisola

          From what I'm seeing, you're not using "true" sub-assemblies. You seem to have some random parts in some sort of semi-random placement. A sub-assembly is, usually, a group of parts that actually fit together (welded, screwed/bolted, etc) that are then affixed to a larger assembly.

          To do what you want to do with your 'sub-assembly', you'd need to create configurations. Start with the default configuration, one that allows the bits in it to move around, and have the file open. In your upper level assembly insert the sub-assembly and make it flexible. Position the parts, then switch back to your sub-assembly. If the parts haven't moved around, rebuild it. This should cause the parts to move to the positions that they're in in the upper level assembly. Create a new configuration, then lock all the parts in place. Go back to the main assembly and change that instance to the newley created configuration. You'll need to repeat this for each instance of the sub-assembly in the assembly.

          Another method would be to bring the individual bits into the upper level assembly and position as needed. Ctrl+select all the parts, right click and choose 'Form new sub-assembly here'. Doing this will create individual sub-assemblies versus one sub-assembly with multiple configurations.

          I would really recommend creating the assembly as it would actually be assembled, though.

            • Re: Assembly mates from flexible to rigid
              Luis C. Loredo Bellido

              Thanks for the deffinition. Indeed, what I mean with subassembly is lower level assembly inside another assembly in a tree structure. In case those parts where fit toguether (welded, for example), the deffinition would also apply, because in the end, the assembly will be included in an upper level assembly. Just saying these semi-ramdomly located parts where created to have something to work with in this discussion, so that they are only a simplification of the problem to work with.


              Concerning the proccedure with configurations you mention, it works. Thank you. Although it is large, this is the step by step I did:

              1. Having and upper level assembly containing its own part, I added the lower level assembly which included its onw parts in a random location and added smartmates between origins of boths assemblies.
              2. Set lower level assembly as flexible. And added every smartmate needed between its parts and the upper level assembly parts.
              3. Saved (with rebuild)
              4. Opened lower level assembly and found everything hadn´t changed.
              5. Turned back to upper level assembly window, RMB on lower level asembly, "edit assembly (in context)".
              6. Came back to lower level assembly window and found everything according with smartmates added un step 2 and created a new configuration in the lower level assembly and set to "fix" every part.
              7. Came back to upper level assembly, "finished editing assembly". And set lower level assembly to Rigid. It forgets about smartmates in step 2 and smartmates errors appear.
              8. Set lower level assembly to the new created configuration and rebuild. Errors change for warnings and now everything is in its place.
              9. Suppresed every smartmate related to step 2 and unsupressed origins' smartmate so that lower level assembly is fixed.


              "Creating new sub-assembly here" is an option I haven´t been able to find in SW2013, although is not useful in this case because I must use an already created assembly. What I found was more like: "insert>component>assembly of selected components". It brings the smartmates so as the parts inside a new virtual assembly with the parts in the desired possition.


              Creating and adding another assy and dragging the parts would also work. Again, I can´t use this.


              I miss your recommendation of "creating the assembly as it would actually be assembled" because the possition of the parts in the lower level assembly depend of the upper level assembly. I think, I would never be able to place the parts correctly in the lower level asembly without using smartmates and doing the proccedure mentioned before. Could you please add some coments concerning that?