private void checkIfSimilarToBtn_Click(object sender, EventArgs e) { if (currentlyLoadedModel == null) { MessageBox.Show("Please load a model first", "Embedded Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } StringBuilder filterStr = new StringBuilder(); string allFilter = "All Supported Formats|"; foreach (KeyValuePair <string, ModelInstantationHelper> kvp in modelImporters) { filterStr.Append("|" + kvp.Value.ModelInfo.TypeName + "|*." + kvp.Key); allFilter += "*." + kvp.Key + ";"; } allFilter = allFilter.Substring(0, allFilter.Length - 1); OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = allFilter + filterStr.ToString(); if (ofd.ShowDialog() != DialogResult.OK) { return; } ModelInstantationHelper mih = modelImporters[Path.GetExtension(ofd.FileName).Substring(1)]; Model imported = mih.ModelImporter.DoImportModel(ofd.FileName); if (imported == null) { return; } WaveformID wave = currentlyLoadedModel.GetWaveID(); WaveformID testWave = imported.GetWaveID(); double similarity = wave.CompareTo(testWave); string similarityString = "NOT Similar"; if (similarity == 0.0) { similarityString = "Identical"; } else if (similarity < 10.0) { similarityString = "Almost identical"; } else if (similarity < 500.0) { similarityString = "Very similar"; } else if (similarity < 1500.0) { similarityString = "Similar"; } MessageBox.Show("Models are " + similarityString + "\n\nDifference index = " + similarity); }
private void loadModelBtn_Click(object sender, EventArgs e) { StringBuilder filterStr = new StringBuilder(); string allFilter = "All Supported Formats|"; foreach (KeyValuePair <string, ModelInstantationHelper> kvp in modelImporters) { filterStr.Append("|" + kvp.Value.ModelInfo.TypeName + "|*." + kvp.Key); allFilter += "*." + kvp.Key + ";"; } allFilter = allFilter.Substring(0, allFilter.Length - 1); OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = allFilter + filterStr.ToString(); if (ofd.ShowDialog() != DialogResult.OK) { return; } ModelInstantationHelper mih = modelImporters[Path.GetExtension(ofd.FileName).Substring(1)]; Model imported = mih.ModelImporter.DoImportModel(ofd.FileName); if (imported == null) { return; } if (currentlyLoadedModel != null) { currentlyLoadedModel.Dispose(); } WaveformID lastWave = currentlyLoadedModel != null?currentlyLoadedModel.GetWaveID() : null; currentlyLoadedModel = imported; propertyGrid.SelectedObject = new DictionaryPropertyGridAdapter(currentlyLoadedModel.Metadata); dmwglControl.UpdateMatrices(); WaveformID wave = currentlyLoadedModel.GetWaveID(); waveformChart.Series[0].Points.Clear(); waveformChart.Series[1].Points.Clear(); waveformChart.Series[2].Points.Clear(); for (int i = 0; i < wave.XWave.Length; ++i) { waveformChart.Series[0].Points.Add(wave.XWave[i]); waveformChart.Series[1].Points.Add(wave.YWave[i]); waveformChart.Series[2].Points.Add(wave.ZWave[i]); } if (lastWave != null) { double similarity = wave.CompareTo(lastWave); string similarityString = "NOT Similar"; if (similarity < 1.0) { similarityString = "Identical"; } else if (similarity < 10.0) { similarityString = "Almost identical"; } else if (similarity < 500.0) { similarityString = "Very similar"; } else if (similarity < 1500.0) { similarityString = "Similar"; } MessageBox.Show("Models are " + similarityString + "\n\nDifference index = " + similarity); } }