I'm trying to write a generic procedure to plot waveform that takes the plot macro parameters as procedure input arguments.
Basically, I want something like this :
procedure( my_procedure( signal signal_name strip ...stuff... )
plot( sprintf( "%s ?expr '("%s") ?strip "%d" " signal signal_name strip ) )
It seems like I cannot plot something out of a sprintf because sprintf does not return an object, right ?
Is there any way to get that working ?
Well, sprintf returns a string, so you can't just pass that to plot. In general trying to do run-time evaluation of a macro like plot is going to be problematic, so I'd suggest that you do:
procedure(my_procedure(signal signal_name strip) awvPlotWaveform(currentWindow() || newWindow() list(signal) ?expr list(signal_name) ?stripNumber list(strip)) ; hardCopy stuff)
So use the underlying function.
Thanks you very much for your answer. It seems to be working !
Do you have any documentation on the awvPlotWaveform function ? I can't find anything in the manual.
What is the difference with the Plot function ?
It's documented. In IC615 it's in <ICinstDir>/doc/vivaxlskill/vivaxlskill.pdf (and cdnshelp would find it). In IC5141 it's in <ICinstDir>/doc/skartistref/skartistref.pdf (I searched in cdsdoc, and found it).
The plot() function has some convient options - it will create a window if one doesn't exist already, and you can just do plot(sig1 sig2 sig3) for example - the awvPlotWaveform() is a bit more verbose.
Alright. Does it mean that the plot() macro is kind of wrapper for awvPlotWaveform() function ?
I will look at the documentation tomorrow - I only looked at OCEAN Refence and SKILL Language Reference and SKILL User's Guide maual. Thanks a lot for your help.
Effectively, yes. It's actually a wrapper around either awvSimplePlotWaveform or awvPlotExpression - which are all very similar to awvPlotWaveform.