private void menuAddPhaseSpace_Click(object sender, EventArgs e) { if (dialogOpen.ShowDialog() == DialogResult.OK) { using (PhaseSpaceDataReader reader = new PhaseSpaceDataReader(dialogOpen.FileName)) { addPhaseSpace(reader); } } }
void openGeneralFile(string fileName) { string ext = Path.GetExtension(fileName); switch (ext.ToLower()) { case ".mdsx": case ".mdsb": case ".mdsx2": case ".mdsb2": if (askSaveMotionDataAndOK()) { openMotionData(fileName); } break; case ".trc": if (askSaveMotionDataAndOK()) { openTrcFile(fileName); } break; case ".csv": { DialogSimpleSelect dialog = new DialogSimpleSelect(string.Format("あいまいな拡張子を開く({0})", Path.GetFileName(fileName)), "PhaseSpace CSV ファイルを新規に開く", "PhaseSpace CSV ファイルを追加で開く", "Eye Sight CSV ファイルを追加で開く"); int index; if (dialog.ShowDialog(out index) == DialogResult.OK) { switch (index) { case 0: if (askSaveMotionDataAndOK()) { openPhaseSpaceCsvFile(fileName); } break; case 1: using (PhaseSpaceDataReader reader = new PhaseSpaceDataReader(fileName)) { addPhaseSpace(reader); } break; case 2: openEyeSight(fileName); break; } } } break; default: MessageBox.Show(string.Format("ファイルを開けません: {0}", fileName), this.Text); break; } }
private void loadPhaseSpace(PhaseSpaceDataReader reader) { WaitForForm waitForm = new WaitForForm(ctrl => { try { _dataSet.ClearFrame(); _dataSet.ClearObject(); Dictionary <int, uint> index2id = new Dictionary <int, uint>(); int count = 1; while (!reader.EndOfStream) { PhaseSpaceFrame inFrame = reader.ReadFrame(); MotionFrame outFrame = new MotionFrame(_dataSet, inFrame.Time); for (int i = 0; i < inFrame.Markers.Length; i++) { uint id; if (!index2id.TryGetValue(i, out id)) { MotionObjectInfo newInfo = new MotionObjectInfo(typeof(PointObject)); newInfo.Name = PathEx.CombineName("unnamed", (i + 1).ToString()); _dataSet.AddObject(newInfo); id = index2id[i] = newInfo.Id; } if (inFrame.Markers[i].Condition > 0) { outFrame[id] = new PointObject(new Vector3(inFrame.Markers[i].X, inFrame.Markers[i].Y, inFrame.Markers[i].Z)); } } _dataSet.AddFrame(outFrame); ctrl.ReportProgress(99 - 990000 / (count + 10000), string.Format("Load Frame: {0} ({1} sec)", count, inFrame.Time.ToString("0.00"))); count++; } ctrl.ReportProgress(100, string.Format("Done")); ctrl.DialogResult = DialogResult.OK; } catch (Exception) { _dataSet.ClearObject(); _dataSet.ClearFrame(); _dataSet.DoObjectInfoSetChanged(); _dataSet.DoFrameListChanged(); throw; } }); if (waitForm.ShowDialog() == DialogResult.OK) { _dataSet.DoObjectInfoSetChanged(); _dataSet.DoFrameListChanged(); } }
bool openPhaseSpaceCsvFile(string fileName) { if (fileName == null) { if (dialogOpen.ShowDialog() != DialogResult.OK) { return(false); } fileName = dialogOpen.FileName; } try { using (PhaseSpaceDataReader reader = new PhaseSpaceDataReader(fileName)) { loadPhaseSpace(reader); setSaveMotionDataFileName(fileName); _isOverWritable = false; TimeController.Singleton.SetVisibleTime(TimeController.Singleton.BeginTime, TimeController.Singleton.EndTime); return(true); } } catch (Exception ex) { ErrorLogger.Tell(ex, fileName + ": ファイルを開けませんでした"); return(false); } }
private void addPhaseSpace(PhaseSpaceDataReader reader) { WaitForForm waitForm = new WaitForForm(ctrl => { try { Dictionary <int, uint> index2id = new Dictionary <int, uint>(); int count = 1; int index = 0; PhaseSpaceFrame prevInFrame = new PhaseSpaceFrame(); bool first = true; Action <PhaseSpaceFrame, int> import = (inFrame, endIndex) => { for (; index < endIndex && index < _dataSet.FrameLength; index++) { MotionFrame frame = _dataSet.GetFrameByIndex(index); if (frame == null) { continue; } for (int i = 0; i < inFrame.Markers.Length; i++) { uint id; if (!index2id.TryGetValue(i, out id)) { MotionObjectInfo newInfo = new MotionObjectInfo(typeof(PointObject)); newInfo.Name = PathEx.CombineName("unnamed", (i + 1).ToString()); _dataSet.AddObject(newInfo); id = index2id[i] = newInfo.Id; } if (inFrame.Markers[i].Condition > 0) { frame[id] = new PointObject(new Vector3(inFrame.Markers[i].X, inFrame.Markers[i].Y, inFrame.Markers[i].Z)); } } } }; while (!reader.EndOfStream) { PhaseSpaceFrame inFrame = reader.ReadFrame(); int inIndex = _dataSet.GetFrameIndexAt(inFrame.Time); MotionFrame tmp = _dataSet.GetFrameByIndex(inIndex); if (tmp == null || tmp.Time == inFrame.Time) { inIndex++; } if (first) { first = false; } else { import(prevInFrame, inIndex); } prevInFrame = inFrame; ctrl.ReportProgress(99 - 990000 / (count + 10000), string.Format("Load Frame Data: {0} ({1} sec)", count, inFrame.Time.ToString("0.00"))); count++; } if (!first) { import(prevInFrame, _dataSet.FrameLength); } ctrl.ReportProgress(100, string.Format("Done")); ctrl.DialogResult = DialogResult.OK; } catch (Exception) { _dataSet.ClearObject(); _dataSet.ClearFrame(); _dataSet.DoObjectInfoSetChanged(); _dataSet.DoFrameListChanged(); throw; } }); if (waitForm.ShowDialog() == DialogResult.OK) { _dataSet.DoObjectInfoSetChanged(); _dataSet.DoFrameListChanged(); } }