public SimpleCalcVM(CalcCore.ICalc calc) { this.calc = calc; Inputs = new List <IOValues>(); foreach (var item in calc.GetInputs()) { Inputs.Add(new IOValues(item, calc, this)); } Outputs = new ObservableCollection <IOValues>(); foreach (var item in calc.GetOutputs()) { Outputs.Add(new IOValues(item, calc, this)); } //this.calc = calculation; _formulae = new ObservableCollection <FormulaeVM>(); foreach (var item in calc.GetFormulae()) { _formulae.Add(new FormulaeVM() { Expression = item.Expression, Ref = item.Ref, Conclusion = item.Conclusion, Narrative = item.Narrative, Status = item.Status /*, Image=item.Image */ }); } }
void doClick(object sender, EventArgs e) { try { var calcInstance = (CalcCore.ICalc)Activator.CreateInstance(((sender as ToolStripMenuItem).Tag) as Type); calc = calcInstance; } catch (Exception ex) { MessageBox.Show(ex.Message); } foreach (var input in calc.GetInputs()) { if (input.Type == CalcCore.CalcValueType.DOUBLE) { Params.RegisterInputParam(createGHParam(input.Name)); //int ind = pManager.AddNumberParameter(name.Name, "", "", GH_ParamAccess.item); //pManager[ind].Optional = true; } } foreach (var output in calc.GetOutputs()) { if (output.Type == CalcCore.CalcValueType.DOUBLE) { Params.RegisterOutputParam(createGHParam(output.Name)); } } this.Name = calc.TypeName; this.NickName = calc.TypeName; this.Description = "SCaFFOLD Calculation"; Params.OnParametersChanged(); this.ExpireSolution(true); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { if (calc == null) { return; } var calcInputs = calc.GetInputs(); for (int i = 0; i < Params.Input.Count; i++) { var input = Params.Input[i]; foreach (var calcInput in calcInputs) { if (calcInput.Name == input.Name) { double inputValue = 0; if (!DA.GetData(i, ref inputValue)) { return; } (calcInput as CalcCore.CalcDouble).Value = inputValue; } } } calc.UpdateCalc(); string output = ""; foreach (var outputVal in calc.GetOutputs()) { output += outputVal.Name + ": " + outputVal.ValueAsString + "; "; } DA.SetData(0, output); DA.SetData(1, calc); foreach (var calcOutput in calc.GetOutputs()) { for (int i = 0; i < Params.Output.Count; i++) { var outputGH = Params.Output[i]; if (calcOutput.Name == outputGH.Name) { DA.SetData(i, (calcOutput as CalcCore.CalcDouble).Value); } } } }
public void UpdateOutputs() { Outputs = new ObservableCollection <IOValues>(); foreach (var item in calc.GetOutputs()) { Outputs.Add(new IOValues(item, calc, this)); } _formulae = new ObservableCollection <FormulaeVM>(); foreach (var item in calc.GetFormulae()) { _formulae.Add(new FormulaeVM() { Expression = item.Expression, Ref = item.Ref, Conclusion = item.Conclusion, Narrative = item.Narrative, Status = item.Status /*, Image=item.Image */ }); } RaisePropertyChanged(nameof(Formulae)); }