Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- 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
Shaolo
Member Posts: 13 ✭
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.
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.
0
Best Answer
-
jnewth_onshape Member, Onshape Employees Posts: 89Hi @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).
3
Answers
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).
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.
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.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