Extracting Results from STAAD Pro. Using VBA

When I tried to extract intermediate forces through VBA from STAAD Pro. the values were not matching with the values shown in the STAAD. I found the values which were extracted through VBA to be linearly interpolated from the end values. There fore even for second order variation i.e. Bending due udl on a simply supported beam the values were linearly interpolated.  Please help me in this regard

Regards

Gokul

Parents
  • Linear interpolation is done only for spectrum and time history load cases. For static cases, the program calculates the forces and moments from first principles.

    If this doesn't answer your question, please attach the macro and the STAAD model.



  • I am attaching both my staad file & Macro. After extracting through this macro i found that if I choose an 
    intermediate section which does not fall in 12 ranges in which staad splits the member, there is an error 
    in the result. i.e the extracted result is linearly interpolated if the section is between that range. Help me 
    in this.

    Regards
    Gokul

    STAAD FILE
    STAAD PLANE
    START JOB INFORMATION
    ENGINEER DATE 18-Jul-13
    END JOB INFORMATION
    INPUT WIDTH 79
    UNIT METER KN
    JOINT COORDINATES
    1 0 0 0; 2 1 0 0;
    MEMBER INCIDENCES
    1 1 2;
    DEFINE MATERIAL START
    ISOTROPIC CONCRETE
    E 2.17185e+007
    POISSON 0.17
    DENSITY 23.5616
    ALPHA 1e-005
    DAMP 0.05
    END DEFINE MATERIAL
    MEMBER PROPERTY
    1 PRIS YD 1 ZD 1
    CONSTANTS
    MATERIAL CONCRETE ALL
    SUPPORTS
    1 2 PINNED
    LOAD 1 LOADTYPE None TITLE LOAD CASE 1
    MEMBER LOAD
    1 UNI GY -10
    PERFORM ANALYSIS PRINT ALL
    FINISH
    
    
    
    
    MACRO
    Sub ex1()
    Dim objopenstaad As Object
    Dim endforces(6) As Double
    Set objopenstaad = CreateObject("openstaad.output.1")
    objopenstaad.selectstaadfile Cells(2, 1).Value
    objopenstaad.getintermediatememberforcesatdistance 1, 0.3, 1, endforces(0)
    objopenstaad.closestaadfile
    Set objopenstaad = Nothing
    Cells(1, 1) = endforces(5) * 0.112984788
    End Sub
Reply
  • I am attaching both my staad file & Macro. After extracting through this macro i found that if I choose an 
    intermediate section which does not fall in 12 ranges in which staad splits the member, there is an error 
    in the result. i.e the extracted result is linearly interpolated if the section is between that range. Help me 
    in this.

    Regards
    Gokul

    STAAD FILE
    STAAD PLANE
    START JOB INFORMATION
    ENGINEER DATE 18-Jul-13
    END JOB INFORMATION
    INPUT WIDTH 79
    UNIT METER KN
    JOINT COORDINATES
    1 0 0 0; 2 1 0 0;
    MEMBER INCIDENCES
    1 1 2;
    DEFINE MATERIAL START
    ISOTROPIC CONCRETE
    E 2.17185e+007
    POISSON 0.17
    DENSITY 23.5616
    ALPHA 1e-005
    DAMP 0.05
    END DEFINE MATERIAL
    MEMBER PROPERTY
    1 PRIS YD 1 ZD 1
    CONSTANTS
    MATERIAL CONCRETE ALL
    SUPPORTS
    1 2 PINNED
    LOAD 1 LOADTYPE None TITLE LOAD CASE 1
    MEMBER LOAD
    1 UNI GY -10
    PERFORM ANALYSIS PRINT ALL
    FINISH
    
    
    
    
    MACRO
    Sub ex1()
    Dim objopenstaad As Object
    Dim endforces(6) As Double
    Set objopenstaad = CreateObject("openstaad.output.1")
    objopenstaad.selectstaadfile Cells(2, 1).Value
    objopenstaad.getintermediatememberforcesatdistance 1, 0.3, 1, endforces(0)
    objopenstaad.closestaadfile
    Set objopenstaad = Nothing
    Cells(1, 1) = endforces(5) * 0.112984788
    End Sub
Children
  • Hi,

    The values extracted using “Output.GetIntermediateMemberForcesAtDistance” function matches with the values reported in STAAD.Pro. For example, consider the attached macro. I have extracted all the member forces using this macro and compared with STAAD results. In the attached screenshot, you can find that the values match with the member forces reported in the member query box of STAAD.Pro.

    Also I checked the value at an intermediate point(dist= 0.55m) and found that the value is -1.2375 kNm where as the linearly interpolated values is 1.2292 kNm. So the OpenSTAAD function does not report the linearly interpolated values.