Esempio n. 1
0
        /// <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();
            }
        }
Esempio n. 2
0
        /// <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();
            }
        }