ETABS is a trusted tool in structural engineering, offering powerful analysis and robust design capabilities. With a proven track record for handling complex projects, ETABS provides engineers with the confidence and efficiency they need to deliver high-quality results.
However, ETABS has its limitations too, which you've probably experienced as well. For example, creating geometry for structures like trusses with repetitive patterns and hundreds of elements can be a boring and time-consuming task. It can even become frustrating when you need to modify a geometry as a result of a client’s request or a last-minute change.
And what about optimizing the model? Finding the best solution isn't easy with multiple parameters and constraints. Even if you create multiple models and run them manually, the effort needed to process the outputs of 20 or 30 ETABS models quickly becomes overwhelming.
So how can we extend ETABS' capabilities and turn a workflow that takes days into one that’s done in minutes? The answer is: through automation!
In this blog, we will show how you can automate and optimize ETABS workflows in VIKTOR, a platform to build and share web apps with Python. We want to create a web app that easily integrates with ETABS and hosts it in the cloud so it can be shared with colleagues. VIKTOR lets us do both!
The application we're building will be used to tackle a common structural engineering workflow: the automation and optimization of trusses in ETABS.
Features of the app will include:
Intuitive inputs and pre-visualization with a 3D model of the structure.
Connection with the ETABS API to generate the models, providing key results like displacements and CO2 emissions.
Flexible optimization settings that allow users to run multiple models and post-process the results with insightful visualizations. Here's a sneak peek of what the result will look like!
Now, let's dive into specifics.
Generating truss geometry is challenging, especially when modifying hundreds of elements. When adding new members, you have to recalculate and reassign all the loads, making it a tedious and time-consuming process.
Using some out-of-the-box components from the VIKTOR Software Development Kit (SDK), you can create a user interface that connects to the 3D model. Now, you can add members, recalculate, and reassign loads effortlessly.
Now that we have automated the geometry, we need to create it in the ETABS environment as well.
To get this working, your app will use the VIKTOR worker to connect with ETABS. The VIKTOR worker lets you use the ETABS API in Python, enabling you to automatically create the geometry, cross-section, and material assignments, as well as generate loads. No need to open ETABS - the app takes care of it for you!
You can see it in action in this video:
The 3D model and table at the end of the video show the highest deformation, number of elements, and CO2 emissions. In this case we aim to minimize the CO2 emissions without exceeding the maximum allowed deformation.
The results you're seeing are created using a GeometryAndDataView. This will help your users define the optimization settings, so let’s continue with that in the next section.
Unfortunately, ETABS doesn’t have a built-in feature to run several models one after another and save the results automatically. This means there is no easy way to optimize models or see the results from the optimization process in ETABS itself. However, with VIKTOR, you can build a work-around!
For this, you will use the ETABS API to create a loop. In each step of the loop, a new model is analyzed in ETABS, and the results are saved. The VIKTOR worker runs this process and sends the results back to the web app.
Watch the video below to see how it works!
As you can see in the last part of the video, there's a table showing the maximum displacement and CO2 emissions for each of the analyzed models. Additionally, there's a graph that compares truss depth to maximum displacement. The results are organized into curves based on the number of joists, making it easy to see how different designs perform according to your criteria.
Now you might be thinking: How can I implement this app in my company or add it to my toolbox?
Luckily, the code for this app is open-source, and you can find it in this GitHub repository. You can also use it as a template to create more web apps like this!
There are plenty of resources available for you to modify the app to suit your needs. You can adjust the input blocks, change the visualization, or explore how to use the VIKTOR Worker by following this tutorial.
With this app, you can enhance your ETABS workflows to make truss structure optimization easy and achievable in minutes, instead of days. With VIKTOR and Python, you can create and analyze multiple design scenarios to come up with the best results fast! Try it out to see how these tools can simplify your workflow and help you design better models.