September 11, 2024
December 12, 2023
Blog

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.

Mücahit Bilal Göker
Product Owner
Contents

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.

Try Speckle today!

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:

NoModelBeforeAfterImprovement 🥳1Simple Wall with Windows00:08s00:02s~4x2Simple Shed00:20s00:04s~5x3Basic Architectural Model01:47s00:25s~4x4Advanced Architectural Model15:08s00:49s~18x5Community Model 110:08s00:56s~10x6Community Model 202:03:52s13: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:

Email Address *

What's Next

Join us at SpeckleCon, where you and your team can present projects you are proud of. Showcase how you leveraged Speckle's connected and collaborative aspect, and let’s shape the future of AEC together!

More about SpeckleCon!

Subscribe to Speckle News

Stay updated on the amazing tools coming from the talented Speckle community.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Author
Mücahit Bilal Göker
Product Owner

Hi, my name is Mucahit. I am always curious about new technologies and innovations, always up-to-date.

Visit LinkedIn