It sets a matrix data into the data referred to by the DataRange object.
BOOL SetData( const matrixbase & m, int index = 0, BOOL bUndo = FALSE, DWORD dwDRSOpts = 0 )
BOOL SetData( vectorbase & pv, BOOL bUndo = FALSE, int index = 0, DWORD dwDRSOpts = 0 )
BOOL SetData( vector * pvY, vector * pvX, BOOL bUndo = FALSE, int index = 0 )
BOOL SetData( vector * pvZ, vector * pvY, vector * pvX, BOOL bUndo = FALSE, int index = 0 )
TRUE if success.
True if Successful
True if Successful
True if Successful
EX1
// For this example to run, have two matrices, MBook1 and MBook2, and put some data // into MBook1. // The sample will transfer the data from MBook1 to MBook2. void DataRange_SetData_Ex1() { Matrix mat("MBook1"); if (!mat) return; string strRangeSet = "[MBook2]MSheet1!1"; DataRange drSet; int nn = drSet.AddInput(strRangeSet); if (nn < 0) return; // failed. Perhaps Matrix2 does not exist. BOOL nRet = drSet.SetData(mat); out_int("nRet = ", nRet); return; }
EX2
// The data of the worksheet's first column will multiply by 10 void DataRange_SetData_Ex2(int nXCol = 0) { Worksheet wks; wks.Create(); if( wks ) { while(wks.Columns(0)) wks.DeleteCol(0); wks.AddCol("A"); double rr; for (int i=0;i<10;i++) { rr=rnd(); wks.SetCell(i,0,rr*100); } DataRange dr; dr.Add("X", wks, 0, nXCol, -1, nXCol); vector vX; DWORD dwPlotID; dr.GetData(DRR_GET_MISSING | DRR_NO_FACTORS, 0, &dwPlotID, NULL, &vX); vX *= 10.0; dr.SetData(vX); // This SetData takes a reference to a vector not a pointer to vector } }
EX3
// This example assumes a worksheet with two columns is active. //Fill Col(A) and Col(B) of the worksheet with data. void DataRange_SetData_Ex3(int nXCol = 0, int nYCol = 1) { Worksheet wks = Project.ActiveLayer(); if( !wks ) return; vector vX, vY; vX.Data(1, 10, 1); vY = vX + 10; DataRange dr; dr.Add(wks, nXCol, "X"); dr.Add(wks, nYCol, "Y"); dr.SetData(&vY, &vX); }
EX4
// This example will copy the data of all the three columns' even row to another columns void DataRange_SetData_Ex4(int nXCol = 0, int nYCol = 1, int nZCol = 2) { Worksheet wks; wks.Create(); if( wks ) { while(wks.Columns(0)) wks.DeleteCol(0); wks.AddCol("A"); wks.AddCol("B"); wks.AddCol("C"); double rr; for(int j=0;j<3;j++) { for (int i=0;i<10;i++) { rr=rnd(); wks.SetCell(i,j,rr*100); } } DataRange drIn; drIn.Add("X", wks, 0, nXCol, -1, nXCol); drIn.Add("Y", wks, 0, nYCol, -1, nYCol); drIn.Add("Z", wks, 0, nZCol, -1, nZCol); vector vX, vY, vZ; DWORD dwRules = DRR_GET_MISSING | DRR_GET_Z_DEPENDENT | DRR_NO_FACTORS; DWORD dwPlotID; // Use this overloaded version of GetData to find out how many rows of XYZ data drIn.GetData(dwRules, 0, &dwPlotID, NULL, &vZ, &vX, NULL, NULL, NULL, NULL, NULL, NULL, &vY); int iSizeIn = vX.GetSize(); int iSizeOut = iSizeIn/2 + 1; vector<int> vIndicesIn; vIndicesIn.Data(0, iSizeIn - 1, 2); // Use this overloaded version of GetData with vIndicesIn to extract odd rows to new columns drIn.GetData(dwRules, 0, vIndicesIn, vZ, vX, vY); string strColDesigs = wks.GetColDesignations(); nXCol = wks.AddCol(); nYCol = wks.AddCol(); nZCol = wks.AddCol(); strColDesigs += "XYZ"; wks.SetColDesignations(strColDesigs); DataRange drOut; drOut.Add("X", wks, 0, nXCol, -1, nXCol); drOut.Add("Y", wks, 0, nYCol, -1, nYCol); drOut.Add("Z", wks, 0, nZCol, -1, nZCol); drOut.SetData(&vZ, &vY, &vX); } }
Curve::Curve,curvebase::AttachX,DataRange::GetData,DataRange::GetMaskedData,DataRange::GetMissingData,DataRange::GetNumData
origin.h