/// <summary> /// データをセットする /// </summary> /// <param name="dataList">データ</param> public void SetData(SampleData[] dataList) { if (this.InvokeRequired) { this.BeginInvoke((MethodInvoker)delegate() { SetData(dataList); }); return; } try { if (dataList == null) { throw new ArgumentNullException("dataList"); } var graphData = new List<double[]>(); var data = dataList.Last(); var count = 0; foreach (ChannelData ch in data.ChannelDatas) if (ch != null && ch.Position != 0 && ch.DataValues != null) { count = ((Value_Mode2)ch.DataValues).Values.Length; break; } for (int i = 0; i < count; i++) { var chData = new double[11]; chData[0] = i; for (int j = 1; j < 11; j++) { if (data.ChannelDatas[j] != null) { #if TEST_INCLINE_3D if (j == 3) chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i]; else if (j == 1) chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i] + 500; else if (j == 2) chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i] - 100; else chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i]; #else chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i]; //if (j == 2) // chData[j] += 700; //else if (j == 1) // chData[j] += 100; #endif //if (j != 11 && this.analyzeData.ChannelsSetting.ChannelSettingList[j - 1].ChKind == ChannelKindType.R) // chData[j] *= (double)SystemSetting.SystemConfig.ValueRate_3D_R; } } graphData.Add(chData); } if (graphData.Count > 0) { this.graph3DViewer.ReadData(graphData); } } catch (Exception ex) { ShowErrorMessage(ex); } }
/// <summary> /// 測定データをセットする(測定時用) /// </summary> /// <param name="dataList">測定データ</param> /// <param name="minValueX">X軸最小値</param> /// <remarks>Called from Measurement</remarks> public void SetMeasureData(SampleData[] dataList, decimal minValueX) { //if (this.InvokeRequired) //{ // this.BeginInvoke((MethodInvoker)delegate() { SetMeasureData(dataList, minValueX); }); // return; //} try { if (dataList == null) { throw new ArgumentNullException("dataList"); } // グラフ未設定の場合は設定する if (this.measSetting == null) { SetGraphSetting(); } var graphData = new List<double[]>(); var count = 0; if (this.measSetting.Mode == 2) { var data = dataList.Last(); foreach (ChannelData ch in data.ChannelDatas) { if (ch != null && ch.Position != 0 && ch.DataValues != null) { count = ((Value_Mode2)ch.DataValues).Values.Length; break; } } SetMode2GraphInfo(count, 1); var inc = this.GraphInfo.IncrementX; var chSetting = (this.IsMeasure) ? SystemSetting.ChannelsSetting : this.AnalyzeData.ChannelsSetting; if (chSetting != null && chSetting.ChannelMeasSetting != null) { minValueX = chSetting.ChannelMeasSetting.Degree1; } ////間引きステップ ////500サンプルよりも多い場合は間引きし、500サンプルとなるようにする。 //double maxdatasize = 500d; //double stepoffset = (double)count / maxdatasize; //double stepcount = 0d; //if (stepoffset < 1) // stepoffset = 1; ///set maxdata size and shotcount (in this case maxdatasize 500 same as stepoffset) //SetMode2GraphInfo((int)maxdatasize, 1); //var inc = this.GraphInfo.IncrementX; //var counter = 0; //var chSetting = (this.IsMeasure) ? SystemSetting.ChannelsSetting : this.AnalyzeData.ChannelsSetting; //if (chSetting != null && chSetting.ChannelMeasSetting != null) //{ // minValueX = chSetting.ChannelMeasSetting.Degree1; //} //for (int i = 0; i < count; i += (int)stepcount) for (int i = 0; i < count; i++) { var chData = new double[11]; //chData[0] = minValueX + (counter * inc); chData[0] = (double)minValueX + (i * inc); if (this.chIndexList != null) { for (int j = 0; j < 10; j++) { if (this.chIndexList[j] != null) { if (this.chIndexList[j].Index >= 0) { var t = data.ChannelDatas[this.chIndexList[j].Index].DataValues.GetType(); if (t == typeof(Value_Standard)) { // 回転数 chData[j + 1] = (double)((Value_Standard)data.ChannelDatas[this.chIndexList[j].Index].DataValues).Value; } else if (t == typeof(Value_Mode2)) { chData[j + 1] = (double)((Value_Mode2)data.ChannelDatas[this.chIndexList[j].Index].DataValues).Values[i]; } } } } graphData.Add(chData); } ////次回ステップ数を算出 //stepcount = (stepcount - Math.Floor(stepcount)) + stepoffset; //counter++; } } else { ////間引きステップ ////1000サンプルよりも多い場合は間引きし、500サンプルとなるようにする。 //double stepoffset = (double)count / 500d; //double stepcount = 0d; //if (stepoffset < 1) // stepoffset = 1; count = dataList.Length; //for (int i = 0; i < count; i += (int)stepcount) for (int i = 0; i < count; i++) { var chData = new double[11]; if (this.measSetting.Mode == 1) { chData[0] = (double)(minValueX + i + 1); } else if (this.measSetting.Mode == 3) { // Mode3は時間をmsで算出する。[us]の場合もあるので,小数点以下も有効とする。 chData[0] = (double)((double)(minValueX + i) * (this.measSetting.SamplingTiming_Mode3 / 1000.0)); } for (int j = 0; j < chIndexList.Length; j++) { if (this.chIndexList[j].Index >= 0) { var t = dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues.GetType(); if (t == typeof(Value_Standard)) { chData[j + 1] = (double)((Value_Standard)dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues).Value; } else if (t == typeof(Value_MaxMin)) { if (this.chIndexList[j].IsMaxCh) { chData[j + 1] = (double)((Value_MaxMin)dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues).MaxValue; } else { chData[j + 1] = (double)((Value_MaxMin)dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues).MinValue; } } } } graphData.Add(chData); //次回ステップ数を算出 //stepcount = (stepcount - Math.Floor(stepcount)) + stepoffset; } } if (graphData.Count > 0) { if (this.InvokeRequired) { this.BeginInvoke((MethodInvoker)delegate() { this.graphViewer.ReadData(graphData); }); this.BeginInvoke((MethodInvoker)delegate() { this.graphViewer.CreateGraph(); }); } else { this.graphViewer.ReadData(graphData); this.graphViewer.CreateGraph(); } } } catch (Exception ex) { ShowErrorMessage(ex); } }
/// <summary> /// 測定データをセットする /// </summary> /// <param name="dataList">測定データ</param> public void SetMeasureData(SampleData[] dataList) { if (this.InvokeRequired) { this.BeginInvoke((MethodInvoker)delegate() { SetMeasureData(dataList); }); return; } try { if (dataList == null) { throw new ArgumentNullException("dataList"); } var data = dataList.Last(); SetData(data, 0); } catch (Exception ex) { ShowErrorMessage(ex); } }