RAM DataAccess - Gravity Loads and Coordinates

I'm working through a building that is fairly atypical in terms of RAM SS capabilities. Due to the nature of the project, I've had to use DA to run through some custom load cases for a previous phase, with pretty good success. These previous scripts relied mostly on the getting and updating point load and line load values through the respective property set interfaces.

My current goal is to output enough beam information to be able to write a beam to RAM Elements. These beams will be continuous and therefore cannot realistically be modeled in Structural Systems (estimation of inflection points will change with the various load cases listed above). It seems that the "IGravityLoads1" interface should give me a good idea of the location and magnitude of the loading on these beams of interest. My attempts at working with this interface have not proved successful yet, so I'm just wondering if the "original" interfaces require any different syntax? 

Any help on your end would be greatly appreciated! Once I get the gravity loads squared away, I should be able to figure out the best way to link all the geometric information as well to pass to Elements.

Thanks,

-Alex

  • After initializing DataAccess (shown as RAMDataAcc1 below) and loading the model, you first need to initialize the old interface.  This is accomplished by setting the interface with the appropriate pointer.

    Dim IGravityLoads1 As RAMDATAACCESSLib.IGravityLoads1
    Set IGravityLoads1 = RAMDataAcc1.GetDispInterfacePointerByEnum(IGravityLoads_INT)

    Then, you can access the methods in the interface.

    IGravityLoads1.GetNumBeamLoads lBeamID, lNumLineLoads, lNumPointLoads

    As shown above, you would first get the number of loads.  Then you would call the GetLineLoads… and GetPointLoads… methods and loop through the number of loads that exist.  Please note, these methods have been revised several times, so use GetBeamLineLoadAndSource3 and GetBeamPointLoadAndSource2 methods for the most recent methods.  There is a broader discussion of the old interfaces in the DA for Dummies document on Be Communities.

    Please note, RAM Elements has the ability to import a RAM SS model which will bring in loading.  Rather than writing a program to create a new model in Elements, it might be easier to import the model and just change the fixity in Elements if the only limitation is related to continuous beams.



  • Thanks for the response! I had been using a similar syntax to what you list above. First I am defining a lBeamID, with my understanding being a return of lNumLineLoads andlNumPointLoads for each lBeamID that I loop through.

    I'm currently getting the error of "Method 'GetNumBeamLoads' of object 'IgravityLoads1' failed. Any thoughts on what that might be from? I modified my code to use the exact syntax you've listed above (and have all variables previously defined).

    Thank you for the suggestion on the import as well. Unfortunately for this scenario I'm going to need to cycle through several loading scenarios that would take too long by hand in Elements.

  • Are you providing a valid unique ID to the method?  It is an input argument whereas the other variables in that method are output.  The DA manual installs with RAM Structural System and is located in the manuals folder.  It shows all of the old interfaces and identifies which arguments are input versus output.

    The unique ID for a beam is different from the beam number that you see in RAM Structural System.  It will be at least a 3 digit number and will always end in 02 for a beam.  If the beam unique ID is unknown, typically you would loop through all of the beams on the story and look for the beam label that you are interested in.  The beam label in DataAccess matches the beam numbers that are shown in RAM Structural System.  



  • Eric,

    Thanks again for the response. I believe I am using a valid ID as a test. I pulled an ID via "lUID = IBeam.lUID." Then set my lBeamID to that value to test out my other lines of code. As you mention, this value is at least 3 digits and does end in 02 (since I'm dealing with beams). This is still returning the error that I was listing above.

    At some point I'll need to be able to identify which lUID corresponds to which beam in the model, but for now I just need to get the rest of the code running.

  • I tested a gravity steel beam, lateral steel beam, and gravity concrete beam.  I did not experience a problem with IGravityLoads1.GetNumBeamLoads.  My only other thought is that you don't have results available.  Please make sure the framing tables have been generated (run a design all in RAM Steel Beam).  If you continue to experience a problem, please submit a service ticket online and attach/upload your model and code.  Mention Eric Helmueller in the body of the ticket and the technical support engineer will pass the information to me.