3.4.6 Programming Control on Graph Object
Version Info
Minimum Origin Version Required: Origin8 SR0
Programming Control on Line
void AddLine()
{
GraphLayer gl = Project.ActiveLayer();
if( gl )
{
// add vertical line and set position
GraphObject goVLine = gl.CreateGraphObject(GROT_LINE);
goVLine.SetName("vline");
goVLine.X = gl.X.From + (gl.X.To - gl.X.From) / 2; // set the init position of vertical line
// set direction, script
string strScript = "type -a " + " \"X = $(vline.X)\" "; // set this script, moving vertical line will print out X pos to Command window.
SetLineFormat(goVLine, LN_VERTICAL, strScript, GRCT_MOVE);
// add horizontal line and set position
GraphObject goHLine = gl.CreateGraphObject(GROT_LINE);
goHLine.SetName("hline");
goHLine.Y = gl.Y.From + (gl.Y.To - gl.Y.From) / 2; // set the init position of horizontal line
// set direction, script
strScript = "type -a " + " \"Y = $(hline.Y)\" "; // set this script, moving horizontal line will print out Y pos to Command window.
SetLineFormat(goHLine, LN_HORIZONTAL, strScript, GRCT_MOVE);
}
}
// set line object properties, script, format, color, width, attach mode, direction...
void SetLineFormat(GraphObject& goLine, int nDirection, string strScript, int nExecMode)
{
goLine.Attach = 2;// 2, layer and scale
Tree tr;
tr.Root.Span.nVal = 1; // 1 to span over the whole layer
tr.Root.Direction.nVal = nDirection; // vertical or horizontal
tr.Root.Color.nVal = SYSCOLOR_RED;
tr.Root.Width.dVal = 3;
tr.Root.Event.nVal = nExecMode;
tr.Root.Script.strVal = strScript; // set script, run it after the Event specified by nExecMode
if( 0 == goLine.UpdateThemeIDs(tr.Root) ) // 0 means no error
{
bool bRet = goLine.ApplyFormat(tr, true, true); // return true if applied format successfully
}
}
|