DIAdem Curve Related Scaling Not Transferred to Report

Updated Sep 4, 2025

Reported In

Software

  • DIAdem

Issue Details

  • I have configured individual scaling on my DIAdem VIEW 2D Axis System. When I click Transfer to Report, the 2D Axis System on the REPORT panel does not utilize the scaling. Why is this?
  • I am using Curve Related scaling in DIAdem VIEW. When I use the ScriptStart command to copy my 2D Axis System to a REPORT layout, the scaling resets to default. How can I prevent this?
  • When I configure Curve Related scaling (Image 1 below), the Transfer to Report button results in a report with completely different scaling (Image 2 below). Is there a way to successfully maintain scaling between the VIEW and REPORT panels?

 

Image 1: VIEW Panel Curve Related Scaling

 

Image 2: REPORT Panel Scaling

Solution

This behaviour is a limitation of DIAdem. The REPORT panel does not have a Curve Related scaling feature, and as a result, when the VIEW panel is transferred to the REPORT panel, the Curve Related scaling is not persisted.

To successfully apply the VIEW panel's Curve Related scaling to a 2D Axis System on the REPORT panel, the below options can be considered:

 

  • Use Subaxis in the REPORT panel.
    • This option allows you to configure a separate y-axis for each curve, ensuring that each axis has it's own scale.
    • Each curve is combined in a single 2D Axis System, which may become crowded depending on the quantity of data you wish to plot.
  • Use separate 2D Axis Systems in the REPORT panel.
    • This option allows for a separate scaling to be configured for the axis on each 2D Axis System.
    • Each curve is displayed in it's own 2D Axis System, keeping the layout neat and easy readable.
  • Either above mentioned methods programmatically.

 

Using Subaxis in the REPORT Panel

  1. Follow the instructions in Displaying Additional Y-Axes in 2D Axis Systems to add a Subaxis to a 2D Axis System.
  2. Right-click the 2D Axis System and select Settings...
  3. On the Curve List tab, ensure that each curve is assigned it's own Y-Axis.

 

 

  1. On the Axis Parameters tab, select Scaling under one of the Y-Axis (for example, Y1-Axis).
  2. Change the Scaling mode to Begin/end manual.
  3. Enter a custom Begin and End value for the Y-Axis. This should match the Curve Related scaling options set in the VIEW Panel.

 

 

  1. Repeat this process for each Y-Axis.
  2. Click OK to save changes and close the pop-up window.

 

Using Separate 2D Axis Systems

  1. In the DIAdem REPORT panel, create a new 2D Axis System for each curve plotted in the VIEW Panel.
  2. Right-click a 2D Axis System and select Settings...
  3. Ensure that a valid X-Channel and Y-Channel is configured.

 

 

  1. Click OK.
  2. On the Axis Parameters tab select Scaling under the Y1-Axis sub-tab.
  3. Set Scaling Mode to Begin/End Manual.
  4. Enter a value for Begin and End. These should match the values configured in the Curve Related scaling on the VIEW Panel.

 

 

  1. Click OK to save changes.
  2. Repeat steps 2-8 for each individual 2D Axis System on the REPORT layout.

 

Apply Scaling Programmatically

Regardless of whether you are using a REPORT with Subaxes or with multiple independent 2D Axis Systems, Curve Related scaling can be applied programmatically. To do this, it is necessary to:

  1. Identify the list of Y-axes used on the VIEW Panel.
  2. Store the start and end values for each Y-axis scale.
  3. Configure a 2D Axis System on the REPORT panel to allow for manual scale settings.
  4. Set the Y-axis start and end values from the previously stored values.

The code snippets below demonstrate how this can be done in Visual Basic Script (VBScript) or Python. The same snippets have been attached as script files.

 

Using VBScript

'-- Declare variables
Dim MyFilePath, MyActiveViewSheet, MyViewArea, MyCurveRelatedYStart, MyCurveRelatedYEnd, MyActiveReportSheet, MyReportArea, MyReportScaling

