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.

Large Assembly Management

sam_schulpensam_schulpen Member Posts: 7 PRO
I'm currently working on a large assembly (11k instances). It is really slow. I'm not sure if it is my local graphics or on the onshape server (its not the internet connection).

How to manage large assemblies is using simplified representations: showing only the parts or features you need at a given point. In onshape this is the feature "display states"? There are a few issues. 
1. You can't use a display state from a subassembly level. Yes, I've noticed that when you activate the display state in the subassembly before inserting it, it works. But this is not a linked state and doens't update between assembly levels. 
2. It is hard to manage what is included in a state and what not. 
3. You need to manually update states when you add new parts.

Is the "display states" feature going to be extended? For example Rule based states (eg all bolts off).
Or is onshape pursuing a different route where simplifying is irrelevant? 
Are there any resources for best practices in (large) assembly management? 

Any input is much appreciated. 

Comments

  • eric_pestyeric_pesty Member Posts: 1,836 PRO
    I don't think Onshape currently has anything "automatic" for this but I would consider creating a "simplified" configuration checkbox to your assemblies and suppressing any non-essential details (like fasteners, patterns, etc.), possibly even some parts if they are not critical, etc. It might take a bit of work to setup (has to be created for every assembly level) but you would then be able to toggle between full detail and simplified pretty easily.
  • nick_papageorge073nick_papageorge073 Member, csevp Posts: 804 PRO
    I don't have a direct answer for the assembly states, but in my assembly of about 1000 instances, I notice performance is directly tied to the amount of RAM on my computer. Not GPU ram, but motherboard RAM.
  • adrian_vlzkzadrian_vlzkz Member Posts: 266 PRO
    I don't have a direct answer for the assembly states, but in my assembly of about 1000 instances, I notice performance is directly tied to the amount of RAM on my computer. Not GPU ram, but motherboard RAM.
    Does your Task Manager validate this?

    I don't have significant large assembly to try this, but chrome shows RAM utilization in the task manager.



    Adrian V. | Onshape Ambassador
    CAD Engineering Manager
  • nick_papageorge073nick_papageorge073 Member, csevp Posts: 804 PRO
    I don't have a direct answer for the assembly states, but in my assembly of about 1000 instances, I notice performance is directly tied to the amount of RAM on my computer. Not GPU ram, but motherboard RAM.
    Does your Task Manager validate this?

    I don't have significant large assembly to try this, but chrome shows RAM utilization in the task manager.




    Yes, I use OS on 3 computers, each with different amounts of motherboard ram. 8, 16, 32 GB ram. Opening the same large assembly on each one, it responds better with more ram. Smaller assemblies are the same on each computer, as they don't tax the ram. But the bigger assemblies consume all the ram, and it is shown in task manager.
  • sam_schulpensam_schulpen Member Posts: 7 PRO
    I don't think Onshape currently has anything "automatic" for this but I would consider creating a "simplified" configuration checkbox to your assemblies and suppressing any non-essential details (like fasteners, patterns, etc.), possibly even some parts if they are not critical, etc. It might take a bit of work to setup (has to be created for every assembly level) but you would then be able to toggle between full detail and simplified pretty easily.
    I like the idea. Having to set this up for every level is common also in "simplified reps" in other cad software. It also always requires a lot of "maintenance" during a design process.

    A checkbox helps to a certain level. My assemblies are large because of high quantity patters (eg 100x an assembly with a 100 parts). I can also easily reduce this in a configuration. 
  • sam_schulpensam_schulpen Member Posts: 7 PRO
    I like Eric's idea of configurations to simplify subassemblies. Another workflow thing that can help (especially if you're wanting to test motion in your big assembly) is using groups instead of mates as much as possible. Mates (even fastened) all involve some calculation to tell whether they've failed or not, but groups, don't seem to. That means if you have 1000 screws using fastened mates it can bog down. In the past, I've placed parts with mates, then once it's pretty stable and won't change much, I'll group them and suppress all of the mates. If I need to update it, I'll suppress the group and unsuppress the mates, make my changes, then swap them back. You might also choose to use configurations for the suppression/unsuppression steps so there's just a button to use.
    And what about "replicate" and atterns? I usually only have a few bolts actually mated to holes and then use replicate or pattern. 
  • eric_pestyeric_pesty Member Posts: 1,836 PRO
    The replicate function in Onshape is not really a pattern so it does use mates to locate every instance. Onshape can get away with it because each mate is faster to solve (than having to solve multiple mates for each pair of parts) but it would still add up eventually. Actual patterns (linear or circular) should be faster to solve as there are no mates involved.

    In all cases the more "stuff" onscreen the slower it will be regardless of mate solve time. Also make sure to check the "performance" report (on the very left under the version/comment/where used icons).
    It will tell you what the mate solve time as well as the number of "primitives". If the mate solve it long things will be slow when dragging something on screen.
    If you have a lot of things to display the bottleneck might be the graphics card on your machine. A good place to start is to check the number of triangles (in the "tab graphics" against the triangles per second reported in the "performance check" (under "?" menu). If the triangles per second isn't at least an order of magnitude higher it will be slow rotating things on screen!
  • shawn_crockershawn_crocker Member, OS Professional Posts: 860 PRO
    Honestly, I always feel a little deflated when it comes to finding the cause of slowness. With onshape, speed often seems so random but my internet connection so stable, I really think it's a server thing that nobody wants to talk about. We all feel mildly uncomfortable with how far out of our reach changing it actually is. At times, a large assembly will perform badly. Then later a similar but bigger one will perform well. Then in the afternoon, a tiny assembly will perform bad. All the while my connection has been the same. Onshape is awesome in so many ways and I easily gain back some lost time from server slowness due to other efficient workflow capabilities but unpredictable speed is patience testing at times. When I have to open up SolidWorks for some horrible reason and move a part in an assembly 1in along the x axis I remember to keep it real.
  • marcus_whitemarcus_white Member Posts: 6 PRO
    Honestly, I always feel a little deflated when it comes to finding the cause of slowness. With Onshape, speed often seems so random but my internet connection so stable, I really think it's a server thing that nobody wants to talk about. We all feel mildly uncomfortable with how far out of our reach changing it actually is. At times, a large assembly will perform badly. Then later a similar but bigger one will perform well. Then in the afternoon, a tiny assembly will perform bad. All the while my connection has been the same. Onshape is awesome in so many ways and I easily gain back some lost time from server slowness due to other efficient workflow capabilities but unpredictable speed is patience testing at times. When I have to open up SolidWorks for some horrible reason and move a part in an assembly 1in along the x axis I remember to keep it real.

    I couldn't of said this better. My only difference is when I go back to inventor I feel better and more capable. The modeling in Onshape is more intuitive but the drawing side is testing me. I've brought up multiple tickets relating to this and we are working things out but it never seems to lead to a definite solution. They are all just work arounds...... 
  • S1monS1mon Member Posts: 2,902 PRO
    Thankfully I've never had to deal with 11k instances on any CAD system or project. I do often work with 100s of parts (bordering on 1000s), and I've dealt with imported PCBs in Onshape with ~600 components, many of which had multiple parts to simulate the terminals or pins. With that, composite parts made the performance much better. I also had to edit out (delete face etc) the extruded text on the SMT resistors and caps which had the phone number and name of the idiot who modeled the components.

    At any given moment, do you really need to see all the parts in that 11k assembly? Are there small parts (fasteners, electronic components, etc) which can easily be hidden or suppressed most of the time? If the parts are named well, the search function in the instance list can be great for selecting a ton of parts at once. I was using this to select all the 0201 Rs and Cs and put them in assembly folders to easily suppress/unsuppress them.

    Can you create envelope parts (a big box or equivalent) to represent whole subassemblies when you're at the top level? This could be controlled with a configuration.

    It would be great if more of this housekeeping/work-around stuff was more automatic, but with a bit of planning and work, it may be possible to get decent performance where you need it.
  • BLeeVNBLeeVN Member Posts: 18 PRO
    I'm currently working on a large assembly (11k instances). It is really slow. I'm not sure if it is my local graphics or on the onshape server (its not the internet connection).
    Have you seen this Article Defining High Performing Assemblies - Onshape Learning Center @sam_schulpen?  Nothing ground breaking but I'm curious because I tend to Group and Fix as my primary workflow because on not needing to work with motion of Parts.  I am curious if you are able to Group and Fix if this makes a difference in your Use Case.
Sign In or Register to comment.