12-08-2023 09:42 AM
Hello,
I'm trying to plot two channels against each other and for the below example I have Pressure vs Position. This data trace is over an hour long and I would like to be able to see the change in the plot over time. What I have done in the past is manually copy the channels and remove the extra data and plot that stripped down data. Then I could get the first and last 5% of the data with a couple extra chunks in the middle. I'm hoping there is a graph setting that I am missing to easily zoom in on certain time ranges since there might be dozens of sections I would like to inspect closer.
The closest I have gotten in REPORT is the 3D Curve. I can set the z-axis (time) to 450-500 seconds and I can see the pressure applications, but it still shows all of the other data below 450 and above 500 seconds. Ideally I want to be able to change the z-axis and limit what data is shown so that I can just view that snippet of data on the XY plot (Pressure vs Position).
All data is still shown in the XY view, even when I limit the z-axis unfortunately.
Thanks
Solved! Go to Solution.
12-12-2023 07:43 AM - edited 12-12-2023 07:59 AM
Hello TW_Test,
I can reproduce the behavior you describe with the current and all older DIAdem versions. It is a very old bug for which I will create an entry in the bug database.
Fortunately, there is a workaround for you :-). The 3D axis system supports curve transformation. With a curve transformation, you can transform the input channels while plotting the curve so that they only contain your desired range of values. The original channels remain unchanged.
With the following curve transformation, the manual scaling of the Z-axis is used to find the desired value range. The values of the X, Y and Z channels are then written to the output channels.
Sub On3DCurveManualScaling(TransformContext)
dim DataContext, ZBegin, ZEnd, ResultScope
set DataContext = TransformContext.DataContext
ZBegin = TransformContext.AxisSystem.AxisList.Z.Scaling.Begin
ZEnd = TransformContext.AxisSystem.AxisList.Z.Scaling.End
ResultScope = ChnEventDetectionWindow("", DataContext.ZChannelNumberIn, ZBegin, ZEnd, 0, 0)
call ChnEventCopyValues(, DataContext.XChannelNumberIn, , DataContext.XChannelNumberOut, ResultScope)
call ChnEventCopyValues(, DataContext.YChannelNumberIn, , DataContext.YChannelNumberOut, ResultScope)
call ChnEventCopyValues(, DataContext.ZChannelNumberIn, , DataContext.ZChannelNumberOut, ResultScope)
End Sub
To ensure that the curve transformation is found, you must register the script as an user command. This can be done via the "User Commands" dialog or by script command. The ScriptCmdAdd command do this. It is called in the attached start script (Report3DManualScaling.vbs) to show the curve transformation.
The layout I have prepared shows the complete curve at the top left.
At the bottom left, the 3D axis system is provided with a manual scaling of the Z-axis (1.0 - 2.5). => Bug
At the bottom right is the 3D axis system with the curve transformation, which has manually scaled axes to show the section of the curve.
At the top right, the curve transformation is also used, whereby the Z-axis is scaled manually and the other axes are scaled automatically.
12-12-2023 09:52 AM
Thank you AnJalpaka! That does exactly what I need it to. I have not used User Commands before but they seem powerful. I will look into them more.
I'm glad to hear that is a bug, because I couldn't figure out the benefit of showing all of the data at the limits of the z-axis in my case.
Thanks Again