Пример #1
0
            ///<summary> This gets called when when the user runs this command.</summary>
            //protected override Result RunCommand(Rhino.RhinoDoc doc, RunMode mode)
            public bool RunSim()
            {
                //if (Rhino.RhinoDoc.ActiveDoc.ModelUnitSystem != Rhino.UnitSystem.Meters)
                //{
                //    System.Windows.Forms.MessageBox.Show("At this point in development, Pachyderm supports documents in meters only. Please set the document units to meters, and run the calculation again.\n(A quick way to get to the document units control is to type 'units' into the command prompt.)");
                //    CommandResult = Result.Cancel;
                //    return CommandResult;
                //}

                ////In order to deal with latency in memory, a thread sleep of 1 second is inserted...
                //System.Threading.Thread.Sleep(1000);
                //////////////////////////////////////////////////////////////////////////////////////
                //Rhino.RhinoApp.EscapeKeyPressed += Escape;
                CancelCalc = false;
                //CommandResult = Result.Success;
                success = true;
                //Rhino.ApplicationSettings.FileSettings.AutoSaveEnabled = false;

                if (Sim != null)
                {
                    Sim.Begin();
                    //Rhino.RhinoApp.SetCommandPrompt(string.Format("Initiating {0} Calculation...", Sim.Sim_Type()));
                    do
                    {
                        //if (CancelCalc)
                        //{
                        //    Sim.Abort_Calculation();
                        //    CommandResult = Result.Cancel;
                        //    Rhino.ApplicationSettings.FileSettings.AutoSaveEnabled = true;
                        //    return CommandResult;
                        //    Success = false;
                        //}
                        if (Sim.ThreadState() != System.Threading.ThreadState.Running)
                        {
                            break;
                        }
                        System.Threading.Thread.Sleep(3000);
                        //Rhino.RhinoApp.SetCommandPrompt(Sim.ProgressMsg());
                    } while (true);

                    Sim.Combine_ThreadLocal_Results();
                    do
                    {
                        System.Threading.Thread.Sleep(3000);
                        if (Sim.ThreadState() != System.Threading.ThreadState.Running)
                        {
                            break;
                        }
                        //Rhino.RhinoApp.SetCommandPrompt(Sim.ProgressMsg());
                    } while (true);
                }

                //Rhino.ApplicationSettings.FileSettings.AutoSaveEnabled = true;
                //System.Runtime.GCSettings.LatencyMode = System.Runtime.GCLatencyMode.Interactive;
                //Rhino.RhinoDoc.ActiveDoc.Views.RedrawEnabled = true;
                //return CommandResult;
                return(success);
            }