STAAD.Pro Help

OS. Simple STAAD.Pro Macro

This example demonstrates a small macro which can be used within STAAD.Pro.

Often, when learning to program, you begin with a program which simply outlines the basic structure of an application, module, or function; typically resulting with a screen message displaying the phrase "Hello World". This example expands upon this to include the foundation from a practical application as well.

Note: Additional examples in this section demonstrate how to poll STAAD data from external programs.
  1. Open STAAD.Pro.
  2. On the Utilities ribbon tab, select the Macro tool in the Developer group.

    The Macro dialog opens.
  3. Click Create New. The New Macro File Name dialog opens.
  4. Type a title of CreateNewView.vbs with the following description: Creates a new view from the selected beams.
    Note: You can save the macro file anywhere, so long as the directory has write permission for your user account.
    The STAAD.Pro Script Editor window opens with an subroutine title Main.
  5. Just after the description, type the following just after the description comment line:
    Dim objOpenSTAAD As Object
    Dim SelBeamsNo As Long
    Dim SelBeams() As Long

    This is used to provide some declarations of the objects and variables used in this program.

  6. Type the following lines to instantiate the OpenSTAAD object:
    'Launch the OpenSTAAD Object
    Set objOpenSTAAD = GetObject(,"StaadPro.OpenSTAAD")
    Note: The first line beginning with the apostrophe (') is a comment. It isn't necessary, but it is good practice to add remarks such as this to make your code clear to others (as well as to yourself when you revisit the code at a later time).
  7. Type the following lines to set up a logical check for if any beams are selected:
    'Get no. of selected beams
    SelBeamsNo = objOpenSTAAD.Geometry.GetNoOfSelectedBeams
    If (SelBeamsNo > 0) Then

    Here, the GetNoOfSelectedBeams Geometry function in OpenSTAAD is being used to aid our test. The test is a if… then… else… statement, which continues in the following steps.

  8. Type following lines to instruct the program what to do if our statement is true (i.e., there is at least one beam selected).

    That is to create a new view from the active selection using the CreateNewViewForSelection View function in OpenSTAAD.

    ReDim SelBeams(SelBeamsNo) As Long
    'Create a new view
    objOpenSTAAD.View.CreateNewViewForSelections
  9. Type the following lines.

    Since this macro might be run with no beams selected, a message can be provided to the user for some feedback in this instance with the following line:

      Else
      MsgBox "No beams are currently selected.", vbOkOnly
    End If
    Tip: You could add the message Hello World, if you prefer to stick with a more traditional introductory example of programming.
  10. Type the following statement to close the instance of the OpenSTAAD object:
    Set objOpenSTAAD = Nothing

This is all it requires to create a macro. Obviously, this particular example really only duplicates the functionality of selecting the New View tool in STAAD.Pro. However, it easy to combine other OpenSTAAD functions to automate a series of commonly used features in order to create your own time saving tools.

In this example, for the sake of brevity, the only model entities checked for selection are beams (that is, a new view is only created if beam elements are selected). You could easily expand this to Nodes, Plates, Solids, etc.

Example

The full code for this macro is as follows:

Sub Main()
'DESCRIPTION:Creates a new view from the selected beams.
  Dim objOpenSTAAD As Object
  Dim SelBeamsNo As Long
  Dim SelBeams() As Long
'Launch OpenSTAAD Object
  Set objOpenSTAAD = GetObject(,"StaadPro.OpenSTAAD")
'Get no. of selected beams
  SelBeamsNo = objOpenSTAAD.Geometry.GetNoOfSelectedBeams
  If (SelBeamsNo > 0) Then
    ReDim SelBeams(SelBeamsNo) As Long
'Create a new view
    objOpenSTAAD.View.CreateNewViewForSelections 'SelBeams
  Else
    MsgBox "No beams are currently selected.", vbOkOnly
  End If
  Set objOpenSTAAD = Nothing
End Sub