MyFilePath = "<Your Path>"
Call LogFileDel()

'--- Load your data file (change path)
Call DataFileLoad(MyFilePath & "<Your File Name>", "TDMS", "Load|ChnXYRelation")

'--- Load your VIEW layout (change file name)
Call View.LoadLayout(MyFilePath & "<Your VIEW Layout>.TDV")

'--- Load your REPORT layout (change file name)
Call Report.LoadLayout(MyFilePath & "<Your REPORT Layout>.TDR")

'--- Get Curve Related Scaling from VIEW Panel
Set MyActiveViewSheet = View.ActiveSheet
Set MyViewArea = MyActiveViewSheet.Areas.Item(1)

'-- Each Curve Related Scaling is an element in the YScalingList array. Find the Y scale start and end from there.
MyCurveRelatedYStart = MyViewArea.DisplayObj.YScalingList(1).Begin
MyCurveRelatedYEnd = MyViewArea.DisplayObj.YScalingList(1).End

Call LogFileWrite("Curve Related Scaling Start: " & Str(MyCurveRelatedYStart))
Call LogFileWrite("Curve Related Scaling End: " & Str(MyCurveRelatedYEnd))


'-- Apply Curve Related Scaling to a 2D Axis System in the REPORT
Set MyActiveReportSheet = Report.ActiveSheet
Set MyReportArea = MyActiveReportSheet.Objects.Item(1)

'-- Each Y axis is stored in a list. You may need to loop over this, depending on the number of Y-axes in your Axis System.
Set MyReportScaling = MyReportArea.YAxisList(1)

'-- Change scaling to allow manual assignment of start and end
MyReportScaling.Scaling.AutoScalingType =eAxisAutoScalingBeginAutomaticEndManual
MyReportScaling.Scaling.Begin = MyCurveRelatedYStart
MyReportScaling.Scaling.End = MyCurveRelatedYEnd

'-- Refresh Report
Report.Refresh()

 

Using Python

#-- Define path to files (change path)
myFilePath = "<Your File Path>"
dd.LogFileDel()

#--- Load your data file (change file name)
dd.DataFileLoad(myFilePath + "<Your File Name>", "TDMS", "Load|ChnXYRelation")

#--- Load your VIEW layout(change file name)
dd.View.LoadLayout(myFilePath + "<Your File Name>.TDV")

#--- Load your REPORT layout(change file name)
dd.Report.LoadLayout(myFilePath + "<Your File Name>.TDR")

#--- Get Curve Related Scaling from VIEW Panel
myActiveViewSheet = dd.View.ActiveSheet
myViewArea = myActiveViewSheet.Areas.Item(1)

#-- Each Curve Related Scaling is an element in the YScalingList array. Find the Y scale start and end from there.
myCurveRelatedYStart = myViewArea.DisplayObj.YScalingList(1).Begin
myCurveRelatedYEnd = myViewArea.DisplayObj.YScalingList(1).End

dd.LogFileWrite("Curve Related Scaling Start: " + str(myCurveRelatedYStart))
dd.LogFileWrite("Curve Related Scaling End: " + str(myCurveRelatedYEnd))


#-- Apply Curve Related Scaling to a 2D Axis System in the REPORT
myActiveReportSheet = dd.Report.ActiveSheet
myReportArea = myActiveReportSheet.Objects.Item(1)

#-- Each Y axis is stored in a list. You may need to loop over this, depending on the number of Y-axes in your Axis System.
myReportScaling = myReportArea.YAxisList(1)

#-- Change scaling to allow manual assignment of start and end
myReportScaling.Scaling.AutoScalingType = dd.eAxisAutoScalingBeginAutomaticEndManual
myReportScaling.Scaling.Begin = myCurveRelatedYStart
myReportScaling.Scaling.End = myCurveRelatedYEnd

#-- Refresh Report
dd.Report.Refresh()