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.
Assemblies with revision controlled parts vs live workspace references
S1mon
Member Posts: 3,039 PRO
I'm trying to figure out how to balance the need to have parts and assemblies revision managed vs making changes which are updated in a top down fashion.
Let's say you are working on a subsystem which is all (or mostly) driven by a single part studio. Assuming you have a part studio in the same document as the related assembly, how do you manage controlling the revisions vs seeing all the changes live?
Does it make sense to have a production assembly where all the parts are set to particular revisions, and a clone of the assembly which has all the parts as non-versioned workspace copies?
I like the idea that I can make major top-down driven changes when I need to, but I can avoid creating new revisions of parts that aren't actually changing even though the part studio which created them has had a lot of updates.
To a certain extent, the part studio is the live workspace of the assembly, but only for assemblies and part studios where the assembly largely has all the parts in the same position as the part studio.
What strategies does your company/enterprise use for this kind of thing?
I kind of wish there was a quick way to toggle an assembly to show a revision managed state or a live workspace state.
Let's say you are working on a subsystem which is all (or mostly) driven by a single part studio. Assuming you have a part studio in the same document as the related assembly, how do you manage controlling the revisions vs seeing all the changes live?
Does it make sense to have a production assembly where all the parts are set to particular revisions, and a clone of the assembly which has all the parts as non-versioned workspace copies?
I like the idea that I can make major top-down driven changes when I need to, but I can avoid creating new revisions of parts that aren't actually changing even though the part studio which created them has had a lot of updates.
To a certain extent, the part studio is the live workspace of the assembly, but only for assemblies and part studios where the assembly largely has all the parts in the same position as the part studio.
What strategies does your company/enterprise use for this kind of thing?
I kind of wish there was a quick way to toggle an assembly to show a revision managed state or a live workspace state.
Tagged:
0
Comments
I personally would like an option to disable "live" editing between workspace tabs as well as having a warning in the version dialog that my rollback bar is not at the bottom.
I realize people have different practices. I've usually been held to the practice that if a new rev can be substituted, you don't rev the assembly. I'd think in that case you'd need to go through the hassle of manually replacing the references, which is not great.
In the scenario you are describing, if you go to the version where the part release happened and look at the assembly there, it contains the released parts for that rev already!
I understand this isn't necessarily workable for everyone though...
We have also created a rev-controlled drawing of an assembly that is set to "not revision controlled" as a slightly more formal way of capturing this: go to the released assembly drawing version and switch to the assembly from there!
If all the part releases happened at a single version, then that makes sense. The issue is that while a bunch of parts may get released at once, it's often the case that a subset needs to be updated.
Let's say the assembly has "Part A", "Part B" and "Part C", all driven by a single part studio. I release all the parts together at Rev01. So in that case, I can easily look at the version of the assembly where Rev01 was released and see the correct revs of the parts, even though I won't see the triangles in the assembly.
Now let's say I make a change to the part studio in order to fix an issue with "Part C". I release "Part C" at Rev02, but if I look at a live assembly I'm not 100% sure that the changes I made to the part studio aren't changing "Part A" and "Part B". This is where I feel like I want the assembly to have selected Revisions of parts, but it becomes more of a challenge to manage that, and I can't see a live workspace assembly unless the part studio is good enough, or I create a duplicate of the main assembly, but set the parts to be workspace versions.
This is where I get a little lost.
It does get a bit murky in that case...
You might be able to leverage branches to help with this: the "main/release" branch where the assembly references the released parts and the have a "Dev" branch where you do the part studio edits and the assembly is "live".
When you are ready to make a release, merge the relevant part studios into your main, do the release, and update the assembly to point to the latest release of parts.
I haven't gotten to the point where I'm trying to do all this in Onshape yet. Our process is still a bit messy and partially managed with other tools.
If the overall form/fit/function of the assembly changes, then of course the assembly would need a new part number and new drawing.
I guess with the dev branch approach, you would always branch from Main right when you want to make updates. That way the assembly in Main would be the source of truth for what parts are in there. In the dev branch you'd "unlock" (swap the revisions for workspace versions) only the parts you wanted to update, and make any changes in the part studio and be able to see them live. Then as you say, you'd merge the part studio updates, rev the part(s) in the update, and swap the revs in the assembly in the main branch.
I'm not sure if you'd want to make assembly changes in the dev branch, but if the merging works correctly, I suppose that would be ok too.
Ideation State:
Definition State (Release Prep):
- Components get Part Numbers and Metadata
- Drawings get generated
- Components and Sub-assemblies are moved to independent Documents
- References switched to Versions
Controlled Stage:So it's not necessarily a matter of "How" we manage a Document but more of "When". One of the main reasons opted to breakout into multiple Documents, is because Versioning and Branching are at the Document level, not the "Tab" level, so once you entered a state where more people are involved, hosting an entire assembly(with components and drawings) in a single Doc, it gets overwhelming really quick.
CAD Engineering Manager
In theory though you should be able to keep both alive and use merges. I would see the workflow going this way:
- Do your design work in DEV on both the assembly and the part studio.
- When ready to release, merge into "main".
- Do the inevitable last minute edits or changes in main as required and perform the release
- I guess if you merge back into DEV after changing the "main" assembly to the newly released parts you would have to switch them back to "live" but maybe that's ok as you would do it "as needed"... Or you you could merge to Dev after the part release but before updating the assembly to the new revised parts...
Either way there should be no reason to make any changes to "main" (other than by mistake...) between releases.
One of the biggest challenges is being aware of which branch you are in before you start working as I have done work in the "wrong" branch more than once! I wish it was a lot clearer what branch I am in than the washed out text next to the document name!
At my company, we have three defined workflows in Onshape: development, pre-production, and production. Each has its own revision scheme and requirements for approvals. That's based on practices and experience at previous companies, including being the Solidworks PDM Pro admin. I strongly believe that no files/parts should leave engineering to go to vendors without a revision.
I struggle a lot with with when things should be split out into separate documents. There's something nice about a document being the container for a subsystem, but as you say, the versioning and branching can become convoluted and confusing. When you get to that "Controlled Stage" point in your development process, are you still driving design using a top-down approach, or do you only make changes in local part studios per part?
We control BOM and product structures through a (heavily manual...) process outside of CAD with the output being a "manufacturing package" that gets sent our CM.
We are currently using "large" documents that each cover basically the entire "product".
Our current plan is to any work in a DEV branch starting from a "post CO" version of the document. I would expect any change to be "sandboxed" (i.e. more likely "bottom up" unless we do want to update related parts). We should be able to control what gets merged/updated in main (i.e. only merge the part studios that were intentionally modified and check everything for fit before releasing).
That said it might also make sense to "part out" some stuff but we haven't fully figured out what our approach is going to be yet so I'm very much following this discussion and happy to hear about what others are doing!
We do both, our "Product" is primarily Top-Down, and Equipment design is typically bottom up. The nice thing about Onshape Data Management is that moving items around doesn't break references, so we've come to trust that robustness.
Another benefit of having more documents for our Product Structure is that Sharing also happens at the document level, so when Products/Projects get to the stage where Quality, Supply Chain and Production need access to CAD Data, they don't have to navigate an entire Structure, but just the specific item they need (Part or Sub-Assembly)
We also have 2 rev schemes, but unfortunately Onshape only supports a single Rev Scheme, even if you have more workflows.
CAD Engineering Manager
I'm not sure what you mean. I did have to get help customizing our setup, but we have three workflows with three different revision schemes. Do you mean that you can't have some parts with one rev scheme in a release with parts with a different rev scheme?
What we don't have is the ability to enforce that you can't go from production to development or things like that.
You mentioned that Onshape only suppports a single Rev scheme. Do you know about the custom list you can use for revisions?
At our company we have a very simple Rev Scheme, but use Letters (A, B, C) for parts, assemblies and Files, and use numbers (1, 2, 3) for Drawings. We also share part numbers for parts and drawings (except for the leading letter: P1234 is in Drawing D1234). The different rev scheme makes it easier to Rev up drawings at a different rate than parts. (for instance, you can work through many revs on a part while you work through design issues, but the drawing only up-revs from 2 -3 . Likewise, drawings can get tons of information updated without up-revving parts).
Basic setup
You make a csv file with your different schemes, one after the other. The letter part is "scheme 1" and the numbers part is "scheme 2":
A, B, C...AX, AY, AZ, 1, 2, 3 ... 99
Then, the first time you Release something Onshape will always start at the beginning (A). If it's a drawing, you need to just set the Revision manually to "1". Thereafter, Onshape just checks the list for the current Revision and goes to the next in the list when you do a new Release. So, if your drawing is at Rev 8, Onshape will find "8" in the list, and use the next item (9) for the Revision.
I think you could add as many "schemes" as you like to that csv file; though you'd have to manually get Onshape started in the right place when you need to use a different Scheme for a Part, or phase of the project or whatever.
Look at your settings here: https://jps.onshape.com/c/manage/release-management
also- take advantage of the "Unreleased revision suffix" - it helps remind you that the drawing you're working on is unrealesed!.
I think this is totally separate from the options for different "workflows" in Release Management.
Assembly Structure
@S1mon
We use a combination of Released parts in Assemblies & workspaces with only workspace parts.
The weird part about this is that in a WorkSpace you can have an Assembly (workspace only!) that is populated with Released parts. But you can only see the Revision of the assembly in a past release version.
We've started to play with a Top Level Assembly in another document, populated only with Released SubAssys and Parts - then that Top Level assembly gets released as needed.
We also make sure that anything "shared" (emailed out, 3D printed, shared for RFQ, production etc) has been released. I like the strategy that Philip Thomas laid out - but we tend to work with custom properties / part numbers etc a little earlier. I really like the transition from 1 document - many as the project moves along.
Branching
We have found that it's very (very) confusing to use Branches for any long-term work. We use them for exploratory / developmental work or to have different people explore different ideas. However, we try our best to release ONLY from Main branch. We use Release Management extensively (along with the automatic obsoletion feature) to help maintain single source of truth. As we develop technologies or physical systems, the actual equipment can end up having many "generations" of parts - and making sure that our Onshape assemblies are populated with Released parts helps us keep track.
For a one off completely custom design, everything is referencing the workspace and initially once finally approved for MFG, everything is release all in the same version. Then if I need to make changes, I first update all assembly items to reference revisions. Then I do my changes. Then I go through the assemblies and update what I need to to reference the workspace. If the design is particularly large, I may branch what is going to be changed and then in higher level assemblies reference the items from the new branches version. Even in this case, I usually derive each part studio part into its own part studio and use that part in an assembly for releasing. I find it much cleaner in the end and easier to see what is actually changing. Especially when the part studio starts to have 10 plus items.