예제 #1
0
        private bool CreateRequest(ref ImitationRequest imitationRequest)
        {
            if (aircraftPoints == null)
            {
                ShowMessage("Не заданы точки самолета");
                return(false);
            }

            if (aircraftPoints.Count < 2)
            {
                ShowMessage("Точек самолета должно быть больше 1");
                return(false);
            }

            imitationRequest.AircraftPoints = aircraftPoints.GetPoints();

            if (missilePoints == null)
            {
                ShowMessage("Не заданы точки ракеты");
                return(false);
            }

            if (missilePoints.Count < 2)
            {
                ShowMessage("Точек ракеты должно быть больше 1");
                return(false);
            }

            imitationRequest.Missiles.LaunchPoint = missilePoints.GetPoints()[0];
            imitationRequest.Missiles.Direction   = missilePoints.GetPoints()[1];

            double missileVelocityModule = Settings.Default.MissileVelocityModule;

            if (missileVelocityModule == 0)
            {
                missileVelocityModule = GetValueDialog <double> .ShowDialog(this, "Введите скорость ракеты");

                Settings.Default.MissileVelocityModule = missileVelocityModule;
            }

            imitationRequest.Missiles.VelocityModule = missileVelocityModule;

            int stepsCount = Settings.Default.StepsCount;

            if (stepsCount == 0)
            {
                stepsCount = GetValueDialog <int> .ShowDialog(this, "Введите количество точек маршрута");

                Settings.Default.StepsCount = stepsCount;
            }

            imitationRequest.StepsCount               = stepsCount;
            imitationRequest.Missiles.PropCoeff       = Settings.Default.PropCoeff;
            imitationRequest.Missiles.Inference       = Settings.Default.Inference;
            imitationRequest.Missiles.Defuzzification = Settings.Default.Defuzzification;

            return(true);
        }
예제 #2
0
        private void StartImitation()
        {
            CancellModes();

            var  imitationRequest = new ImitationRequest();
            bool isCreated        = CreateRequest(ref imitationRequest);

            if (!isCreated)
            {
                return;
            }

            DoActionWithProgressBar("Подождите, идет выполнение операции",
                                    new Action(() => sceneObjects = controller.DoRequest(imitationRequest)));

            Draw();
        }
예제 #3
0
        internal IEnumerable <IDrawable> DoRequest(ImitationRequest imitationRequest)
        {
            var pythonScriptFilename = Settings.Default.PythonScriptFilename;
            var tempPath             = string.Empty;

            Reset();

            if (pythonScriptFilename == string.Empty)
            {
                pythonScriptFilename = ChangePythonScriptFilename();
            }

            if (isFirstRun)
            {
                tempPath = CreateTempDir();
            }

            string requestFilename  = Path.Combine(tempPath, RequestFilename);
            string responseFilename = Path.Combine(tempPath, ResponseFilename);

            JsonSaverLoader.Save(imitationRequest, requestFilename);

            string args = pythonScriptFilename + " " + requestFilename + " " + responseFilename;

            string[] result = CommandRunner.ExecuteCommand(PythonFilename, args);

            if (result[0] != PythonSuccessMessage)
            {
                mainForm.ShowError(result[1]);
                return(null);
            }

#if (!DEBUG)
            File.Delete(requestFilename);
#endif

            GetResponse(responseFilename, sceneObjects);
            return(sceneObjects as IEnumerable <IDrawable>);
        }