public string CloneProject(string projectName, string projectDir, string modelPath) { this.ProjectDir = projectDir; Project = new Project(projectName); string modelName = Path.GetFileNameWithoutExtension(modelPath); //GetModelName(modelPath); string modelDir = Path.GetDirectoryName(modelPath); string modelDir2 = GetModelDir(modelName); SysAdmin.CopyDirectory(modelDir, modelDir2, modelName); defaultContext.Invoke(DispatcherPriority.Background, new ThreadStart(delegate() { Project.Models.Model.Add(new Model() { Name = modelName, LoadedExperimentPath = GetRelExperimentPath(modelName, EXP_START_NUMBER), SelectedExperimentPath = GetRelExperimentPath(modelName, EXP_START_NUMBER) }); })); LoadModel(modelName, false); Project.CurrentModelName = modelName; Project.Save(projectDir); // create experiment GetExperimenterForModel(modelName).CreateRootExperiment(); return(modelName); }
/// <summary> /// Creates a new experiment folder, /// copy files to it from model dir. /// and marks it as loaded and selected in the project file /// </summary> public void CreateExperiment(Experiment.ExperimentData expData) { // get max experiment number int max = SysAdmin.GetMaxDirNumber(manager.GetRootExperimentPath(modelName)); ++max; // create new experiment folder string s = manager.GetLoadedExperimentAbsolutePath(modelName); string experimentPath = string.Format("{0}#{1}", s, max); if (max == 0) { experimentPath = string.Format("{0}{1}#{2}", s, modelName, max); } var di = Directory.CreateDirectory(string.Format("{0}\\{1}{2}", experimentPath, modelName, Model.MODEL_DIR_POSTFIX)); // copy main model folder to the new model folder s = manager.GetModelDir(modelName); SysAdmin.CopyDirectory(s, di.FullName); // create experiment data file in the experiment folder s = string.Format("{0}\\{1}{2}", experimentPath, modelName, Experiment.ExperimentData.EXPERIMENT_DATA_POSTFIX); expData.Save(s); // mark experiment as loaded manager.MarkExperimentAsLoaded(modelName, experimentPath); manager.MarkExperimentAsSelected(modelName, experimentPath); }
private void LoadExperiment(string expPath) { manager.MarkExperimentAsLoaded(modelName, expPath); string expDir = string.Format(@"{0}\{1}{2}", expPath, modelName, Model.MODEL_DIR_POSTFIX); string modelDir = manager.GetModelDir(modelName); SysAdmin.CopyDirectory(expDir, modelDir); LoadModelToVissim(false); }
public void CreateRootExperiment() { // create new experiment folder var di = Directory.CreateDirectory(manager.GetLoadedExperimentModelDir(modelName)); // copy main model folder to new model folder string s = manager.GetModelDir(modelName); SysAdmin.CopyDirectory(s, di.FullName); // create experiment data file in the experiment folder var expData = new Experiment.ExperimentData() { //Alanyze = false, CreatedOn = DateTime.Now, Description = "Zero Experiment (created automatically)", //Duration = new TimeSpan(0), //DurationTicks = 0 }; expData.Save(manager.GetLoadedExperimentDataFileName(modelName)); }
public void AddExistingModelAsync(string modelFileName, string altModelName, Dispatcher context, UserControl transitControl, Action doubledModelNameAction, Action <bool, string, UserControl> finalAction) { ThreadPool.QueueUserWorkItem(o => { aex.Protect(() => { bool result = false; if (Project != null) { string modelName = string.IsNullOrWhiteSpace(altModelName) ? Path.GetFileNameWithoutExtension(modelFileName) : altModelName; if (Project.Models.Model.Count(m => { return(m.Name.ToUpper() == modelName.ToUpper()); }) == 0) { string modelDir2 = Path.GetDirectoryName(modelFileName); string modelDir = GetModelDir(modelName); SysAdmin.CopyDirectory(modelDir2, modelDir, modelName); if (!string.IsNullOrWhiteSpace(altModelName)) { SysAdmin.ReplaceFileNamesInDirectory(modelDir, Path.GetFileNameWithoutExtension(modelFileName), modelName); } context.Invoke(DispatcherPriority.Background, new ThreadStart(delegate() { Project.Models.Model.Add(new Model() { Name = modelName, LoadedExperimentPath = GetRelExperimentPath(modelName, EXP_START_NUMBER), SelectedExperimentPath = GetRelExperimentPath(modelName, EXP_START_NUMBER) }); })); LoadModel(modelName, false); Project.CurrentModelName = modelName; Project.Save(ProjectDir); // create experiment GetExperimenterForModel(modelName).CreateRootExperiment(); result = true; } else { doubledModelNameAction(); } context.Invoke(DispatcherPriority.Background, new ThreadStart(delegate() { finalAction(result, modelName, transitControl); })); } }); }); }