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.


Mate Efficiency/Performance

JollyJolly Member Posts: 81 PRO
Is there anything documented anywhere on Mating efficiency? ie: which mates are most CPU/GPU taxing, and by how much. 

In general I assume a most mates are pretty close to each other except for maybe tangent mates which are more taxing. Group Mates are also more efficient (I think). In my sub-assemblies (that are used in large assemblies) I'll take a few dozen mates to put everything in properly (including hardware), but then once it's all done I'll do a group mate and suppress all other mates. I suspect this makes things smoother in a larger assembly composed of multiple smaller assemblies like this. I remember hearing (in a webinar I think) that a group mate is pretty low-taxing on a CPU. I'm working from home at the moment and using a low-powered laptop PC (only has an integrated GPU) at the moment so keeping it efficient is important to me.


  • Options
    john_mcclaryjohn_mcclary Member, Developers Posts: 3,910 PRO
    I'd be interested in a document list, but generally it should be safe to assume the more degrees of freedom, the more taxing it is.

    That being said, I would assume it would look like this.
    Most efficient to least
    -planar, parallel
    -cylindrial, pin-slot

    of course a single mate by itself is likely equal to any other. It's when you have many mates, which ones in bulk will slow the system down when trying to manipulate the model.

    I rank tangent low on the list, but I have my rubiks model that uses hundreds of tangent mates simultaneously. It runs very smooth with the animation tool, but manipulating the model and adding more mates was not as bad as I would have expected toward the end of the project. 
  • Options
    JollyJolly Member Posts: 81 PRO
    It runs very smooth with the animation tool

    Interesting comment. I haven't used the animation tool. I'll look into that for later work. I've definetly noted that replacing 50 mates in subassemblies with a single group mate really improves my model manipulation efficiency. Notable enough that I started doing it on all my assemblies. I'm in the middle of converting a large solidworks assembly into appropriate subassemblies so I'm figuring out as I go here.

    It's when you have many mates, which ones in bulk will slow the system down when trying to manipulate the model.
    I think this is the issue here. I've also started making mate connectors more too to minimize the number of mates I need to make. One properly positioned mate connector can allow for 1 Fixed mate vs a combination of Planar/Sliders/Cylinders/...
    Still working on replacing decade old mate habits.  :-)

    Somewhere else it was mentioned to specify specific versions of subassemblies as a way of improving performance to as versions are pre-cached where as always using main branch requires a rebuild.

    All in all, Onshape performs amazingly on my cheap laptop with an integrated GPU. 90M triangles/sec and 50M lines/sec. Drastically slower than my high powered CAD station at my workplace but still easily handles large assemblies.

  • Options
    john_mcclaryjohn_mcclary Member, Developers Posts: 3,910 PRO
    Be careful with group mate and assembly.
    You won't want to add and sub assemblies into a group mate, it case part positions to update irregularly. Meaning you will need to suppress/unsuppress the group mates to get them to update. in the top level  assembly.
  • Options
    JollyJolly Member Posts: 81 PRO
    I didn't quite follow you there. Here's what I have:
    Top Level:

    SubAssy1 consists of 24 parts and 24 mates.
    SubAssy2 consists of 12 parts and 12 mates.
    My thought was to go into SubAssyA and B and add a Group Mate for the entire sub-assembly, then suppress the other 24 mates. I do that within the subassembly. THen if any changes are needed I supress the group, unsuppress the 24 mates. Make changes as necessary, then suppress/unsuppress. Same on SubAssyB. This assumes no motion needed.

    I definitely want to understand why you suggest caution there.
  • Options
    john_mcclaryjohn_mcclary Member, Developers Posts: 3,910 PRO
    Right, as long as you are making suppress / unsuppress part of your workflow there is no problem. 

    But I tend to make things always alive. It is too much to remember when and where I need to suppress/unsuppress you know..

    As long as you are aware and diligent, that would be an o.k. workflow when performance is an issue.
  • Options
    JollyJolly Member Posts: 81 PRO
    Good point. I feel comfortable keeping some of that in my head, especially for small assemblies that I know are "done". But in a multi-coworker environment I can see that causing problems. And I do have coworkers so I'll need to keep that in mind.
Sign In or Register to comment.