3.5.1 Axes Formatting
Version Info
Minimum Origin Version Required: Origin 8 SR0
View Axis Format Tree
To view scale, tick, tick label relative format tree.
Compile, and then run this function in Commad window will output format tree.
void ViewAxisFormatTree()
{
GraphLayer gl = Project.ActiveLayer();
if(!gl)
return;
Axis aX = gl.XAxis;
if(!aX)
return;
Tree trFormat;
trFormat = aX.GetFormat(FPB_ALL, FOB_ALL, TRUE, TRUE);
out_tree(trFormat); // output format tree
string strSaveTo = GetAppPath(false) + "AxisFormatTree.xml";
if(trFormat.Save(strSaveTo))
out_str("Format Tree xml file saved to "+strSaveTo);
}
Turn On Top-Right Axes
void show_top_right_axes()
{
GraphLayer gl = Project.ActiveLayer();
if( !gl )
return;
Tree trFormat;
// first turn on top-right axes with a separate ApplyFormat call
trFormat.Root.Axes.X.Ticks.TopTicks.show.nVal = 1;
trFormat.Root.Axes.Y.Ticks.RightTicks.show.nVal = 1;
//assign node IDs to all nodes in trFormat, return number of errors
int nErr = gl.UpdateThemeIDs( trFormat.Root ) ;
if(0 != nErr)
out_str("Fail to Update Theme IDs, theme tree has wrong structure");
gl.ApplyFormat( trFormat, true, true, true );
// then change settings can be done after needed axes are already turned on
// Set the major minor ticks to In format for all XY axes
trFormat.Root.Axes.All.Ticks.All.Major.nVal = 1;
trFormat.Root.Axes.All.Ticks.All.Minor.nVal = 1;
// Set the color of axes
trFormat.Root.Axes.All.Ticks.All.Color.nVal = SYSCOLOR_BLUE;
nErr = gl.UpdateThemeIDs( trFormat.Root ) ;
if(0 != nErr)
out_str("Fail to Update Theme IDs, theme tree has wrong structure");
gl.ApplyFormat( trFormat, true, true, true );
}
Change Axes Titles
void ChangeAxisTitle()
{
GraphLayer gl = Project.ActiveLayer();
if( !gl )
return;
Tree trFormat;
//Text is an embedded data member of TreeNode class, but here Text is a subnode, use AddNode to specify it's a node but not a data member
trFormat.Root.Axes.X.Titles.BottomTitle.AddNode("Text").strVal = "MyX_Title";
trFormat.Root.Axes.Y.Titles.LeftTitle.AddNode("Text").strVal = "MyY_Title";
int nErr = gl.UpdateThemeIDs( trFormat.Root ); //assign node IDs to all nodes in trFormat, return 0 means success
if( 0 != nErr)
{
out_str("Exist invalid theme tree node in trFormat");
return;
}
bool bRepaint = true, bRelative = true, bUndo = true;
bool bRet = gl.ApplyFormat( trFormat, bRepaint, bRelative, bUndo ) ; //apply format to graph layer
if( !bRet )
out_str("Fail to update graph format!!!");
return;
}
Change Ticks Style
Example 1
void AccessMajorMinorTicks()
{
GraphLayer gl = Project.ActiveLayer();
if( !gl )
return;
//nVal, 0:In&Out, 1:In, 2:Out, 3:None;
Tree trFormat;
trFormat.Root.Axes.X.Ticks.BottomTicks.Minor.nVal = 1; //in
trFormat.Root.Axes.X.Ticks.BottomTicks.Major.nVal = 0; //int & out
trFormat.Root.Axes.Y.Ticks.LeftTicks.Minor.nVal = 1;//in
trFormat.Root.Axes.Y.Ticks.LeftTicks.Major.nVal = 2;//out
int nErr = gl.UpdateThemeIDs( trFormat.Root ) ;//assign node IDs to all nodes in trFormat, return number of errors
if(0 != nErr)
out_str("Fail to Update Theme IDs");
bool bRet = gl.ApplyFormat( trFormat, true, true, true ); //update graphlayer's format
if( !bRet )
out_str("Fail to update graph format!!!");
}
Example 2
void ChangeTickLabelColor()
{
GraphLayer gl = Project.ActiveLayer();
if( !gl )
return;
Axis aX = gl.XAxis;
if(!aX)
return;
Tree trXFormat;
trXFormat.Root.Labels.BottomLabels.Color.nVal = 1; // change color to Red
int nErr = aX.UpdateThemeIDs( trXFormat.Root ) ;//assign node IDs to all nodes in trFormat, return number of errors
if(0 != nErr)
out_str("Fail to Update Theme IDs");
bool bUndo = true;
bool bRet = aX.ApplyFormat( trXFormat, true, true, bUndo);
if( !bRet )
out_str("fail to apply format");
}
Modify Number of Ticks
void ModifyTicksNumber()
{
GraphLayer gl = Project.ActiveLayer();
if( !gl )
return;
Tree trFormat;
trFormat.Root.Axes.X.Scale.MinorTicksCount.nVal = 3; // auto add nodes and assign 3 to MinorTicksCount
if(0 == gl.UpdateThemeIDs( trFormat.Root ) )//assign node IDs to all nodes in trFormat
{
bool bRepaint = true;
bool bRelative = true;
bool bUndo = true;
bool bRet = gl.ApplyFormat(trFormat, bRepaint, bRelative, bUndo); //update graphlayer's format
if( !bRet )
out_str("Fail to update graph format!!!");
}
return;
}
Access Radar/Spider Chart Axes Format
To run the following example, please make a radar/spider chart activated first.
void AccessRadarSpiderChartAxesFormat()
{
GraphLayer gl = Project.ActiveLayer();
if(!gl)
return;
// * Get format tree of graph layer
Tree tr;
tr = gl.GetFormat(FPB_ALL, FOB_ALL, true, true); // Get format tree
// Output the format tree, and there will be a node named NewAxes
// This node includes the axis properties of the radar chart axes
//out_tree(tr);
// * Get number of axes
TreeNode tnAxes;
tnAxes = tr.Root.NewAxes; // Get the NewAxes node
int nCount = tnAxes.Children.Count(); // Number of axes
printf("The number of axes in the active radar chart is %d\n", nCount);
// * Loop all axes by using foreach
foreach(TreeNode childNode in tnAxes.Children)
{
out_str(childNode.tagName); // Output the tag name of the child node
}
// * Get/Set one axis' format
// If don't know what format is available,
// just output the format tree to view all properties,
// by using out_tree(tr) like above
// Here we are going to set the properties of 1st axis
TreeNode tnAxis1;
tnAxis1 = tnAxes.NewAxis1; // Get the first axis node
tnAxis1.Line.Color.nVal = 1; // Axis color = red
tnAxis1.Scale.From.dVal = 10.0; // Axis from = 10.0
tnAxis1.Scale.To.dVal = 30.0; // Axis to = 30.0
tnAxis1.Scale.IncrementBy.nVal = 0; // Major ticks by increment
tnAxis1.Scale.Value.dVal = 5.0; // Increment by 5.0
tnAxis1.Title.Color.nVal = 1; // Change the axis title color to red
if(0 == gl.UpdateThemeIDs(tr.Root))
if(!gl.ApplyFormat(tr, true, true))
out_str("Failed to apply format");
}
|