コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Experimenter.cs プロジェクト: slowmickey/VISLAB
        /// <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);
        }
コード例 #3
0
ファイル: Experimenter.cs プロジェクト: slowmickey/VISLAB
        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);
        }
コード例 #4
0
ファイル: Experimenter.cs プロジェクト: slowmickey/VISLAB
        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));
        }
コード例 #5
0
        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);
                        }));
                    }
                });
            });
        }