RAM Data Access Programming in C#

Our engineer's are interested in developing a C# application that will send external data to RAM Structural System to create a complete structural model.  The ideal method for interfacing with RAM would be through a Custom Menu inside of the RAM Manager but we are not sure if this is possible. All of the published examples we have found use VBA and write data outside the program o the RAM .RSS file.  Is this the only method of externally communicating with RAM or can we create a Custom menu inside RAM which attaches a EXE or DLL?  Thank you.

Parents
  • Hi Seth, 

    Hope you are doing well.  We are still doing a lot of work with our API integration to RAM SS and our Database Model Builder Tool and we have run across an issue that your team might have an answer to.  We have recently (this afternoon!) discovered a feature in RAM SS Modeler dealing with Overriding the Live Load Reduction factors for Beams and Columns.  Many times in our projects, we would not reduce the LL on Floor Beams, sometimes on Floor Girders, and nearly all of the time on Columns.  So new tool as shown in the attached screen shot is very welcome.  But, of course, the engineers are not asking me if we can control the LLR factors on individual elements through the RAM DA API?  I was able to find a reference to LLR I the IMemberData1 object but I can't understand how to use it or if it is even a solution.  Please see the attached screen shot for background.  Do you think there is a solution?

    Chris

  • In the Developers Guide I see reference to "fMaxLLRed" = Max live load reduction in the IColumn interface, but nothing for beams. You might try the same property with ILayoutBeam interface. 



  • Hi Seth,

    Thank you for responding. I investigated the MaxLLRed variable and I can see it for Columns in the IColumn interface but could not find an equivalent function in the IBeam or ILayoutBeam interfaces.  Would be really nice to have this in the API, particularly with it being available in the RAM SS GUI, but I don't know if your developers could add this feature without too much effort?  

    We did have one other thought and that would be to turn LL Reduction Off for everything and then use the IColumn MaxLLRed variable to force LL Reductions in Columns only?  Do you think this is a possible legitimate workaround? 

    Chris

  • The lLLRedCalc property in the IColumn interface corresponds to the option selected in Modeler - Layout  - Column - Live Load Reduction (1 = Use Calculated, 2 = Use Calculated Limited to Max, 3 = Use) and the fMaxLLRed property corresponds to the percentage entered for the applicable option.  The equivalent properties have not been implemented in the IBeam or IWall interfaces.  I have logged an enhancement.

    Since you cannot assign live load reduction in elevation mode in RAM Modeler, implying that the assignment cannot be made by story, I question whether it is appropriate to have live load reduction properties in the IColumn interface rather than ILayoutColumn.  However, it seems that there could be cases where live load reduction properties should be assigned by story and it would be beneficial if Modeler were enhanced.  I've brought this to the product manager's attention.



  • Hi Eric,

    First, I need to thank you and Seth for providing us with the Excel API scripts that allow models to be moved or rotated and recreated.  This code has allowed us to create an awesome integration for creating very complete RAM models with our Custom Model Builder Database tools we have been developing over the last few years.  I would say the RAM API is one of the most complete and robust we have worked with thus far.  We have previously created integrations with ETABS and SAP2000, S-Frame and Strand7.

    Related to the topic of Live Load Reduction, we look forward to the enhancements you are proposing to the developers relating to controlling LLR on framing.  With that said, we are searching for a current workaround that we can use to satisfy a project requirement that Floor Framing be designed without LLR, while the Columns and Walls are allowed to use LLR.  In the RAM SS GUI, it seems we can accomplish this by over-riding the LLR for floor framing graphically using the current tools.  We understand, this would not effect the LLR for the Columns.  Can you confirm that please?  With a user-driven hand workaround possible, we have been contemplating if there is a programmatic workaround with the API.  One thought was to turn LLR off for the entire model but this doesn't seem to be possible.  In the RAM MM, if you go to the Criteria Menu - Member Loads, there is no Option for No Live Load Reduction?  Is this really true?  We were going to attempt to turn off LLR for the model and then specify LLR for the Columns in the model, say by Story, but I am not sure if there is a facility to do this?  Can you comment on this as well, please?  

    Regards,

    Chris

Reply
  • Hi Eric,

    First, I need to thank you and Seth for providing us with the Excel API scripts that allow models to be moved or rotated and recreated.  This code has allowed us to create an awesome integration for creating very complete RAM models with our Custom Model Builder Database tools we have been developing over the last few years.  I would say the RAM API is one of the most complete and robust we have worked with thus far.  We have previously created integrations with ETABS and SAP2000, S-Frame and Strand7.

    Related to the topic of Live Load Reduction, we look forward to the enhancements you are proposing to the developers relating to controlling LLR on framing.  With that said, we are searching for a current workaround that we can use to satisfy a project requirement that Floor Framing be designed without LLR, while the Columns and Walls are allowed to use LLR.  In the RAM SS GUI, it seems we can accomplish this by over-riding the LLR for floor framing graphically using the current tools.  We understand, this would not effect the LLR for the Columns.  Can you confirm that please?  With a user-driven hand workaround possible, we have been contemplating if there is a programmatic workaround with the API.  One thought was to turn LLR off for the entire model but this doesn't seem to be possible.  In the RAM MM, if you go to the Criteria Menu - Member Loads, there is no Option for No Live Load Reduction?  Is this really true?  We were going to attempt to turn off LLR for the model and then specify LLR for the Columns in the model, say by Story, but I am not sure if there is a facility to do this?  Can you comment on this as well, please?  

    Regards,

    Chris

Children
  • Chris,

    Good to hear you are pleased with RAM DataAcess and found the merge tool a useful resource.

    There is no option to turn live load reduction off for the whole model.  There is an option in the RAM Concrete analysis, but that does not impact RAM Steel and RAM Frame results.  However, you can turn live load reduction off on a member by member basis by assigning an explicit 0% reduction in Modeler.  Go to RAM Modeler and select the appropriate material using RAM Modeler - Material or the drop down menu.  Then, go to Layout - Beams - Live Load Reduction, select Use, enter 0%, and fence the floor.  Repeat for each applicable material type, member type, and floor type.



  • Hi Eric and Seth, 

    Thank you for the information on Live Load Reduction.  This was very helpful and we are using the member by member assignment now.  In the future, we would like to see an enhancement to RAM DA, that supports this assignment, so we can set this up in our model building automation process.

    We have another RAM DA topic that we would like to ask you about.  We have a desire to be able to create a model through DA, which specifies explicit beam sizes and shear studs for framing members.  This would allow us to bring the initial sizes and studs back into our DB, post-rationalize there, and then send the rationalized sizes and studs back to RAM for a final model for documentation.  This would also help he user's confidence that no sizes are being altered by RAM and it would only run in "Code Check Mode", to tell the user if there are sizes/studs that no longer satisfy the Code, relative to small loading changes.  To this like, we have been experimenting with the EAnalyseFlag in the ILayoutBeam object and it appears it supports the "freeze" of beam sizes, when we choose the "eAnalyze" feature, but we are struggling with the tool to specify the shear studs on the member.  It seems there is a "SetNumStudsInSegments" feature in ISteelBeamDesiginResults, but we are not sure how to use this feature.  Do you have any advice on how to handle this workflow or maybe an example of working API code that implements this?

    Regards, Chris