예제 #1
0
        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 */
                });
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
                    }
                }
            }
        }
예제 #4
0
 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));
 }