Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. Be respectful, on topic and if you see a problem, Flag it.

If you would like to contact our Community Manager personally, feel free to send a private message or an email.

Sub-Assemblies

PAHPAH Member Posts: 17 EDU
edited January 2020 in Using Onshape
Hello,

I have read many posts on this and am still confused. To be clear this is what I have done:
- Created 1 On-Shape document that contains many studios of parts
- Created several assemblies with the parts I created in this On-Shape document
- Created a top level assembly that has the sub-assemblies in it.
- Now modified a sub-assembly to add another part *********** This is where things do not work correctly.

- Top level assembly has parts but they are not mated to it's sub-assembly parts as it is in the sub-assembly
The sub-assembly looks correct and all the mates work as expected with no errors.
The Top level assembly looks different.
- I started without grouping the sub-assembly at the top level assembly but had problems mating it to other assemblies
- I now of a group of the assembly

My question is how do you create sub-assemblies that can be matted to other assembly levels and have the parametric updating of other 3D software?
It seems that I am missing something and many other people struggle with this as well.
Is their a simple video that shows how to do this? I have looked but could not find it.

Thank you,
Paul

Comments

  • billy2billy2 Member, OS Professional, Mentor, Developers, User Group Leader Posts: 2,014 PRO
    edited January 2020
    It works really well; once you figure it out.......

    In a sub-assy you must have 1 fixed part and then group everything to this. Every sub-assy has to have this as a minimum.

    To see if you're doing it right; as a debug tool; in the top assy containing the sub assy; expand the sub assy and look inside its mates. You should see the group. If you have other properly define sub assy mates; you'll see them inside this mate folder. I always check for the inherited mates coming into the top-assy. What you won't see are the mates clinging to anything inside the sub-assy. Don't mate a part to the assy. In other CAD systems this was a common practice and shouldn't be done here in OS. This could be the reason why there aren't any assy planes in OS; too many people would assemble to them and break the inheritance chain. More than likely you're probably mating parts to the sub-assy. These mates will not show up in the top-assy.

    You'll have to figure out what mates defined in the sub-assy will come over "inherit" in the top-assy. Any sub-assy mates made to the the sub-assy will not come over and are bogus.

    Onshape has the best mate inheritance for any CAD systems today. All my library assemblies have working mates with proper limits and when importing a library assembly into a design; they work. I can design automated equipment from library components in no time.

    There are tricks to play once you get it working. Get it working 1st and then will go over the tricks.

    Clear as mud right?

    It does work; works really well; keep at it; you'll like it.




  • billy2billy2 Member, OS Professional, Mentor, Developers, User Group Leader Posts: 2,014 PRO
    edited January 2020
    One thing that you have to learn is to position a part to the assy origin. Lookup help about moving part to origin by RMB and "move to origin". I do this all the time and then fix the part.

    Bring in another part and do a planar mate to your fixed part. Assign the proper limits so the new part won't slide off the fixed part. 

    Now now bring the assy into another assy. Everything moves when importing into an assembly so you have to fix a part again in the top assembly. But; the other part moves correctly relative to the fixed part.

    How can one type this up and have it be meaningful?

    here's the document doing what I'm describing
    https://cad.onshape.com/documents/58f602605e369a1edcff4037/w/4790fbf91df289929500c3d5/e/88f238a3378f696169d56e94

    detailed instruction
    https://rustyshed.com/?quill=5e1b5b9b1e977f7e2fffd5cd



  • john_mcclaryjohn_mcclary Member, Developers Posts: 3,890 PRO
    Also as a general rule: NEVER GROUP A SUB ASSEMBLY FROM A HIGHER LEVEL ASSEMBLY.

    This is either a bug, or just the way group works.
    It basically "FIXES" every parts location in the assembly the group is created.

    So if you have:

    Main Asm:
    -- Sub ASM1
    -- Sub ASM2
    Mates:
    Group -> Sub ASM1, Sub ASM2

    than the positions of every part in sub asm1 and 2 are locked in the main assembly.
    Meaning, if you change sub asm1 than open main assembly, parts will not be in the correct positions.
    Sometimes it will even appear to be exploded in the main assembly.

    When this happens, you can suppress the Group mate in the main assembly, wait for the assembly to calculate, then un-suppress it again.

    But you should make it a practice to never use group mates that touch sub-assemblies.
  • PAHPAH Member Posts: 17 EDU
    billy2 said:
    One thing that you have to learn is to position a part to the assy origin. Lookup help about moving part to origin by RMB and "move to origin". I do this all the time and then fix the part.

    Bring in another part and do a planar mate to your fixed part. Assign the proper limits so the new part won't slide off the fixed part. 

    Now now bring the assy into another assy. Everything moves when importing into an assembly so you have to fix a part again in the top assembly. But; the other part moves correctly relative to the fixed part.

    How can one type this up and have it be meaningful?

    here's the document doing what I'm describing
    https://cad.onshape.com/documents/58f602605e369a1edcff4037/w/4790fbf91df289929500c3d5/e/88f238a3378f696169d56e94

    detailed instruction
    https://rustyshed.com/?quill=5e1b5b9b1e977f7e2fffd5cd



    Billy,

    Thank you, I did fix some of my sub-asseblies but not all. Had troubles fixing one for some reason. I also did not care where I inserted the parts and they were definitely not at the origin. I will fix up my work.

    Thank you again,
    Paul
  • billy2billy2 Member, OS Professional, Mentor, Developers, User Group Leader Posts: 2,014 PRO
    Although it's not that important to keep assemblies at the origin; it's old school and a habit I have.

    It is important if you're assembling by coordinates. I'm not sure with OS's collaboration we'll need this technique any longer. In the past we set up the top assy to accept engineers contributions. The last thing I wanted to do was assemble everyones sub-assys; that's a mess. 

    The last thing you want is for these guys to work on something and then those guys to work on something and then you have to put it all together; that sucks. It's better if you give them an assembly with boundaries and make them work constrained. The nice thing is that you only have to open the top to see whats going on. It's best to control a project from the top especially when there are multiple engineers involved. Using the coordinate is a handy design pattern to control larger assys.



    Keep at it, it works really well. I'm really excited about building a library of moving sub assy now that the top inherits these motions properly.



  • bruce_williamsbruce_williams Member, Developers Posts: 842 PRO
    Reviving this as I have a challenging project that is kicking me around. Mainly problems working through mating with top level and sub-assemblies.

    @billy2 Thanks for your explanations (the website is really clear), sample doc, and the user group demo last night.  Also @alnis_smidchens @john_mcclary get a shout out for posts about this.

    Here is our work flow list:

    1) We import 'organic' parts and rely on their 'car position' as they come in.   Unlike what @billy2 describes about not caring during part design these positions are critical as we have no reference entities to dimensionally place parts.
    2) Start a top level assembly, inserting the parts, hit the green check before moving anything so they come in position, then fix one part and group the rest.
    3) We do tooling/fixture design for manufacture in original part studios or start deriving to specific part studios for clarity/simplify.
    4) Changed parts and new parts we create need to be reflected in position in top assembly - generally the changes automatically show up and we insert any new created parts, grouping them with the original group.
    5) If we have more imports, those will be inserted to top assembly and either grouped with the original group or fix one of the new imported parts and make a new group.
    6) For this example, motion is not needed so we just lock down with fix & group.
    7) Next is where I have trouble.  Since we have been putting everything into top assembly as parts, it gets to a level (enough parts or viewing needs) that makes sense to create sub-assemblies. This is backwards to first creating sub-assemblies.  

    My questions:
    a) is this a good work flow? or what else is wise?
    b) if we do the 'lock down' in the lowest sub assemblies with fix one part and group the rest in lowest sub-assembly ,how do we deal with the previously grouped parts (that are now sub-assembly) in the top assembly?  The group has red 'unknown parts' Manually take them out of top assembly group?
    c) is this the correct way to break out to sub-assemblies?


    www.accuratepattern.com
  • alnisalnis Member, Developers Posts: 447 EDU
    @bruce_williams that seems like a reasonable workflow to me.

    Off the top of my head (haven't tried this specifically) here is how I would approach subassemblies:
    1. Import set of organic parts into a subassembly, fix one (let's call it the "main" part of the subassembly), group the rest.
          Add mate connector at the origin in the part studio for the fixed/"main" part.
          This assembly will no longer be edited--it's the "ground truth" of where the parts go.
          Of course, the imported parts can be edited if needed--their positions should update in the group. Just no new parts or movement.
    2. Insert the imported subassembly into another subassembly for integration with new parts relevant to that subsassembly.
          Mate the mate connector to the origin if original positioning is desired. Mates, standard content, etc. can be used freely here.
    3. Insert the integration subassembly into your top-level assembly and mate the original import "main" part's mate connector to the origin.
          With the mate connector + group, imported parts will come in at the right location, and mates will position new part integrations/standard content...
          No groups in top-level assembly.

    This will give you the following structure:

    Main assembly (visualize everything together) - positioned by mate connector
    |___Integration subassembly (editing happens here) - positioned arbitrarily (optionally by mate connector)
    |      |___Import subassembly (raw imported data comes in here) - positioned by fix + group
    |
    |___Another integration subassembly
    |      |___Another import subassembly
    |
    | etc.

    I haven't done projects like what you describe yet, but this is probably how I would set things up. Does this sort of make sense?
    Student at University of Washington | Get in touch: contact@alnis.dev | My personal site: https://alnis.dev | Currently an Onshape intern: asmidchens@onshape.com
  • john_mcclaryjohn_mcclary Member, Developers Posts: 3,890 PRO
    You should be fine to sort everything into sub assemblies later, but you will need to be absolutely sure you don't have a group mate on the top level (or any higher level) that is touching any part of another sub assembly. 

    That is close to the workflow i use. But i usually delete all group mates before refactoring into sub assemblies, then drag stuff around to see if it moves. Then add the proper mates as needed 
  • bruce_williamsbruce_williams Member, Developers Posts: 842 PRO
    @alnis_smidchens
    thank you for the detailed workflow.  I like the idea starting with 'as imported' subassembly and also adding a mate connector there at origin.  That makes a nice block to insert and position in higher assemblies.

    @john_mcclary
    glad I am getting closer.  Your emphasis on not grouping subs in higher levels has been big help in cleaning up my structures.  I like your delete groups when refactoring and testing.

    And all this is not even talking about mates with movement!!  It will take me a while to get this but as @billy2 said it is pretty awesome and well worth it.  I hated using assemblies in SW and I am coming to love them in Onshape.


    www.accuratepattern.com
Sign In or Register to comment.