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.

What is the "proper" way to design a multi piece design with intertwined constraints

ShaoloShaolo Member Posts: 15
Here's the document in question: https://cad.onshape.com/documents/52d5ad0cecf5977b56332297/w/3f24d6de8c286740c1cdde22/e/7cf06216aebedc4f6aeed015

I'm designing a plant pot.
It's composed of 3 pieces. The planter, the water reservoir, and an internal grate for restricting media.

I wanted to make various pieces variable and create a set of configurations in my assembly.

I originally started with a Variable Studio but realized I couldn't alter a VS with configurations. I don't want to change dimensions on every piece. I want to change dimensions on the planter and have those changes propogate to the child pieces.I thought I had this settled by using In-Context design, but modifying the planter in the assembly doesn't actually update the child pieces, it just changes their linked context. Which then has to be manually updated to see the changes in the assembly.


What is the "proper" way to do this? Everything I would expect to be the proper way ends up with a dead end and I have to kind of hack together a solution I'm not thrilled with. For a design of this type, should I have just put all the pieces in a single part studio? I want to pick and choose pieces in the future to come up with alternative versions. I know you can pick out parts you want using derived. Maybe I should have gone that route? I did use derive to insert the planter in to the studio for the reservoir and grate, but when I changed the dimensions of the planter with my configs, it obviously didn't propogate. 

Best Answer

  • jnewth_onshapejnewth_onshape Member, Onshape Employees Posts: 54
    Answer ✓
    Hi @Shaolo and welcome! David's link above is the right place to start, but I wanted to respond directly. I see you working in a similar pattern to what I was doing back in 2015 when switching from SolidWorks to Onshape, thinking Onshape was "solidworks in a browser". It is a whole lot more than that.

    Here's what I wish I knew back then:
    A Document is not a document. Think of this as "a project containing a group of related part studios, assemblies, and drawings".
    A Part Studio is not a part file. It is a multipart editing environment for tightly coupled parts.
    An Assembly is still an assembly. They are for grouping parts from a part studio or multiple part studios for showing fit, finish, motion, and constraints. We do support in-context editing but I rarely use it, much preferring the multipart or derived workflows.

    In your specific case, all three parts can and probably should be designed together in the same part studio. This can be a major speed boost for your design workflow, as it is a very powerful paradigm once you get your head around it.

    For your configuration needs, I would recommend not using a variable studio. Instead design all three parts as a single configuration, then go "configure" the part studio and see how to per-configuration adjust the controlling dimensions without resorting to variable studios (which are also awesome but not needed for this).

