I'm trying to read the envelope of forces in bars from robot to excel.
I've made a macro that reads Fz, Fx and My in a predefined number of points of a bar for all cases.
Then I analyze all the values and make a report with the maximum and minimum values along as his position in the bar.
I still have two problems to solve:
1 - If the maximum (or minimum) value occurs in the bar in a position different from my predefined points, I don't get the value.
How can I get the maximum and minimum value of a force and his position in the bar?
2 - Some bars have his section with a offset and I want to read a moment like M=My+Fx*OffSet.
How can I get the offset of the bar?
Any ideas?
Thanks in advance.
Solved! Go to Solution.
Solved by Rafal.Gaweda. Go to Solution.
@LuisCRodrigues wrote:
I'm trying to read the envelope of forces in bars from robot to excel.
I've made a macro that reads Fz, Fx and My in a predefined number of points of a bar for all cases.
Then I analyze all the values and make a report with the maximum and minimum values along as his position in the bar.
I still have two problems to solve:
1 - If the maximum (or minimum) value occurs in the bar in a position different from my predefined points, I don't get the value.
How can I get the maximum and minimum value of a force and his position in the bar?
Are you looking for RobotExtremeResultServer ?
If not you have to increase number of points and search for extreme values and their positions in your code.
2 - Some bars have his section with a offset and I want to read a moment like M=My+Fx*OffSet.
How can I get the offset of the bar?
Dim Off As RobotBarOffsetData
Dim OffEnd As RobotBarEndOffsetData
Set offlabel = Bar.GetLabel(I_LT_BAR_OFFSET)
Set Off = offlabel.Data
Set OffEnd = Off.Start
startnodeoffsetuz = OffEnd.UZ
Set OffEnd = Off.End
endnodeoffsetuz = OffEnd.UZ
With RobotExtremeResultServer I get the maximum and minimum value.
But how can I get the position in the bar where those values occurs?
Example code:
Dim ExtremeParams As RobotExtremeParams
Set ExtremeParams = RobApp.CmpntFactory.Create(I_CT_EXTREME_PARAMS)
ExtremeParams.BarDivision = 100
ExtremeParams.Selection.Set I_OT_BAR, BarSelection
ExtremeParams.Selection.Set I_OT_CASE, CaseSelection
ExtremeParams.ValueType = I_EVT_FORCE_BAR_MY
MaxValue = RobApp.Project.Structure.Results.Extremes.MaxValue(ExtremeParams).Value
MaxValuePosition = RobApp.Project.Structure.Results.Extremes.MaxValue(ExtremeParams).Position
MinValue = RobApp.Project.Structure.Results.Extremes.MinValue(ExtremeParams).Value
MinValuePosition = RobApp.Project.Structure.Results.Extremes.MinValue(ExtremeParams).Position
I've tried your suggestion.
I get a maximum value for My that is slightly superior of what I get in Robot.
Do you know why?
Is because BarDivision=100?
Other problem is that I'm getting MaxValuePosition=0. But I know that should be a value somewhere in the middle of the bar.
Am I missing something?
In case of bar divided onto bar calculation elements during process of model generation It seems the position is given on calculation element instead of the real one.
Split such bar(s) onto smaller parts
And the other question:
"I get a maximum value for My that is slightly superior of what I get in Robot.
Is because BarDivision=100?"
Do you know why this happens?
Programs itself has fixed number of discrete points along bar length for results presentation. Depending on module it can be 51 or 71 or 101.
If I understand your explanation, in the picture below, I get MyMax=73.00 because program has fixed number of discrete points along bar length.
But it´s possible that between those points there can be a bigger value of My?
In this example bar element is divided into several bar finite elements (calculation elements). In such case every bar finite element is "divided" for results presentation ( between 2 to 101 discrete points are generated along it). Number of such points is related to size of diagram, existence of extreme results on such element etc.
Can't find what you're looking for? Ask the community or share your knowledge.