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); }
private void StartImitation() { CancellModes(); var imitationRequest = new ImitationRequest(); bool isCreated = CreateRequest(ref imitationRequest); if (!isCreated) { return; } DoActionWithProgressBar("Подождите, идет выполнение операции", new Action(() => sceneObjects = controller.DoRequest(imitationRequest))); Draw(); }
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>); }