Making Our SketchUp Connector Faster Than Ever

Making Our SketchUp Connector Faster Than Ever

You probably know this already: Speckle 2.17 was recently released, and as part of this, our SketchUp Connector just got a major upgrade.

Written by Mucahit Bilal GOKER on

We've been working hard to address performance issues regarding receiving large Revit models. We listened to your feedback, took action to incorporate it, and this video covers the latest on SketchUp with Speckle.

The Latest with SketchUp: a Short Video

Context Setting

Although the receive times for smaller models were acceptable, the speed significantly decreased when dealing with large Revit models, negatively affecting your experience. After conducting a thorough investigation into the cause of this issue, we discovered two reasons behind it.

Merge Coplanar Faces

First, the receive times were much longer when the “Merge CoPlanar Faces” option was enabled. Disabling this option led to noticeable improvements, and further investigation revealed the following refinements:

a. Previously, the merge coplanar function ran for every mesh post-creation. Now, it's deferred to the end of the whole receive process, resulting in improved efficiency.

b. Normals Check: Introducing a check for normals—merging faces only when they are parallel—contributed to the overall speed enhancement.

c. Code Optimization: Surprisingly, wrapping the merge coplanar function with the following lines of code significantly improved runtime:

Sketchup.active_model.start_operation('Receive Speckle Objects', true)
# Receive operation code here
Sketchup.active_model.commit_operation

This was an interesting discovery for us as well as this behaviour was not reported anywhere.

Making the above three improvements led to huge improvements in the receive times. But we didn’t stop there.

Instancing

After fixing CoPlanar faces and reducing receive times, we realized something else related to instancing.

Instancing refers to using a single geometric model or instance as a reference to create multiple copies or instances with variations. It's like having a template that you can replicate and tweak. This saves a huge amount of time when you have hundreds or thousands of instances of the same element.

We discovered that receiving 10 instances of the same Revit family took 10 times longer than receiving a single instance, even though we had instancing in place. This was due to a regression in our instancing logic, which we fixed. Now, receiving multiple instances of the same family is much faster and doesn't take as long as before.

The Improvements: a Snapshot

Let's compare the before and after receive times to evaluate these new time savings for our SketchUp Connector:

No Model Before After Improvement 🥳
1 Simple Wall with Windows 00:08s 00:02s ~4x
2 Simple Shed 00:20s 00:04s ~5x
3 Basic Architectural Model 01:47s 00:25s ~4x
4 Advanced Architectural Model 15:08s 00:49s ~18x
5 Community Model 1 10:08s 00:56s ~10x
6 Community Model 2 02:03:52s 13:01s ~20x
  1. First, we tested the receive times for a really small model. In this case, we have three walls with multiple doors and windows hosted.
  2. Next, we tested with a slightly bigger model. A simple shed, with furniture, trees, etc.
  3. Next, we have tested with the famous Revit Sample Project! It is a good benchmark for a small model.
  4. Next, we tested with another sample project, the Advanced Sample Project. It is a good benchmark for a medium-sized project.
  5. Our Community members also shared the models they had problems with. This model was a good benchmark for a medium-sized model.
  6. This model was a great benchmark for a large project. Our user had really really long receive times.

Conclusion

With these latest improvements, our SketchUp Connector attains a new level of performance. We remain dedicated to making sure your experience with Speckle is at its best, and this release reflects that. Don’t forget to upgrade your SketchUp Connector to the latest version and try these improvements today!

Subscribe to our newsletter if you'd like to receive future updates:

Feeback or comments? We'd love to hear from you in our community forum!

logo
Speckle

The world runs on 3D: Speckle enables you to deliver better designs, together.

© Aec Systems Ltd. Speckle and Speckle Systems are trademarks of AEC Systems Ltd., registered in the UK and in other countries. Company No. 12403784.

Terms of service | Privacy policy