private void parseResults(String fullname, AbstractFEMResults femresults) { ProjectManager pm = ProjectManager.GetInstance(); if (femresults == null) { return; } IDictionary <String, object> dicts = femresults.BuildResultsForDisplay(); foreach (String name in dicts.Keys) { object value = dicts[name]; ResultItem item = new ResultItem(); item.femName = name; item.group = fullname; if (value is ListPointD) { item.femValue = ((ListPointD)value).ToZedGraphPointPairList(); } else { item.femValue = value; } results.Add(item); } }
public void refreshUI() { treeView1.Nodes.Clear(); ProjectManager pm = ProjectManager.GetInstance(); foreach (String path in pm.Components.Keys) { String[] ss = path.Split('.', '\\'); TreeNodeCollection nodes = treeView1.Nodes;//first lv collection nodes for (int i = 0; i < ss.Length; i++) { if (nodes.ContainsKey(ss[i])) { nodes = treeView1.Nodes[ss[i]].Nodes;//get next level nodes collections } else { nodes = nodes.Add(ss[i], ss[i]).Nodes;//add ss[i] to itself and get its collection (of couse empty) } } } treeView1.ExpandAll(); if (treeView1.Nodes.Count > 0) { treeView1.SelectedNode = treeView1.Nodes[0];//select the first } }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "*.prm|*.prm"; dialog.FilterIndex = 0; dialog.RestoreDirectory = true; DialogResult result = dialog.ShowDialog(); if (result != DialogResult.OK) { return; } String fn = dialog.FileName; bool b = ProjectManager.GetInstance().openProject(dialog.FileName); if (!b) { MessageBox.Show("Error when open " + dialog.FileName); } //refresh params (need to be done here because nowhere it is called) if (form_motorParams != null && form_motorParams.Visible) { form_motorParams.refreshUI(); } }
private void contextMenu_ChangeMotorType_ChildItemClicked(object sender, EventArgs e) { var clickedItem = sender as ToolStripItem; var pm = ProjectManager.GetInstance(); var motorType = clickedItem.Tag as Type; pm.changeMotorType(motorType); refreshUI(); }
private void PreviewWindow_Paint(object sender, PaintEventArgs e) { if (IsProjectMotor) { Motor = ProjectManager.GetInstance().Motor; } label1.Text = String.Format("{0:F1} : {1:F1} @ {2:F1}", Ox, Oy, scale); Motor.DrawPreview(e.Graphics, Ox, Oy, scale); }
private void setThisAsCurrentSetOfParamsToolStripMenuItem_Click(object sender, EventArgs e) { //if (MessageBox.Show("Set this as current motor?", "Ask", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK) { ProjectManager pm = ProjectManager.GetInstance(); var row = dgv_params.SelectedRows[0]; String md5 = row.Cells[ParamSweeper.COL_MD5].Value.ToString(); sweeper.applyParametersCollectionVariant(md5, pm.MotorParams); pm.InvalidateParams(); } }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { TreeView tv = (TreeView)sender; ProjectManager pm = ProjectManager.GetInstance(); currentPath = e.Node.FullPath; showResultsInDGV(currentPath); this.Text = currentPath; }
private void initialize() { ProjectManager pm = ProjectManager.GetInstance(); sweeper = pm.pSweeper;//sweeper get from project manager comboBox_paramsName.Items.AddRange(sweeper.getParameterNames()); showParamsInDGV(sweeper.ParamsTable); showResultsInDGV(sweeper.ResultsTable); checkBox_enableFem.Checked = sweeper.EnableFEMAnalysis; }
public void refreshUI() { ProjectManager pm = ProjectManager.GetInstance(); treeView1.Nodes.Clear(); results = new List <ResultItem>(); treeView1.Nodes.Add("Motor"); parseMotorDerivedParams("Motor"); treeView1.Nodes.Add("Static"); AbstractAnalyticalAnalyser aa = pm.analyticalAnalyser; AbstractStaticAnalyser sa = pm.staticAnalyser; parseComparisonResults("Static", aa == null ? null : aa.getResults(), sa == null ? null : sa.getResults()); foreach (String name in pm.GetAnalysisResultsNames()) { // add nodes to treeview of results String[] ss = name.Split('.', '\\'); TreeNodeCollection nodes = treeView1.Nodes;//first lv collection nodes for (int i = 0; i < ss.Length; i++) { if (nodes.ContainsKey(ss[i])) { nodes = treeView1.Nodes[ss[i]].Nodes;//get next level nodes collections } else { nodes = nodes.Add(ss[i], ss[i]).Nodes;//add ss[i] to itself and get its collection (of couse empty) } } // now parse the results data object result = pm.GetAnalysisResults(name); if (result == null) { continue; } if (result is AbstractFEMResults) { parseResults(name, (AbstractFEMResults)result); } } treeView1.ExpandAll(); showResultsInDGV(currentPath); }
private void comboBox_paramsName_SelectedIndexChanged(object sender, EventArgs e) { String item = (String)comboBox_paramsName.SelectedItem; ProjectManager pm = ProjectManager.GetInstance(); foreach (Parameter p in pm.MotorParams) { if (p.fullname == item) { tb_value.Text = p.value.ToString(); break; } } }
private void parseMotorDerivedParams(string group) { ProjectManager pm = ProjectManager.GetInstance(); var dict = pm.Motor.GetDerivedParameters(); foreach (String name in dict.Keys) { object value = dict[name]; ResultItem item = new ResultItem(); item.aName = name; item.aValue = value; item.group = group; results.Add(item); } }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { TreeView tv = (TreeView)sender; ProjectManager pm = ProjectManager.GetInstance(); String item = e.Node.FullPath; ParametersCollection pc = new ParametersCollection(); pc.AddRange(pm.MotorParams.Where(pi => pi.group == item)); showInputParamsInDGV(dgv_motorParams, pc); currentPath = e.Node.FullPath; currentNode = e.Node; this.Text = currentPath; }
private void initMenu() { var pm = ProjectManager.GetInstance(); Type[] listmotorTypes = pm.ListMotorType; newToolStripMenuItem.DropDownItems.Clear(); foreach (Type motortype in listmotorTypes) { ToolStripMenuItem item = new ToolStripMenuItem(); item.Name = motortype.Name; item.Text = motortype.Name; item.Tag = motortype; item.Click += newToolStripMenuItem_ChildItem_Click; newToolStripMenuItem.DropDownItems.Add(item); } }
/// <summary> /// Init GA, and start new thread to run optimization /// </summary> private void startOptimization() { if (optimizationIsRunning) { return; } // reset results window if (optResultsWindow != null && !optResultsWindow.IsDisposed) { optResultsWindow.clearHistory(); } optimizationIsRunning = true; originParams = ProjectManager.GetInstance().MotorToParams(CurrentMotor); // restart Lua (like clean-up) closeLua(); initLua(); // init datalog init_datalog(); try { // init script lua_initGA(currentConfig.luascript_init); } catch (Exception ex) { MessageBox.Show("Init script failed: " + ex.Message); return; } ga = new GA(currentConfig.cross_rate, currentConfig.mutation_rate, currentConfig.population_size, currentConfig.generation_size, currentConfig.genome_size, currentConfig.fitness_size); ga.FitnessFunction = new GAFunction(fitnessFunction); ga.FitnessFile = OutputFolder + "\\fitness_" + CurrentConfigName + ".csv"; ga.Elitism = true; ga.StepFinish += Ga_StepFinish; thread = new Thread(actualRunOptimization); thread.IsBackground = true; thread.Start(); }
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { treeView1.SelectedNode = e.Node; if (e.Button == System.Windows.Forms.MouseButtons.Right) { if (e.Node.FullPath.StartsWith("Transient")) { if (e.Node.Level == 0)//parent { runToolStripMenuItem.Visible = false; removeToolStripMenuItem.Visible = false; contextMenu_transient.Show(this, e.Location, ToolStripDropDownDirection.Default); } else if (e.Node.Level == 1)//child { runToolStripMenuItem.Visible = true; removeToolStripMenuItem.Visible = true; contextMenu_transient.Show(this, e.Location, ToolStripDropDownDirection.Default); } } else if (e.Node.FullPath.StartsWith("Motor")) //motor { if (e.Node.Level == 0) //parent { var pm = ProjectManager.GetInstance(); Type[] listmotorTypes = pm.ListMotorType; changeMotorTypeToolStripMenuItem.DropDownItems.Clear(); foreach (Type motortype in listmotorTypes) { ToolStripMenuItem item = new ToolStripMenuItem(); item.Name = motortype.Name; item.Text = motortype.Name; item.Tag = motortype; if (motortype.Equals(pm.CurrentMotorType)) { item.Checked = true; } item.Click += contextMenu_ChangeMotorType_ChildItemClicked; changeMotorTypeToolStripMenuItem.DropDownItems.Add(item); } contextMenu_Motor.Show(this, e.Location, ToolStripDropDownDirection.Default); } } } }
private AbstractMotor ParamsToMotor(ParametersCollection pc) { ProjectManager pm = ProjectManager.GetInstance(); AbstractMotor motor = pm.GetSampleMotor();//new default Dictionary <String, object> objs = new Dictionary <string, object>(); objs.Add("Motor\\General", motor.GeneralParams); objs.Add("Motor\\Rotor", motor.Rotor); objs.Add("Motor\\Stator", motor.Stator); //objs.Add("Motor\\Materials", motor.MaterialParams); objs.Add("Motor\\Airgap", motor.Airgap); foreach (String objname in objs.Keys) { pc.putValuesToObject(objname, objs[objname]); } return(motor); }
/// <summary> /// Execute lua_script that should modify a motor using given gens /// </summary> /// <param name="gens">Genomes</param> /// <param name="lua_script">lua_script</param> /// <returns></returns> private void lua_constructMotorfromGens(double[] gens, string lua_script, out AbstractMotor motor, out AbstractMMAnalyser mma) { // deep copy a motor from project manager var pm = ProjectManager.GetInstance(); var pc = originParams; motor = pm.ParamsToMotor(pc); mma = motor.GetMMAnalyser(); lock (lock_dostring) { lua["gens"] = gens; lua["motor"] = motor; lua["mma"] = mma; lua.DoString(lua_script); } }
private void showResultsInDGV(DataTable resultsTbl) { if (resultsTbl == null) { return; } if (columnsToHide == null) { columnsToHide = new List <string>(); } // set data dgv_results.DataSource = null; dgv_results.DataSource = resultsTbl; // setup column width and header text foreach (DataGridViewColumn column in dgv_results.Columns) { int pp = column.HeaderText.LastIndexOf('\\'); if (pp >= 0) { column.HeaderText = column.HeaderText.Substring(pp + 1); } column.Width = column.GetPreferredWidth(DataGridViewAutoSizeColumnMode.ColumnHeader, false); } // hightlight the current set of params row ProjectManager pm = ProjectManager.GetInstance(); String md5current = pm.Motor.GetMD5String(); foreach (DataGridViewRow row in dgv_results.Rows) { if (row.Cells[ParamSweeper.COL_MD5].Value.ToString() == md5current) { row.DefaultCellStyle.BackColor = Color.Aqua; } if (row.Cells[ParamSweeper.COL_STATUS].Value.ToString() != "OK") { row.DefaultCellStyle.ForeColor = Color.Red; } } }
private void dgv_motorParams_CellEndEdit(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = (DataGridView)sender; List <Parameter> list = (List <Parameter>)dgv.DataSource; Parameter param = list[e.RowIndex]; // try evaluate value param.EvaluateValue(); // redraw (because maybe param changed) dgv.Invalidate(); // inform project manager that params have changed ProjectManager pm = ProjectManager.GetInstance(); // begin invoke to make it run in next UI loop // to avoid infinity loop (celleditend-refresh dgv) pm.InvalidateParams(); }
private void applyOptimalResult(AbstractMotor optimalMotor) { ProjectManager pm = ProjectManager.GetInstance(); var pc = pm.MotorToParams(optimalMotor); foreach (var p_dest in pm.MotorParams) { foreach (var p_src in pc) { if (p_src.fullname == p_dest.fullname && p_src.valueType == p_dest.valueType) { p_dest.text = p_src.text; p_dest.value = p_src.value; } } } // update motor pm.InvalidateParams(); }
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { if (e.Label == null) { return; } String newname = e.Node.Parent.FullPath + "\\" + e.Label; bool b = ProjectManager.GetInstance().renameTransientAnalysis(currentPath, newname); if (!b) { e.CancelEdit = true; } else { //update UI after rename //refreshUI(); } }
private void showParamsInDGV(DataTable paramsTbl) { dgv_params.DataSource = null; dgv_params.DataSource = paramsTbl; // sort the columns dgv_params.Columns[ParamSweeper.COL_ID].DisplayIndex = 0; dgv_params.Columns[ParamSweeper.COL_MD5].DisplayIndex = 1; dgv_params.Columns[ParamSweeper.COL_STATUS].DisplayIndex = 2; // setup columns width and header text foreach (DataGridViewColumn column in dgv_params.Columns) { int pp = column.HeaderText.LastIndexOf('\\'); if (pp >= 0) { column.HeaderText = column.HeaderText.Substring(pp + 1); } column.Width = column.GetPreferredWidth(DataGridViewAutoSizeColumnMode.ColumnHeader, false); } // hightlight the current set of params row // hightlight set of params that are not valid ProjectManager pm = ProjectManager.GetInstance(); String md5current = pm.Motor.GetMD5String(); foreach (DataGridViewRow row in dgv_params.Rows) { if (row.Cells[ParamSweeper.COL_MD5].Value.ToString() == md5current) { row.DefaultCellStyle.BackColor = Color.Aqua; } if (row.Cells[ParamSweeper.COL_STATUS].Value.ToString() != "OK") { row.DefaultCellStyle.ForeColor = Color.Red; } } }
public MainWindow() { InitializeComponent(); lua_state = LuaHelper.GetLuaState(); projectManager = ProjectManager.GetInstance(); projectManager.OnMotorAnalysisResultsUpdate += new EventHandler(projectManager_RequestRefreshUI); projectManager.loadStartupProject(); form_motorParams = new Form_MotorParams(); form_motorParams.MdiParent = this; resultsWindow = new ResultsWindow(); resultsWindow.MdiParent = this; logwindow = new LogWindow(); logwindow.MdiParent = this; previewWindow = new PreviewWindow(); previewWindow.MdiParent = this; initMenu(); }
private void addToolStripMenuItem_Click(object sender, EventArgs e) { ProjectManager.GetInstance().addTransientAnalysis(); refreshUI(); }
private void runToolStripMenuItem_Click(object sender, EventArgs e) { ProjectManager.GetInstance().runTransientAnalysis(currentPath); }
private void removeToolStripMenuItem_Click(object sender, EventArgs e) { ProjectManager.GetInstance().removeTransientAnalysis(currentPath); currentPath = ""; refreshUI(); }
private void parseComparisonResults(String groupname, AbstractAnalyticalResults ar, AbstractFEMResults fr) { ProjectManager pm = ProjectManager.GetInstance(); var aResults = ar == null ? null : ar.BuildResultsForDisplay(); var femResults = fr == null ? null : fr.BuildResultsForDisplay(); // show all analytical results (gmc) if (aResults != null) { foreach (String aName in aResults.Keys) { ResultItem item = new ResultItem(); item.aName = aName; item.aValue = aResults[aName]; //compare if has femresults if (femResults != null) { bool hasfemvalue = false; foreach (String fName in femResults.Keys) { if (item.aName == fName) { item.femName = fName; item.femValue = femResults[fName]; if (item.aValue is double && item.femValue is double) { double v1 = (double)item.aValue; double v2 = (double)item.femValue; item.difference = String.Format("{0:F3}%", (v2 - v1) / v2 * 100); } hasfemvalue = true; break; } } if (hasfemvalue) { femResults.Remove(item.femName); } } //add item to list results item.group = groupname; results.Add(item); } } // add remaining item of femresults to list if (femResults != null) { foreach (String fName in femResults.Keys) { ResultItem item = new ResultItem(); item.femName = fName; if (femResults[fName] is ListPointD) { var ps = femResults[fName] as ListPointD; item.femValue = ps.ToZedGraphPointPairList(); } else { item.femValue = femResults[fName]; } item.group = groupname; results.Add(item); } } }