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
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
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.
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:
|Simple Wall with Windows
|Basic Architectural Model
|Advanced Architectural Model
|Community Model 1
|Community Model 2
- First, we tested the receive times for a really small model. In this case, we have three walls with multiple doors and windows hosted.
- Next, we tested with a slightly bigger model. A simple shed, with furniture, trees, etc.
- Next, we have tested with the famous Revit Sample Project! It is a good benchmark for a small model.
- Next, we tested with another sample project, the Advanced Sample Project. It is a good benchmark for a medium-sized project.
- Our Community members also shared the models they had problems with. This model was a good benchmark for a medium-sized model.
- This model was a great benchmark for a large project. Our user had really really long receive times.
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!