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
	}
}