Hello, I am trying to write an excel macro using RAM DA to generate data similar to that of the report that can be generated in RAM Foundation module 'Load Case Forces' report. My initial idea was to get column forces at bottom of each column by filtering out column segments not at base, and all is working except the only load cases that I can access are gravity and wind load cases, and I cant seem to figure out how to show the seismic load cases (I have RAM Frame analyzed with multiple of each wind and seismic cases, only the wind cases are showing up in excel though). The total number of load cases using getnumanalyzedframeloadcases is higher than what the getcolforcesforlcase is able to access. Any tips? Would it be better to retrieve this data via nodal reactions or a different command? Thanks.
I would recommend using nodal reactions for any Ram Frame analysis results.
I am trying to filter nodes to only look at nodes occurring at bottom of column stacks, so that I can get all loads needed for footing design outside of RAM. But am stuck trying to figure out how to now take the variable 'NodeID' and use that node ID to get axial, major/minor shear and moments for each load case analyzed. Any tips? I know IMemberForce seems like it would give me what I want but I keep getting errors trying to set that up... still very new to using RAM DA
I don't really do programming, but according to the DataAccess Developer's guide I think you want:
IReactionNodesThis interface represents a collection of reaction nodes.
It is easy for me to assign a variable to a list of all beams, or columns and then index from that list (for example) via:
For x = 0 to numStories
Set IStory = Istories.GetAt(X)
Set IColumns = IStory.GetColumns
and then from there I can access column info. But I can't figure out how to access all nodes and their respective reactions as there is no ".GetNodes" or similar command that I can find. I did use Imodel.GetFrameAnalysisNodes and that allows you to index all nodes associated with frame members, but I am trying to access loads at the base of every column for all gravity, wind, and seismic load cases analayzed and can't seem to figure this out. Any help or direction is greatly appreciated
There is no current association between members and nodes exposed in DA. You will have to use IModel.GetFrameAnalysisNodes to set an INodes interface. From there, you can go a couple of different ways. You could filter the INodes collection for foundation nodes or you could use the GetClosestNode method to find the node closest to your column end coordinates. After you set an INode interface, you can call the GetReactions method assuming the node is a foundation node.
Alternatively, you could look at the column end forces. See the GetMemberForces method in the IForces2 interface.
Thank you very much. I don't think the GetFrameAnalysisNodes will work for this application as not all of my columns are lateral columns.
I tried to use GetMemberForces method but was getting all 0 forces for each column ID, what could lead to that?
Also, how come the IForces2.GetColForcesForLCase function errors out for seismic load cases that are currently analyzed, I can only get gravity and wind loads to show up for this function?
(The value I get for GetNumAnalyzedFrameLoadCases is greater than the amount of cases that work with the IForces2 function)
It also seems like GetColForcesForLCase function doesn't gather major/minor axis shear and moments that otherwise would be found in the foundations. If I could figure out how to get nonzero values from the GetMemberForces that would probably be the solution, any tips?
Regardless of method used to get loads, the output I want is basically that of the Load Case Forces > All report that one can generate under Foundation Module in RAM