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.

How to copy assembly to another document? (Equivalent of 'Save As'?)

Brian_McVeighBrian_McVeigh Member Posts: 78 PRO
edited October 2018 in Using Onshape
Trying to do something that would normally be pretty simple, but struggling to find the right way to do this in Onshape.  I have an Assembly Studio in a Document.  It uses only parts that exist in Part Studios in that same Document.  I want to basically do a 'Save As' of that Assembly, into another document, so I can customise it (i.e. remove/replace a few parts).  How would I go about doing this?  I still want the assembly to reference all the parts from the original document, as these don't need to be duplicated, they will remain standard.  When I use 'Move to document', it wants to move the part studios too.  Any suggestions?

From the Onshape help on 'Move to Document':

"Move to document... - Move the Assembly to a new document, creating the document during this operation. If any part or assembly is used in any tab of the original document, a link between the two documents is created. Note that, the Assembly tab and the Part Studios from which the part instances are referenced will all move to the new document. This action will be prevented if it would result in a document with no tabs."

The section in italics is what's causing me an issue - many other assemblies in that original document reference these parts, so I don't want them moved to a new document.

Comments

  • Brian_McVeighBrian_McVeigh Member Posts: 78 PRO
    For more context behind this.  The original document contains a library of hundreds of standard parts and assemblies, these will often get used in other documents in their standard state, but in this case one of the assemblies needs to be customised.  But I still want all the parts in it to be linked to the original library document, and just this one custom assembly to be 'saved' outside that document.
  • brian_bradybrian_brady Member, Developers Posts: 505 EDU
    Have you thought of copying the entire document. Not the best choice, but...

    In your new document, insert the assembly from the existing document into an assembly tab. You will need to make a version in the existing document. However, I just noticed that you cannot change the inserted assembly, so scratch that .

    If you right click on the tab and copy to clipboard, you can click on the + button in the new document and paste from clipboard. It will bring a copy of the assembly and all parts used in the assembly into the new document. I think this also requires a version, but not sure. However, you can edit the assembly.

    It would be nice to have a "copy assembly with derived parts" option.
  • philip_thomasphilip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381
    Brian - good news, it's very easy :)

    All you need to do is 'duplicate' the top level assembly.
    (RMB over the top level assy and select 'duplicate'
    This is the same as 'save as'. You now have a new assembly that is independent of the original.

    Beyond this, you are free to move elements from one document to another - remember that all parent elements will be moved as well so a little thought is needed to break up a document. There is a good resource that goes into detail in the learning center.

    https://learn.onshape.com/courses/product-structure-organization-tips




    Philip Thomas - Onshape
  • dick_van_der_vaartdick_van_der_vaart Member Posts: 51 PRO
    I think you are looking for this
  • Brian_McVeighBrian_McVeigh Member Posts: 78 PRO
    Brian - good news, it's very easy :)

    All you need to do is 'duplicate' the top level assembly.
    (RMB over the top level assy and select 'duplicate'
    This is the same as 'save as'. You now have a new assembly that is independent of the original.

    Beyond this, you are free to move elements from one document to another - remember that all parent elements will be moved as well so a little thought is needed to break up a document. There is a good resource that goes into detail in the learning center.

    https://learn.onshape.com/courses/product-structure-organization-tips




    Hi Philip,
    I understand how to duplicate an assembly, its the next step I don't understand and can't see anything in that link that helps, other than pointing out the problem that I'm trying to get around.  I want to move an assembly from one document to another, but not to move the part studios it references.  Tip 10 from your link points out specifically that 'This action (moving all the dependencies) is rarely the desired outcome.' but I can't see any suggestions for avoiding that outcome, other than deriving parts which is definitely not what I want in this case?
  • owen_sparksowen_sparks Member, Developers Posts: 2,660 PRO
    edited October 2018
    I'd go with the @dick_van_der_vaart option. 
    Don't try to save as from the source document, just open the new target document and import the assembly into it. 
    Actually that might not work after all, you'd be OK adding new parts to the assembly but I don't think you can remove them can you?  I'm sure I fell over in a workflow like that before.  Sounds almost like we need assembly configurations...
    Owen S.
    Business Systems and Configuration Controller
    HWM-Water Ltd
  • Brian_McVeighBrian_McVeigh Member Posts: 78 PRO
    Yeah I need to be able to remove parts from the assembly, so it needs to be a new instance of the assembly, not the original just linked into the document I want.  Configurations are not what I want here either - I don't want to modify the original assembly as it exists in a standard library shared by many engineers, I simply want to create a new instance of it in another document but reference the parts in the original.  Like 'Save As' would do in any standard CAD program.  Insisting the referenced parts get moved along with the Assembly is making me miss the control possible in more traditional CAD platforms.
  • philip_thomasphilip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381
    @Brian_McVeigh - You actually read the tech paper - you just earned bonus points and good-will karma :)

    Yes, you're right, all dependencies are also moved. There are a lot of good suggestions here (and there is no magic solution), but here is an interesting experiment that I just conducted.

    Make a document with a part studio and an assembly (xxx)
    Duplicate the assembly
    MOVE the part studio to a new document (yyy)
    MOVE the duplicated assembly to a new document (zzz)
    MOVE the part studio from yyy BACK to xxx.

    Now both assemblies point to the part studio in xxx.
    The assembly in xxx points to the workspace part studio in xxx
    The assembly in zzz points to a version in xxx

    This works really well and may help you develop a workflow that works for you :)
    Philip Thomas - Onshape
  • owen_sparksowen_sparks Member, Developers Posts: 2,660 PRO
    Understood and makes perfect sense.
    In that case I'd probably put the part studios in one doc.  Then the first assembly in doc 2, then duplicate doc 2 to be able edit the initial assembly to build the second one.  Not sleek at all but possibly workable today?

    Owen S.
    Business Systems and Configuration Controller
    HWM-Water Ltd
  • owen_sparksowen_sparks Member, Developers Posts: 2,660 PRO
    posts crossing in the ether...
    Business Systems and Configuration Controller
    HWM-Water Ltd
  • mthiesmeyermthiesmeyer Onshape Employees Posts: 115
    edited October 2018
    @Brian_McVeigh

    You could always:

    1.) Duplicate the Assembly
    2.) Save a version in the current document
    3.) Highlight all of the nodes in the assembly tree in the duplicate assembly
    4.) Right click -> change to version
    5.) Select your newly created version
    6.) Part out that Assembly

    Because all references are now to a version, only the duplicated assembly tab will be moved to the new document.
  • Brian_McVeighBrian_McVeigh Member Posts: 78 PRO
    Thanks for the suggestions!  Created an Improvement Request for this as it shouldn't really need such awkward workarounds.
  • philip_thomasphilip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381
    Brian - good move on the enhancement request - in the meantime, you have no doubt figured out that you can just leave the duplicated assembly element in the same document and you are done! :)
    Philip Thomas - Onshape
  • 3dcad3dcad Member, OS Professional, Mentor Posts: 2,470 PRO
    How about branching the original document? That shouldn't bother others and you get the job done, later on you can delete branch and just leave a version in history tree.
    //rami
Sign In or Register to comment.