Answers

  • jnewth_onshapejnewth_onshape Member, Onshape Employees Posts: 54
    Answer ✓
    Hi @Shaolo and welcome! David's link above is the right place to start, but I wanted to respond directly. I see you working in a similar pattern to what I was doing back in 2015 when switching from SolidWorks to Onshape, thinking Onshape was "solidworks in a browser". It is a whole lot more than that.

    Here's what I wish I knew back then:
    A Document is not a document. Think of this as "a project containing a group of related part studios, assemblies, and drawings".
    A Part Studio is not a part file. It is a multipart editing environment for tightly coupled parts.
    An Assembly is still an assembly. They are for grouping parts from a part studio or multiple part studios for showing fit, finish, motion, and constraints. We do support in-context editing but I rarely use it, much preferring the multipart or derived workflows.

    In your specific case, all three parts can and probably should be designed together in the same part studio. This can be a major speed boost for your design workflow, as it is a very powerful paradigm once you get your head around it.

    For your configuration needs, I would recommend not using a variable studio. Instead design all three parts as a single configuration, then go "configure" the part studio and see how to per-configuration adjust the controlling dimensions without resorting to variable studios (which are also awesome but not needed for this).
  • _anton_anton Member, Onshape Employees Posts: 272
    With the state of the system now, I can see two approaches:
    1. Just make a Variable Studio and keep all relevant dimensions there. Changing a variable in there propagates the change to all Part Studios and Assemblies in the workspace.
    2. The more Onshapey way: the top-level consumer is the Assembly, so it makes sense to configure that with the model's key dimensions. Any Part Studios it imports are also configured. Any values you want to consider global but don't anticipate changing can go into a Variable Studio (like common fillet radii or w/e).

    Re one Part Studio or many - it's a balance between keeping individual Part Studios simple and reducing the cognitive overhead of sharing driving data between them. Personally, in the case of several parts that interlock in a nontrivial way, I'd just keep it all in one Part Studio, unless that makes the Part Studios too complicated. The alternative is a combination of configs and Variable Studios - you pass in the external width+depth dimensions via configs, and keep wall thicknesses and chamfer/fillet values in a Variable Studio.

    P.S. We're aware of the need for configured Variable Studios; I'll say no more for now. :)
  • nick_papageorge073nick_papageorge073 Member, csevp Posts: 663 PRO
    For what you designed, which is 3 parts for 3d printing, and all 3 parts are explicitly made to fit together, I would have definitely made it all in a single part studio. You’d probably be around 75 features for everything, maybe even 50. 

    When you get many more parts, or the parts have a lot more complexity, such as for injection molding, it’s better to break it up sooner. 

    Regardless, it’s good to know in-context editing for more complex designs, so your effort was worthwhile imo. 
  • rick_randallrick_randall Member Posts: 91 ✭✭
    Hi Shaolo, Let me start by saying that I 100% agree with jnewth. In your case, definitely use one part studio & create multiple parts (and then make configurations of those parts ) 
    As a workflow - I like to create a folder (and name it variables) at the start of the feature tree . Then place all variables in this folder (yes, I know this is not absolutely necessary - but it does solve some parent - child issues that can crop up) .When it comes time to edit your variables, then I go to the variable table. I also tend to stay away from variable studios because they feel like they are "global" type dimensions, and I have had issues with redundant variable names. Now having said all that - If you are comfortable with variable studios, go for it. There seems to be no end to the amount of different workflow paths you can go down - just choose what you're comfortable working with.
      And anton, if you read this - yes to configured variable studios (that might get me using them more).
    Good luck -and keep at it.

  • ShaoloShaolo Member Posts: 15
    Thank you for all the great answers.

    I went through every version last night before my post was approved.

    • Tried the Variable studio, but I wanted options like "Small, Medium, Large" from a configuration and couldn't get that from the studio.
    • Tried in context design using the planter as the base. But when importing the pieces in to the Assembly I couldn't get them to sync to a configuration w/o enormous overhead. I wanted to change the width of **just** the planter and have the rest of the pieces resize accordingly. This doesn't seem to be the optimal solution for that. Every update would require a manual context update for every part in the assembly.
    • Tried using the planter as a derived part for the other pieces, but similar issue as above. All the parts need to be in the same studio to make them adjust together.
    • In the end, I moved all the parts back to a single studio. Thinking about it as a multipart file is beneficial. I used configuration variables to add all the adjustment knobs, then dropped the derived part in to another studio to create a configuration list with preset values for the knobs. Configurable variable studio would probably be the ideal solution and I can't wait to see that added. Someday. ;-)
    Since there are a few OnShape guys in here, I may have found a bug in ruled surface. If I create a surface in Studio A to create a split. Then derive that part in Studio B. The ruled surface cut does not transition across. Works with every other way I could find to use a surface to perform a split. If it sounds like that may be a bug, I can pare down my design to demonstrate the use case.
  • ShaoloShaolo Member Posts: 15
    For what you designed, which is 3 parts for 3d printing, and all 3 parts are explicitly made to fit together, I would have definitely made it all in a single part studio. You’d probably be around 75 features for everything, maybe even 50. 

    When you get many more parts, or the parts have a lot more complexity, such as for injection molding, it’s better to break it up sooner. 

    Regardless, it’s good to know in-context editing for more complex designs, so your effort was worthwhile imo. 
    I had originally wanted the pieces to be separate but linkable so I could pick and choose for new designs. How do you do your larger injection molded designs? Do you have just a few configurations? Do you use derived parts or context edits?
  • ShaoloShaolo Member Posts: 15
    Hi Shaolo, Let me start by saying that I 100% agree with jnewth. In your case, definitely use one part studio & create multiple parts (and then make configurations of those parts ) 
    As a workflow - I like to create a folder (and name it variables) at the start of the feature tree . Then place all variables in this folder (yes, I know this is not absolutely necessary - but it does solve some parent - child issues that can crop up) .When it comes time to edit your variables, then I go to the variable table. I also tend to stay away from variable studios because they feel like they are "global" type dimensions, and I have had issues with redundant variable names. Now having said all that - If you are comfortable with variable studios, go for it. There seems to be no end to the amount of different workflow paths you can go down - just choose what you're comfortable working with.
      And anton, if you read this - yes to configured variable studios (that might get me using them more).
    Good luck -and keep at it.

    I actually do the same thing with variables in a folder. I also partition off all of the operations in to folders named after the part.


  • eric_pestyeric_pesty Member Posts: 1,490 PRO
    Shaolo said:

    • In the end, I moved all the parts back to a single studio. Thinking about it as a multipart file is beneficial. I used configuration variables to add all the adjustment knobs, then dropped the derived part in to another studio to create a configuration list with preset values for the knobs. Configurable variable studio would probably be the ideal solution and I can't wait to see that added. Someday. ;-)
    ^
    This is a great way to do it.

    What I have done with more "complex" injection molded parts is to get the general shapes/interface in a single part studio then derive each part into its own part studio to add details like fillets, etc... If you change the derive to reference a version it will speed up the derive feature enormously (because it doesn't need to regen every time), you just have to manually update if you make changes to the "base".

    You do end up having to "replicate" the configuration structure across your documents though... One option is to duplicate the part studio and blow everything away to start with a derive (and keep the config inputs), but in your case you wanted a subset anyway so that shouldn't matter

    Another thing worth looking into is the "super derive" FS, which lets you bring in the variables along with the bodies so you can keep these available in your second part studio. https://cad.onshape.com/documents/cfef86ed4f9635531599a973/v/07475511d9c61d4993261871/e/305f5ce7d2fdb46e12881f6f?jumpToIndex=742
Sign In or Register to comment.