How to extract steel design results for all members using OpenSTAAD functions


  
 Applies To 
  
 Product(s):STAAD.Pro
 Version(s):All
 Environment: N/A
 Area: OpenSTAAD
 Subarea: Steel Design Result
 Original Author:Bentley Technical Support Group
  

Problem Description:

How to extract steel design results for all members using OpenSTAAD functions

Solution:

Primarily, you need use these three functions


Sample VBA Syntax:

 

Set objOpenStaad = GetObject(, "StaadPro.OpenSTAAD")

Dim membcount As Long

Dim Member() As Long

Dim iRow As Long

iRow = 5

Dim designCode() As String

Dim designStatus() As String

Dim CriticalRatio() As Double

Dim allowableRatio() As Double

Dim criticalLoadCase() As Long

Dim criticalSection() As Double

Dim criticalClause() As String

Dim designSection() As String

Dim designForces(2) As Double

Dim KLByR() As Double

 

 

membcount = objOpenStaad.Geometry.GetMemberCount

ReDim Member(membcount - 1)

objOpenStaad.Geometry.GetBeamList Member

 

 

For i = 0 To membcount - 1

    Cells(iRow + i, 3).Value = Member(i)

Next i

 

ReDim designCode(membcount - 1)

ReDim designStatus(membcount - 1)

ReDim CriticalRatio(membcount - 1)

ReDim allowableRatio(membcount - 1)

ReDim criticalLoadCase(membcount - 1)

ReDim criticalSection(membcount - 1)

ReDim criticalClause(membcount - 1)

ReDim designSection(membcount - 1)

ReDim KLByR(membcount - 1)

 

For i = 0 To membcount - 1

    objOpenStaad.Output.GetMemberSteelDesignResults Member(i), designCode(i), designStatus(i), CriticalRatio(i), allowableRatio(i), criticalLoadCase(i), criticalSection(i), criticalClause(i), designSection(i), designForces, KLByR(i)

   

    Cells(iRow + i, 4) = designCode(i)

    Cells(iRow + i, 5) = designStatus(i)

    Cells(iRow + i, 6) = CriticalRatio(i)

    Cells(iRow + i, 7) = allowableRatio(i)

    Cells(iRow + i, 8) = criticalLoadCase(i)

    Cells(iRow + i, 9) = criticalSection(i)

    Cells(iRow + i, 10) = criticalClause(i)

    Cells(iRow + i, 11) = designSection(i)

    Cells(iRow + i, 12) = KLByR(i)

   

    For j = 0 To 2

        Cells(iRow + i, 13 + j) = designForces(j)

    Next j

Next i

Sample Output: