Hi Karam, You need to re-evaluate the expressions. Something like this magic should do the job: procedure (abReadStuff(historyName @optional (session axlGetWindowSession ())) let ((resDB testTable testExprTable hist sdb sevSess asiSess expr name) sdb= axlGetMainSetupDB (session) hist= axlGetHistoryEntry (sdb historyName) testTable= makeTable ( "test" nil ) resDB= axlReadHistoryResDB (historyName) foreach (point resDB->points() foreach (corner point->corners() printf ( "CORNER: %L\n" corner->name) foreach (test corner->tests() printf ( "TEST: %L\n" test->name) ;---------------------------------------------------- ; first time we come across the test, record all the ; expressions from the info recorded in that history ; in a table to make them easier to find ;---------------------------------------------------- unless (testTable[test->name] testExprTable= makeTable ( "testExpr" nil ) testTable[test->name]=testExprTable sevSess=axlGetToolSession (session test->name ?history hist) asiSess=sevEnvironment ( sevSess ) foreach (out asiGetOutputList ( asiSess ) when (out->expression name=out->name || sprintf ( nil "%L" out->expression) testExprTable[name]=out->expression ) ) ) ;---------------------------------------------------- ; Now iterate over the outputs and for "wave" expressions ; open the results for that specific point, pull out the ; expression, and evaluate it ;---------------------------------------------------- foreach (output test->outputs() if (output->value == "wave" then expr=testTable[test->name][output->name] if (expr then openResults(test->resultsDir) errset ( plot( eval (expr)) ) else printf ( "Cannot find expression for output %L\n" output->name ) ) else printf ( " %s: %L\n" output->name|| "" output->value) ) ) ) ) ) ) ) Regards, Andrew.
↧