3.8.4 Accessing Project Variables
Get Project Variables
Minimum Origin Version Required: Origin 8.1 SR0
This example is used to get the variables in the project, including system variable, project variable and section variable.
Before running this example, it will be better to restart Origin and then run the following script to generate some variables.
doc -n; // create a new project
fname$ = system.path.program$ + "Samples\Curve Fitting\Gaussian.dat"; // data path, project variable
impASC; // import data
int nCols = wks.nCols; // number of columns, section variable
nRows = wks.nRows; // number of rows, project variable
int nWidth = wks.colWidth; // column's width, section variable
string strName = wks.Name$; // worksheet name, section variable
strLongName$ = col(a)[L]$; // long name of column A, project variable
double dValue = col(c)[1]; // value in first cell of column C, section variable
dCell2 = col(c)[2]; // value in second cell of column C, project variable
const cPI = pi; // const, PI, section variable
void get_project_variables()
{
vector<string> vsProStrVarNames; // project string variable name
vector<string> vsProStrVarValues; // value of project string variable
// get project string variables
int nProStrVarCount = Project.GetLTStrVars(vsProStrVarNames, vsProStrVarValues, true);
// print total number of project string variables
printf("There are %d project string variables in this project. They are:\n", nProStrVarCount);
// print all project string variables
for(int iProStrVar=0; iProStrVar<nProStrVarCount; iProStrVar++)
{
printf("\tName: %s\tValue: %s\n", vsProStrVarNames[iProStrVar], vsProStrVarValues[iProStrVar]);
}
// system & project numeric variables
vector<string> vsProVarNames; // name
vector vsProVarValues; // value
vector<int> vsProVarTypes; // type
// get system & project numeric variables
int nProVarCount = Project.GetLTVars(vsProVarNames, vsProVarValues, false, vsProVarTypes);
// print the total number of system & project numeric variables
printf("There are %d system & project numeric variables in this project. They are:\n", nProVarCount);
// print all system & project numeric variables
for(int iProVar=0; iProVar<nProVarCount; iProVar++)
{
printf("\tName: %s\tValue: %f\tType: %d\n", vsProVarNames[iProVar],
vsProVarValues[iProVar], vsProVarTypes[iProVar]);
}
// section variables
vector<string> vsSecVarNames; // name
vector<string> vsSecVarValues; // value
// get all section variables
int nSecVarCount = Project.GetSessionLTVars(vsSecVarNames, vsSecVarValues, LTVAR_TYPE_VAR_ALL);
// print total number of section variable
printf("There are %d section variables in this project. They are:\n", nSecVarCount);
// print all section variables
for(int iSecVar=0; iSecVar<nSecVarCount; iSecVar++)
{
printf("\tName: %s\tValue: %s\n", vsSecVarNames[iSecVar], vsSecVarValues[iSecVar]);
}
// section integer variables
vector<string> vsSecIntVarNames; // name
vector<string> vsSecIntVarValues; // value
// get all section integer variables
int nSecIntVarCount = Project.GetSessionLTVars(vsSecIntVarNames, vsSecIntVarValues, LTVAR_TYPE_VAR_INT);
// print total number of section integer variable
printf("There are %d section integer variables in this project. They are:\n", nSecIntVarCount);
// print all section integer variables
for(int iSecIntVar=0; iSecIntVar<nSecIntVarCount; iSecIntVar++)
{
printf("\tName: %s\tValue: %s\n", vsSecIntVarNames[iSecIntVar], vsSecIntVarValues[iSecIntVar]);
}
}
Accessing Tree Variable
Minimum Origin Version Required: Origin 8 SR1
This example is used to add and get tree variables in the project. Firstly, loop over all workbooks in the project and create a tree node for each workbook. Then add this tree variable to the project. Finally, get all the tree variables in the project and print the tree information.
void access_tree_variable()
{
string strTreeName = "FilesInfo"; // tree name
Tree trFiles;
trFiles.SetAttribute(STR_LABEL_ATTRIB, strTreeName);
// loop all worksheet pages in the project for creating tree
foreach(WorksheetPage wp in Project.WorksheetPages)
{
string strFileName;
strFileName = wp.GetName(); // get name
TreeNode tnFileInfo;
// each file will be a tree node
tnFileInfo = trFiles.AddTextNode(strFileName, strFileName);
PageSystemInfo psi; // page information
if(wp.GetPageSystemInfo(& psi)) // get page information
{
// set page information to tree node
tnFileInfo.AddTextNode(get_date_str(psi.dCreated), "CreateTime");
tnFileInfo.AddTextNode(get_date_str(psi.dModified), "ModifiedTime");
tnFileInfo.AddNumericNode((int)psi.nSize, "Size");
tnFileInfo.AddNumericNode(psi.nDependents, "Dependents");
}
}
// add tree variable to project
int nTree = Project.AddTree(strTreeName, trFiles);
vector<string> vsTreeNames;
// get all tree names in the project
int nElement = Project.GetTreeNames(vsTreeNames);
// loop to get all tree variables in the project
for(int iTree=0; iTree<vsTreeNames.GetSize(); iTree++)
{
TreeNode tnGet;
// get the tree variable
BOOL bRet = Project.GetTree(vsTreeNames[iTree], tnGet);
if((bRet!=0) && (tnGet.IsValid()))
out_tree(tnGet); // output the tree
else
out_str("Error!\n");
}
}
|