Steel Truss Optimization Using Python & ETABS API Tool
Introduction
Steel structures are widely used in various engineering applications due to their strength, durability, and adaptability. However, optimizing steel members to ensure both safety and cost-effectiveness is a crucial part of structural design. In this study, we developed a Python-based tool utilizing the ETABS API to automatically optimize steel truss members under Ultimate Limit State (ULS) combinations, following the Eurocode 3 design standards.
This tool automates the section selection process, iteratively updating member sizes until design constraints are met, significantly reducing the manual workload and improving efficiency in structural engineering workflows.
Concept and Implementation
1. Objective of the Study
The main goal of this study is to optimize the steel truss members of a structure while ensuring compliance with ULS conditions as per Eurocode — 3. The optimization process minimizes overdesign, reducing material costs while maintaining structural integrity.
2. Structural System and Model Setup
To demonstrate the Python tool’s capabilities, a dummy model was created within ETABS. This model represents a typical steel truss system, designed explicitly for testing automated optimization procedures.
The structure was loaded with various forces, including:
- Wind Loads
- Snow Loads
- Live Loads
- Cladding Loads
- Member Self-Weight Loads
These loads were applied to the roof structure to simulate realistic conditions for truss member design.
3. Initial Steel Design in ETABS
After defining the load combinations and assigning initial steel sections, the first design iteration was performed using ETABS’ built-in Steel Frame Design Module (Eurocode 3–2005). This initial run provided essential design outputs, including:
- PMMRatio (Interaction Ratio for Strength Check)
- Member Sections
- Design Status
- Load Combination Governing Each Member
This initial dataset serves as a baseline for the optimization process.
Optimization Process
4. Automated Section Optimization Using Python
Once the initial design was completed, the Python tool initiated an iterative optimization process. The methodology followed these steps:
Extract Design Data:
- Retrieve PMMRatio and current section sizes from ETABS.
- Identify members belonging to different Group Names.
Filtering Members for Optimization:
- If a group’s maximum PMMRatio is below 0.95, it is considered underutilized, and its section size is reduced to a weaker profile.
- If a group’s maximum PMMRatio is above 0.95, it is considered overutilized, and its section size is increased to a stronger profile.
- If a member reaches 0.95, it is locked in its optimized state.
Model Update and Re-Design:
- Unlock the model using
SapModel.SetModelIsLocked(False)
. - Apply section updates using
Frame Assignments - Section Properties
. - Re-run structural analysis and steel design in ETABS.
- Repeat the process until all groups are optimized (or until reaching a max iteration limit, e.g., 5 cycles).
Final Design Evaluation:
- After reaching design equilibrium, extract the final PMMRatio for each member group.
- Compare optimized members to initial assignments.
- Evaluate material savings and structural performance improvements.
5. Key Limitations and Future Considerations
While the current tool successfully automates steel truss optimization, it does have some limitations:
Serviceability Limit State (SLS) Considerations:
- The tool currently does not check deflection limits or vibration effects.
- Adding an SLS check can further refine section selection.
Axial Force Considerations:
- Axial loads impact member behavior but are not explicitly included in the optimization.
- Future improvements may integrate axial force constraints alongside bending checks.
Despite these limitations, the tool provides a powerful automation framework that significantly speeds up iterative design adjustments.
Results: Optimized Steel Truss Design
At the end of the repetitive analysis and optimization cycles, the tool successfully:
- Reduced overdesigned members by decreasing HE & IPE sections where feasible.
- Strengthened critical members by increasing their section sizes where needed.
- Achieved final PMMRatios close to 0.95, ensuring an efficient and safe design.
- Saved design time by automating ETABS interaction, removing manual adjustments.
The final truss member assignments and updated PMMRatio values provide a well-balanced structure that meets Eurocode — 3 ULS design requirements while optimizing material usage.
Conclusion
The Python-based ETABS API tool developed in this study successfully automates the steel truss optimization process by iteratively refining section sizes. By leveraging programmatic interaction with ETABS, engineers can:
- Reduce manual design iterations
- Improve design efficiency
- Ensure optimal material usage while meeting ULS constraints
This study demonstrates that automated structural optimization using Python can streamline engineering workflows and enhance structural performance.
What’s Next?
🔎 Now that we’ve successfully optimized steel trusses, the next step is to integrate Strong Ground Motion Data into the ETABS API tool.
- Implement dynamic seismic analysis
- Automate earthquake load applications
Stay tuned for our next Python-ETABS automation project! 🚀
📌 About the Author
I specialize in Python automation for structural and earthquake engineering and offer 1:1 mentoring sessions. Feel free to connect with me:
📍 LinkedIn: Hakan Keskin
📍 To get 1:1 mentoring sessions please contact via LinkedIn