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.
Where Used Without Where Used And Part Confusion
I will start by summarizing my problem and work flow. This is a public project run by volunteer engineers so nothing is IP.
I noticed we had many copies of the same screw, which is bad because it will incorrectly isolate changes made to such a common part.
I opened one of these references and was shown some random assembly.
Okay, weird bug, I guess. I move onto the next one in the list. Opening that shows me the same assembly as above. I scroll way down and try another and get another assembly and a message about a broken reference. Huh? When did I open an assembly? The entire visible table was parts. Even if I somehow accidentally opened a parent of the part, how could there be a broken reference for said part while simultaneously opening the parent? Whatever, keep going.
After the third attempt at opening a part and failing, I resort to Edit In Context. Nope, can't do that either.
Clearly, I'm doing something wrong. What needs to happen is…
1) Find best screw model. This should have been trivial, but… OnShape…
2) Replace all uses of identical screws with references to chosen part. This is called "collapsing references" for those who haven't had the displeasure of CAD cleanup. Where Used is somehow a "premium feature" but it's truly not optional so I assume there is some workaround.
3) Delete the duplicates.
Please help.
Comments
Can you share public document link(s)? Your screenshots are showing part studios, not assemblies. That's a red flag. Normally you don't want to add hardware in part studios.
This is how I arrange things - I created my own library folders, maybe this could work for you. It's obvious that you aren't a beginner, so I hope this info doesn't offend.
Like S1mon says - don't derive library parts into "part studios" unless absolutely necessary. This is where your duplicates are coming from. Use the insert command in "assemblies" to add library items. You may want to do a deep dive into "versions" as well.
You can use labels to find your libraries quicker.
I come from a background in solidworks and inventor, where all information is stored on your computer, and you are always concerned with storage space. The hardest thing switching over to OnShape was getting used to the idea that all storage is server side, and is basically unlimited (with-in reason).
I don't feel like I covered this as well as I could have, but I hope this is partially helpful.
The repository is public, but there are some permissions. I don't know what you can and can't see.
https://cad.onshape.com/documents/t/5d62d349366d2c13fcc31a79
My screenshots are definitely showing assemblies. These assemblies are the result of opening an item from the search.
What workflow you do recommend? How else would I view a part other than through a part studio? I just want "Screw A" to be the same screw actual reference in all uses.
I don't see the benefit to our group for using library parts because standards are too wishy washy. A sub-assmbly or part may be repeated in another assembly somewhere, but it just depends. I didn't realize I was trying to "derive library parts into part studios" and I don't know what that means. I just want to add an instance of it to a parent. I also don't care about the location of that part because I'm finding it via keyword search. At my real job, in Vault, parts are tagged with a "type" parameter (example: Screw, Motor, Flange) which is picked up by a filter which is associated with a custom column set to tabulate relevant parameters (Example: Screw column set has Shaft Length, Shaft Diameter, etc). We do have folders but they do nothing in this context. The part could be in Peanutbutter\Aardvark\Looney Tunes for all I care. I only care what it is and where it's used.
I'm very familiar with Vault and Cloud storage has nothing to do with my problems with OnShape. In Inventor, hierarchy is simple, parts are in assemblies which are in assemblies and so on. The next fundamental level up would be a drawing, I suppose. There is no proper equivalent to Documents in Inventor or any other CAD software I've used and I can see why. Forcing a file to cross an imaginary border to be referenced elsewhere helps nobody. Opening a part is simple… you just… open it. Adding a reference/instance of a part or sub-assmbly to an assembly is just as simple… just add it. Parents reflect changes in instances of it's children because those instances are said parts or sub-assemblies. Otherwise, every version would be no different than a new part which requires a new unique reference.
At the risk of repeating my self, I will explain how this should go down:
Notice that Documents never come into play here and I would never choose to involve them. The screw has two possible relationships with any assembly: is in or is not in. That's it. I don't care what imaginary containers exist in CAD land.
AN / MS standards are to wishy washy?
No, our (my volunteer group) standards are wishy washy. We don't develop a part or sub-assembly then declare it to be a common pattern. It just happens if an existing design fulfills the need of a later application. On file creation, we cannot say with certainty if something will be a "library" part or not. We've never had a situation where a part/sub-assembly could not be simply dropped into another assembly.
At my job, there is no fundamental difference in practice. However, we are more careful when creating new interface standards because labor costs are a factor. Inventor doesn't have any special rules about what parts/sub-assemblies can be used more than once. The concept of a "library part" doesn't exist for us.
Would you please explain what workflow I need to use my screw across many parents? The first step would be just opening the part which is somehow more complex than clicking on it's file.
Your second and fourth screenshots are multipart part studios, not assemblies.
The third sceenshot IS an assembly but seems to have no parts in the list area on the left.
The link provided does not open for me but gives the error; resources failed to load. Not found. (Though this could just because I'm trying this on my phone!) But check you have made it public in case its not just me who has a problem.
Given your previous statement that they ARE assemblies might I suggest that this might be a thing Onshape does differently.
If you are 'assembling' in a multipart studio, every time you make a part in the studio it will be a new part, that might explain why you have so many screws. You need to make an assembly then you can insert the screw as many times as you like and only have one instance of the screw, but a correct BOM.
Even though you are a CAD veteran it might be worth doing the assemblies tutorial in the learning center.
@colin_starker933 - Take Ste_Wilson's advice, and take the free, self-paced courses in the learning center - they do a better job explaining the process than I could ever do.
And as clarification, When I mentioned "library" - this is only a folder that you created and named yourself, where you keep special parts that you know you will use again. This one folder can be shared with your entire group - and this is where you all go for buy-out items, such as screws, nuts, and bolts…etc. - assuming standard content doesn't have what you need. The level of detail your parts have or, don't have is completely up to you. The idea when dealing with custom or oddball hardware, is to have a place to store them so everyone in your group can easily find them later. Inserting from this folder into "assemblies" will never make duplicates
Looking at your fourth pic, this one:
It's showing that there are four airframe screws (presumably that have been derived?).
This indicates a bit of an inefficient workflow.
What you've done here - using the analogy of design methods from 50 years ago - is create a drawing on the drawing board for a "Horizontal Camera Mount" (which is reasonable), and on that drawing you've drawn in multiple counterbore holes (which is reasonable), and you've voluntarily elected to provide a reference to the drawing of the "Airframe Screw" for each of those holes (which is reasonable), however what you've effectively done is made each hole make a reference to a different drawing / part number of "Airframe Screw".
Which is exactly the problem you've described - you've ended up with multiple instances of the same part and that is leading to confusion.
All those references to different drawing / part numbers to "Airframe Screw" might all somehow point back to one singular parent drawing / part number for "Airframe Screw" - but as you're finding out, that's a bit of a pain to untangle. And the "collapsing references" activity to figure out the parent-child relationship between parts and drawings, update references on drawings, make redundant drawings / part number of "Airframe Screw" obsolete, etc, etc is a right pain.
So how to fix this?
First up, in my opinion the Onshape term "Part Studio" can be a bit confusing to people new to the platform. People might get the misleading impression that they're 'creating parts' - and they're no more 'creating parts' today, than draftsmen were 'creating parts' 50 years ago whilst sitting in front of their drawing boards.
Question: Why are you bringing "Airframe screws" into this part studio?
If the answer is that you want the features of your counterbore hole to be logically tied to the features of your countersunk screw - ie: if you make any changes to the screw then it auto-magically makes changes to the hole, then that's a good reason (and why we moved on from using drawing boards! 😊)
However you don't need four (or more) instances of "Airframe screw" to do that.
As a suggested workflow, you have a number of options:
Option 1: Derive one instance of "Airframe screw", generate a "positive hole part (tool)" based on that, delete your airframe screw in the feature tree (it's no longer needed, it has served its purpose), create and move instances of the "positive hole part (tool)" around to all the hole positions, then use boolean subtract to create your holes. The Boolean subtract feature has a "keep tools" function that is disabled by default, so once your holes have been created, the "positive hole part (tool)" will be deleted by default by that operation in the feature tree. Take careful note of this default Onshape behaviour of deleting tools once they're used - it's for a good reason because it helps avoid problems like the one you're having where you end up with multiple extraneous parts clogging things up and causing confusion. Naturally there are times where you need to keep parts / tools for use in other features further down the feature tree, which is why this default behaviour can be over-ridden.
Option 2: Derive one instance of "Airframe screw", move it to the first hole position, use it to create the first hole, translate it to the second hole position, use it to create the second hole, etc, etc, until all the holes are created. Then delete the "Airframe screw" in the feature tree.
Option 3: Derive one instance of "Airframe screw" at the position of the first hole, create your hole, then delete the "Airframe screw" reference. Derive another instance of "Airframe screw" at the position of the second hole, create the second hole, then delete the "Airframe screw" reference. This is probably the least favourable option because the multiple derives probably create a performance hit.
Notice in each of these options, the "Airframe screw" is derived when needed, then deleted as soon as possible. The reason for this is that the purpose of this Part studio is purely to define the "Horizontal Camera Mount" part. Having extraneous parts laying around while you're trying to define a part typically creates problems - as you have found.
But what if you want to see how the Horizontal Camera Mount looks as an assembly with its screws mounted in place? And to check fit? And to do interference checks?
(In my opinion …) it's a bit unfortunate that Onshape allows you to do some of those things in Part Studio because people do use it for that purpose and it's often bad practice to do so. 50 years ago engineers wouldn't have done those things at the drawing board, they would have gone to the modelling shop to get parts made up and then assemble them together …
… which is what "Create Assembly" is for.
As others have suggested, it's probably best to do Onshape's online Assembly tutorials to learn how to use assemblies.
@andrew_kleinert - Thank you for explaining what I couldn't put into words
This helps a lot, thanks. I forgot that multipart studios existed. I will probably not be using them anytime soon considering what's happened here.
Many of our multipart studios appear to be dead projects, doodles. I can yank the erroneous part definitions from them and jsut worry about collapsing references in the true assemblies. I will start with screws. I will need a proper method of tabulating there properties. I can't find anything on this
The first step is getting our screws in order the hard way. My end goal is to have something like this in OnShape, but for screw parameters such as shaft diameter, shaft length, etc.
In Inventor, this is achieved by exporting a dimension parameter to an iProperty then mapping to a property in Vault. How is this done in OnShape?
I think what you may be after is Onshape configurations?
Here's an introduction video:
The Help page on them:
https://cad.onshape.com/help/Content/configurations.htm