Skip to content

tadodev/EtabSharp

Repository files navigation

EtabSharp

A modern, strongly-typed .NET wrapper for ETABS API (v22 and later).

Features

  • 🎯 Strongly-typed API with full IntelliSense support
  • πŸ”„ Automatic version detection and compatibility checking
  • πŸ“Š Comprehensive coverage of ETABS functionality
  • πŸ›‘οΈ Type-safe property management and operations
  • πŸ“ Extensive documentation with XML comments
  • ⚑ Performance optimized with lazy loading

Requirements

  • ETABS v22 or later must be installed on your machine
  • .NET 10.0 or later
  • Windows OS (ETABS is Windows-only)

Installation

dotnet add package EtabSharp

Quick Start

using EtabSharp.Core;

// Connect to running ETABS instance
using var etabs = ETABSWrapper.Connect();

if (etabs == null)
{
    Console.WriteLine("No ETABS instance found. Please start ETABS first.");
    return;
}

// Access model components
var model = etabs.Model;

// Create a concrete material
var concrete = model.Materials.AddConcreteMaterial("C30", fc: 30, ec: 25000);

// Create a rectangular column
var column = model.PropFrame.AddRectangularSection("COL-400x400", "C30", 400, 400);

// Add a frame between two points
var frame = model.Frames.AddFrame("1", "2", "COL-400x400");

// Run analysis
model.Analyze.CreateAnalysisModel();
model.Analyze.RunAnalysis();

// Get results
var displacements = model.AnalysisResults.GetJointDispl("", eItemTypeElm.Objects);

Documentation

Full documentation available at GitHub Wiki

Important Notes

ETABSv1.dll Reference

This package does NOT include ETABSv1.dll. You must have ETABS installed on your machine. The wrapper will automatically locate the DLL from your ETABS installation.

Supported ETABS Versions

  • ETABS v22.x βœ…
  • ETABS v23.x βœ…
  • Earlier versions ❌ (not supported)

License

MIT License - see LICENSE file for details.

Contributing

Contributions welcome! Please read CONTRIBUTING.md first.

Support

EtabSharp

