hexagon logo

Loop in .cmd file to find row at a specific time.

I run a .cmd file after my sims to pull certain data and write it to a text file. I would like to get some numbers at a specific time in the sim. I'm trying to use a WHILE/END loop to do this per another example I found, but it isn't working. Code below...
 
var set var=CurrentAnalysis object=(eval(db_default(.system_defaults,"analysis")))
 
var set var=IP integer_value=1
 
While condition=((eval(CurrentAnalysis.object_value//".MyResult.time").values[IP])<2.5)
var set var=OneGTimeValue real_value=(eval(CurrentAnalysis.object_value//".MyResult.time").values[IP])
end
 
var del var=IP
 
Thoughts? Is there a better way?
Parents
  • Something in this direction would do the job (not tested; minor tweaking may be required):
    var set var=OneGTimeValue real_value=(eval(VALI(db_default(.system_defaults,"analysis").MyResult.TIME.values,2.5)))
     
    Other than that I'd usually tend to work with macros instead of command files.
    In your case you'd introduce a macro with
    $analysis:t=analysis
    ....
    var set var=$_self.OneGTimeValue real_value=(eval(VALI($analysis.MyResult.TIME.values,2.5)))
     
    This makes the syntax so much easier to write and to understand.
     
    The culprit is that you still need a command file that reads the macro and calls it like
    my_macro analysis=(eval(db_default(.system_defaults,"analysis")))
     
    Concerning the eval:
    if you use
    var set var=$_self.OneGTimeValue real_value=(VALI($analysis.MyResult.TIME.values,2.5))
    then you created a variable OneGTimeValue that is dependent on the analysis.
    If you re-run the analysis, the variable will automatically change. If try to delete the variable, A/View will complain about dependent objects as the expression makes the variable being dependent on the analysis.
    If you eval the whole expression you kind of "snapshot" the value and save it to the variable. It just holds the number and not an expression.
    Consequences: There's no dependency. The variable will not change when the analysis is updated and nor will A/view complain about deleting the variable.
     
     
Reply
  • Something in this direction would do the job (not tested; minor tweaking may be required):
    var set var=OneGTimeValue real_value=(eval(VALI(db_default(.system_defaults,"analysis").MyResult.TIME.values,2.5)))
     
    Other than that I'd usually tend to work with macros instead of command files.
    In your case you'd introduce a macro with
    $analysis:t=analysis
    ....
    var set var=$_self.OneGTimeValue real_value=(eval(VALI($analysis.MyResult.TIME.values,2.5)))
     
    This makes the syntax so much easier to write and to understand.
     
    The culprit is that you still need a command file that reads the macro and calls it like
    my_macro analysis=(eval(db_default(.system_defaults,"analysis")))
     
    Concerning the eval:
    if you use
    var set var=$_self.OneGTimeValue real_value=(VALI($analysis.MyResult.TIME.values,2.5))
    then you created a variable OneGTimeValue that is dependent on the analysis.
    If you re-run the analysis, the variable will automatically change. If try to delete the variable, A/View will complain about dependent objects as the expression makes the variable being dependent on the analysis.
    If you eval the whole expression you kind of "snapshot" the value and save it to the variable. It just holds the number and not an expression.
    Consequences: There's no dependency. The variable will not change when the analysis is updated and nor will A/view complain about deleting the variable.
     
     
Children
No Data