/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="da">IGH_DataAccess: The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess da) { // _setOutput put var to the exit if (_setOutput) { for (int a = _buffOut.Count - 1; a > 0; a--) { if (_buffOut[a].Count == 0) _buffOut.RemoveAt(a); } da.SetDataList(0, _buffOut); da.SetDataList(1, _nonest); da.SetDataList(2, _sheetsresults); _setOutput = false; IsWorking = false; _mSolveme = false; } //if the user doesn't make a double click force out if (!_mSolveme) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Double click me to start solving"); _mSolveme = false; return; } //if the user does the double ckcik start getting var if (!IsWorking) { //if have curves delete all if (_mycurves.Count > 0) { foreach (Guid t in _mycurves) { RhinoDoc.ActiveDoc.Objects.Delete(t, true); } RhinoDoc.ActiveDoc.Views.Redraw(); } _sheetsresults = new List<RhinoNestSheetResult>(); //cleaning the var IsWorking = true; var sheets = new RhinoNestSheet(); _parameters = new RhinoNestKernel.Nesting.RhinoNestNestingParameters(); var _object = new List<RhinoNestObject>(); _buffold = 0; _tryies = 0; _nonest.Clear(); for (int i = 0; i < _buffOut.Count; i++) _buffOut.RemoveAt(i); //getting var if (!da.GetDataList(0, _object)) return; if (!da.GetData(1, ref sheets)) return; if (!da.GetData(2, ref _parameters)) return; //saving thats _sheets2 = new RhinoNestSheet(sheets); //duplicate the list var send = new List<RhinoNestObject>(); _object.ForEach(item => send.Add(new RhinoNestObject(item))); //declaring nesting _nesting = new RhinoNestNesting(send, sheets, _parameters); //active the Flag for the event for finish and other for progress _nesting.OnNestingFinish += nesting_OnNestingFinish; _nesting.OnNestingProgressChange += Nesting_OnNestingProgressChange; //start nesting _nesting.StartNesting(); } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="da">IGH_DataAccess: The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess da) { // _setOutput put var to the exit if (_setOutput) { for (int a = _buffOut.Count - 1; a > 0; a--) { if (_buffOut[a].Count == 0) { _buffOut.RemoveAt(a); } } da.SetDataList(0, _buffOut); da.SetDataList(1, _nonest); da.SetDataList(2, _sheetsresults); _setOutput = false; IsWorking = false; _mSolveme = false; } //if the user doesn't make a double click force out if (!_mSolveme) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Double click me to start solving"); _mSolveme = false; return; } //if the user does the double ckcik start getting var if (!IsWorking) { //if have curves delete all if (_mycurves.Count > 0) { foreach (Guid t in _mycurves) { RhinoDoc.ActiveDoc.Objects.Delete(t, true); } RhinoDoc.ActiveDoc.Views.Redraw(); } _sheetsresults = new List <RhinoNestSheetResult>(); //cleaning the var IsWorking = true; var sheets = new RhinoNestSheet(); _parameters = new RhinoNestKernel.Nesting.RhinoNestNestingParameters(); var _object = new List <RhinoNestObject>(); _buffold = 0; _tryies = 0; _nonest.Clear(); for (int i = 0; i < _buffOut.Count; i++) { _buffOut.RemoveAt(i); } //getting var if (!da.GetDataList(0, _object)) { return; } if (!da.GetData(1, ref sheets)) { return; } if (!da.GetData(2, ref _parameters)) { return; } //saving thats _sheets2 = new RhinoNestSheet(sheets); //duplicate the list var send = new List <RhinoNestObject>(); _object.ForEach(item => send.Add(new RhinoNestObject(item))); //declaring nesting _nesting = new RhinoNestNesting(send, sheets, _parameters); //active the Flag for the event for finish and other for progress _nesting.OnNestingFinish += nesting_OnNestingFinish; _nesting.OnNestingProgressChange += Nesting_OnNestingProgressChange; //start nesting _nesting.StartNesting(); } }