EtabSharp/
β”œβ”€β”€ Core/                           # Application & Model wrappers
β”‚   β”œβ”€β”€ ETABSApplication.cs
β”‚   β”œβ”€β”€ ETABSModel.cs
β”‚   β”œβ”€β”€ ETABSWrapper.cs
β”‚   └── Models/
β”‚
β”œβ”€β”€ Properties/                     # Define β†’ Section Properties
β”‚   β”œβ”€β”€ Materials/                  # Define β†’ Material
β”‚   β”‚   β”œβ”€β”€ MaterialManager.cs     (implements IPropMaterial)
β”‚   β”‚   β”œβ”€β”€ Constants/
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Frames/                     # Define β†’ Frame Sections
β”‚   β”‚   β”œβ”€β”€ FramePropertyManager.cs (implements IPropFrame)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Areas/                      # Define β†’ Slab & Wall
β”‚   β”‚   β”œβ”€β”€ AreaPropertyManager.cs  (implements IPropArea)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Links/                      # Define β†’ Link/Support
β”‚   β”‚   └── (future)
β”‚   └── Cables/                     # Define β†’ Cable
β”‚       └── (future)
β”‚
β”œβ”€β”€ Elements/                       # Draw β†’ Objects
β”‚   β”œβ”€β”€ Stories/                    # Edit β†’ Story
β”‚   β”‚   β”œβ”€β”€ StoryManager.cs        (implements IStory)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Points/                     # Draw β†’ Point
β”‚   β”‚   β”œβ”€β”€ PointObjectManager.cs  (implements IPointObject)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Frames/                     # Draw β†’ Frame
β”‚   β”‚   β”œβ”€β”€ FrameObjectManager.cs  (implements IFrameObject)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Areas/                      # Draw β†’ Slab/Wall
β”‚   β”‚   β”œβ”€β”€ AreaObjectManager.cs   (implements IAreaObject)
β”‚   β”‚   └── Models/
β”‚   └── Selection/                  # Select menu
β”‚       β”œβ”€β”€ SelectionManager.cs    (implements ISelection)
β”‚       └── Models/
β”‚
β”œβ”€β”€ Labels/                         # Define β†’ Pier/Spandrel Labels
β”‚   β”œβ”€β”€ Piers/
β”‚   β”‚   β”œβ”€β”€ PierLabelManager.cs    (implements IPierLabel)
β”‚   β”‚   └── Models/
β”‚   └── Spandrels/
β”‚       β”œβ”€β”€ SpandrelLabelManager.cs (implements ISpandrelLabel)
β”‚       └── Models/
β”‚
β”œβ”€β”€ Groups/                         # Define β†’ Groups
β”‚   β”œβ”€β”€ GroupManager.cs            (implements IGroup)
β”‚   └── Models/
β”‚
β”œβ”€β”€ Loads/                          # Define β†’ Load Patterns/Cases/Combos
β”‚   β”œβ”€β”€ Patterns/
β”‚   β”‚   β”œβ”€β”€ LoadPatternManager.cs  (implements ILoadPattern)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Cases/
β”‚   β”‚   β”œβ”€β”€ LoadCaseManager.cs     (implements ILoadCase)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Combos/
β”‚   β”‚   β”œβ”€β”€ LoadComboManager.cs    (implements ILoadCombo)
β”‚   β”‚   └── Models/
β”‚   └── Assignment/                 # Assign β†’ Loads
β”‚       β”œβ”€β”€ LoadAssignmentManager.cs
β”‚       └── Models/
β”‚
β”œβ”€β”€ Analysis/                       # Analyze menu
β”‚   β”œβ”€β”€ AnalysisManager.cs         (implements IAnalysis)
β”‚   β”œβ”€β”€ ResultSetup/
β”‚   β”‚   β”œβ”€β”€ ResultSetupManager.cs  (implements IResultSetup)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Results/
β”‚   β”‚   β”œβ”€β”€ ResultsManager.cs      (implements IResults)
β”‚   β”‚   └── Models/
β”‚   └── Models/
β”‚
β”œβ”€β”€ Design/                         # Design menu
β”‚   β”œβ”€β”€ Concrete/
β”‚   β”‚   β”œβ”€β”€ ConcreteDesignManager.cs (implements IConcreteDesign)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Steel/
β”‚   β”‚   β”œβ”€β”€ SteelDesignManager.cs   (implements ISteelDesign)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Shearwall/
β”‚   β”‚   β”œβ”€β”€ ShearwallDesignManager.cs (implements IShearwallDesign)
β”‚   β”‚   └── Models/
β”‚   β”œβ”€β”€ Composite/
β”‚   β”‚   └── (future)
β”‚   └── Forces/                      # Design β†’ Steel/Concrete Frame Design Forces
β”‚       β”œβ”€β”€ DesignForceManager.cs
β”‚       └── Models/
β”‚
β”œβ”€β”€ Tables/                          # Display β†’ Show Tables (Ctrl+T)
β”‚   β”œβ”€β”€ DatabaseTableManager.cs     (implements IDatabaseTable)
β”‚   └── Models/
β”‚
β”œβ”€β”€ System/                          # File, Units, Model Info
β”‚   β”œβ”€β”€ FileManager.cs              (implements IFiles)
β”‚   β”œβ”€β”€ UnitManager.cs              (implements IUnitSystem)
β”‚   β”œβ”€β”€ ModelInfoManager.cs         (implements ISapModelInfor)
β”‚   └── Models/
β”‚
β”œβ”€β”€ Interfaces/
β”‚   β”œβ”€β”€ Properties/
β”‚   β”œβ”€β”€ Elements/
β”‚   β”œβ”€β”€ Labels/
β”‚   β”œβ”€β”€ Groups/
β”‚   β”œβ”€β”€ Loads/
β”‚   β”œβ”€β”€ Analysis/
β”‚   β”œβ”€β”€ Design/
β”‚   β”œβ”€β”€ Tables/
β”‚   └── System/
β”‚
└── Exceptions/

About

.NET library that wraps the ETABS COM API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages