Ejemplo n.º 1
0
        private void StartDynamo()
        {
            try
            {
                // create the transaction manager object
                TransactionManager.SetupManager(new AutomaticTransactionStrategy());

                DynamoRevit.InitializeUnits();

                var model = RevitDynamoModel.Start(
                    new RevitDynamoModel.StartConfiguration()
                {
                    StartInTestMode = true,
                    DynamoCorePath  = Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\..\")
                });

                this.ViewModel = DynamoViewModel.Start(
                    new DynamoViewModel.StartConfiguration()
                {
                    DynamoModel = model
                });

                // Because the test framework does not work in the idle thread.
                // We need to trick Dynamo into believing that it's in the idle
                // thread already.
                IdlePromise.InIdleThread = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
Ejemplo n.º 2
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            string dynamoJournal = Globals.CurrentGraphToRun;

            if (string.IsNullOrWhiteSpace(dynamoJournal))
            {
                return(Result.Failed);
            }

            //toggle the graph to automatic. this is required for running Dynamo UI-Les
            DynamoUtils.SetToAutomatic(dynamoJournal);

            DynamoRevit dynamoRevit = new DynamoRevit();

            IDictionary <string, string> journalData = new Dictionary <string, string>
            {
                { JournalKeys.ShowUiKey, false.ToString() },
                { JournalKeys.AutomationModeKey, true.ToString() },
                { JournalKeys.DynPathKey, dynamoJournal },
                { JournalKeys.DynPathExecuteKey, true.ToString() },
                { JournalKeys.ForceManualRunKey, false.ToString() },
                { JournalKeys.ModelShutDownKey, true.ToString() },
                { JournalKeys.ModelNodesInfo, false.ToString() },
            };
            DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData
            {
                Application = commandData.Application, JournalData = journalData
            };

            return(dynamoRevit.ExecuteCommand(dynamoRevitCommandData));
        }
Ejemplo n.º 3
0
        internal static Result RunGraph(UIApplication app, string dynamoJournal)
        {
            //toggle the graph to automatic. this is required for running Dynamo UI-Les
            DynamoUtils.SetToAutomatic(dynamoJournal);

            DynamoRevit dynamoRevit = new DynamoRevit();


            IDictionary <string, string> journalData = new Dictionary <string, string>
            {
                { JournalKeys.ShowUiKey, false.ToString() },
                { JournalKeys.AutomationModeKey, true.ToString() },
                { JournalKeys.DynPathKey, "" },
                { JournalKeys.DynPathExecuteKey, true.ToString() },
                { JournalKeys.ForceManualRunKey, false.ToString() },
                { JournalKeys.ModelShutDownKey, true.ToString() },
                { JournalKeys.ModelNodesInfo, false.ToString() },
            };
            DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData
            {
                Application = app,
                JournalData = journalData
            };

            var result = dynamoRevit.ExecuteCommand(dynamoRevitCommandData);


            DynamoRevit.RevitDynamoModel.OpenFileFromPath(dynamoJournal, true);
            DynamoRevit.RevitDynamoModel.ForceRun();

            return(result);
        }
Ejemplo n.º 4
0
        private void StartDynamo()
        {
            try
            {
                var updater = new RevitServicesUpdater(DynamoRevitApp.ControlledApplication, DynamoRevitApp.Updaters);
                updater.ElementAddedForID += ElementMappingCache.GetInstance().WatcherMethodForAdd;
                updater.ElementsDeleted   += ElementMappingCache.GetInstance().WatcherMethodForDelete;

                SIUnit.HostApplicationInternalAreaUnit   = DynamoAreaUnit.SquareFoot;
                SIUnit.HostApplicationInternalLengthUnit = DynamoLengthUnit.DecimalFoot;
                SIUnit.HostApplicationInternalVolumeUnit = DynamoVolumeUnit.CubicFoot;

                var logger = new DynamoLogger();
                dynSettings.DynamoLogger = logger;
                var updateManager = new UpdateManager.UpdateManager(logger);

                Controller = DynamoRevit.CreateDynamoRevitControllerAndViewModel(updater, logger, Context.NONE);
                DynamoController.IsTestMode = true;

                // create the transaction manager object
                TransactionManager.SetupManager(new AutomaticTransactionStrategy());

                // Because the test framework does not work in the idle thread.
                // We need to trick Dynamo into believing that it's in the idle
                // thread already.
                IdlePromise.InIdleThread = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
Ejemplo n.º 5
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            string dynamoJournal = Globals.CurrentGraphToRun;

            if (string.IsNullOrWhiteSpace(dynamoJournal))
            {
                return(Result.Failed);
            }

            //toggle the graph to automatic. this is required for running Dynamo UI-Les
            DynamoUtils.SetToAutomatic(dynamoJournal);

            //this is the UI stuff
            //if (File.Exists(Path.Combine(Globals.ExecutingPath, "Prlx.RelayUI.dll")))
            //{
            //    try
            //    {
            //        Prlx.RelayUI.UI.SampleWindow sample = Prlx.RelayUI.Utilities.BuildUI(dynamoJournal);
            //        sample.ShowDialog();
            //    }
            //    catch (Exception e)
            //    {
            //        string messages = e.Message;
            //        //suppress the warning something went wrong.
            //    }
            //}

            DynamoRevit dynamoRevit = new DynamoRevit();



            IDictionary <string, string> journalData = new Dictionary <string, string>
            {
                { JournalKeys.ShowUiKey, false.ToString() },
                { JournalKeys.AutomationModeKey, true.ToString() },
                { JournalKeys.DynPathKey, "" },
                { JournalKeys.DynPathExecuteKey, true.ToString() },
                { JournalKeys.ForceManualRunKey, false.ToString() },
                { JournalKeys.ModelShutDownKey, true.ToString() },
                { JournalKeys.ModelNodesInfo, false.ToString() },
            };
            DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData
            {
                Application = commandData.Application,
                JournalData = journalData
            };

            dynamoRevit.ExecuteCommand(dynamoRevitCommandData);


            DynamoRevit.RevitDynamoModel.OpenFileFromPath(dynamoJournal, true);
            DynamoRevit.RevitDynamoModel.ForceRun();

            return(Result.Succeeded);
        }
Ejemplo n.º 6
0
        protected override void StartDynamo(TestSessionConfiguration testConfig)
        {
            try
            {
                UpdateSystemPathForProcess();

                // create the transaction manager object
                TransactionManager.SetupManager(new AutomaticTransactionStrategy());

                // Note that there is another data member pathResolver in base class
                // SystemTestBase. That pathResolver will be used only in StartDynamo
                // of the base class, here a local instance of pathResolver is used.
                //
                var revitTestPathResolver = new RevitTestPathResolver();
                revitTestPathResolver.InitializePreloadedLibraries();

                DynamoRevit.RevitDynamoModel = RevitDynamoModel.Start(
                    new RevitDynamoModel.RevitStartConfiguration()
                {
                    StartInTestMode       = true,
                    GeometryFactoryPath   = DynamoRevit.GetGeometryFactoryPath(testConfig.DynamoCorePath),
                    DynamoCorePath        = testConfig.DynamoCorePath,
                    PathResolver          = revitTestPathResolver,
                    Context               = "Revit 2014",
                    SchedulerThread       = new TestSchedulerThread(),
                    PackageManagerAddress = "https://www.dynamopackages.com",
                    ExternalCommandData   = new DynamoRevitCommandData(RevitTestExecutive.CommandData),
                    ProcessMode           = RevitTaskProcessMode
                });

                Model = DynamoRevit.RevitDynamoModel;

                this.ViewModel = DynamoRevitViewModel.Start(
                    new DynamoViewModel.StartConfiguration()
                {
                    DynamoModel = DynamoRevit.RevitDynamoModel,
                });

                var vm3D = ViewModel.Watch3DViewModels.FirstOrDefault(vm => vm is RevitWatch3DViewModel);
                if (vm3D != null)
                {
                    vm3D.Active = false;
                }

                // Because the test framework does not work in the idle thread.
                // We need to trick Dynamo into believing that it's in the idle
                // thread already.
                IdlePromise.InIdleThread = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
Ejemplo n.º 7
0
        Result IExternalCommand.Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            string Journal_Dynamo_Path = null;   //一个空的dynamo文件

            //新建一个窗口
            Window1 window1 = new Window1();

            if (window1.ShowDialog() == true)
            {
                //窗口打开并停留,只有点击按键之后,窗口关闭并返回true
            }


            //按键会改变window的属性,通过对属性的循环判断来实现对按键的监测
            while (!window1.Done)
            {
                //选择一个空的dynamo文件
                if (window1.selected)
                {
                    //把选择进来的文件的路径输出一下
                    Journal_Dynamo_Path = window1.fileName;
                }

                if (window1.ShowDialog() == true)
                {
                    //窗口打开并停留,只有点击按键之后,窗口关闭并返回true
                }
            }

            //开启Dynamo但是禁止弹出Dynamo对话框
            DynamoRevit dynamoRevit = new DynamoRevit();

            DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData();

            dynamoRevitCommandData.Application = commandData.Application;
            IDictionary <string, string> journalData = new Dictionary <string, string>
            {
                { Dynamo.Applications.JournalKeys.ShowUiKey, false.ToString() },         // don't show DynamoUI at runtime
                { Dynamo.Applications.JournalKeys.AutomationModeKey, true.ToString() },  //run journal automatically
                { Dynamo.Applications.JournalKeys.DynPathKey, Journal_Dynamo_Path },     //run node at this file path
                { Dynamo.Applications.JournalKeys.DynPathExecuteKey, true.ToString() },  // The journal file can specify if the Dynamo workspace opened from DynPathKey will be executed or not. If we are in automation mode the workspace will be executed regardless of this key.
                { Dynamo.Applications.JournalKeys.ForceManualRunKey, false.ToString() }, // don't run in manual mode
                { Dynamo.Applications.JournalKeys.ModelShutDownKey, true.ToString() }
            };

            dynamoRevitCommandData.JournalData = journalData;
            Result externalCommandResult = dynamoRevit.ExecuteCommand(dynamoRevitCommandData);

            return(externalCommandResult);
        }
Ejemplo n.º 8
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            try
            {
                #region main code
                // get application and documnet objects and start transaction
                UIApplication uiapp = commandData.Application;
                Document      doc   = uiapp.ActiveUIDocument.Document;

                string Journal_Dynamo_Path = @"\\d-peapcny.net\enterprise\G_Gen-Admin\Committees\Data Unit\_SCRIPTS LIBRARY\DYNAMO\_Ready for the S drive\Dynamo Player\View_Renumber on Multiple Sheets - Dynamo Player.dyn";
                // hello world
                // hello asher
                // initialize a new dynamo instance
                DynamoRevit dynamoRevit = new DynamoRevit();

                DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData();
                dynamoRevitCommandData.Application = commandData.Application;

                IDictionary <string, string> journalData = new Dictionary <string, string>
                {
                    { Dynamo.Applications.JournalKeys.ShowUiKey, false.ToString() },        // don't show DynamoUI at runtime
                    { Dynamo.Applications.JournalKeys.DynPathKey, Journal_Dynamo_Path },    //run node at this file path
                    { Dynamo.Applications.JournalKeys.DynPathExecuteKey, true.ToString() }, // The journal file can specify if the Dynamo workspace opened from DynPathKey will be executed or not. If we are in automation mode the workspace will be executed regardless of this key.
                    { Dynamo.Applications.JournalKeys.ForceManualRunKey, true.ToString() }, // force runs in manual mode
                    { Dynamo.Applications.JournalKeys.ModelShutDownKey, true.ToString() },
                    { Dynamo.Applications.JournalKeys.ModelNodesInfo, false.ToString() }
                };

                dynamoRevitCommandData.JournalData = journalData;
                Result externalCommandResult = dynamoRevit.ExecuteCommand(dynamoRevitCommandData);
                return(externalCommandResult);

                #endregion
            }
            catch (Exception err)
            {
                // TODO: add better error handling
                TaskDialog.Show("Error", err.Message.ToString());
                return(Result.Failed);
            }
        }
Ejemplo n.º 9
0
        public static void InitializeDynamoRevit(ExternalCommandData commandData)
        {
            DynamoRevit dynamoRevit = new DynamoRevit();

            IDictionary <string, string> journalData = new Dictionary <string, string>
            {
                { JournalKeys.ShowUiKey, false.ToString() },
                { JournalKeys.AutomationModeKey, true.ToString() },
                { JournalKeys.DynPathExecuteKey, true.ToString() },
                { JournalKeys.ForceManualRunKey, false.ToString() },
                { JournalKeys.ModelShutDownKey, true.ToString() },
                { JournalKeys.ModelNodesInfo, false.ToString() },
            };
            DynamoRevitCommandData dynamoRevitCommandData = new DynamoRevitCommandData
            {
                Application = commandData.Application,
                JournalData = journalData
            };

            dynamoRevit.ExecuteCommand(dynamoRevitCommandData);
        }
Ejemplo n.º 10
0
        protected override TestSessionConfiguration GetTestSessionConfiguration()
        {
            var asmLocation = AppDomain.CurrentDomain.BaseDirectory;

            return(new TestSessionConfiguration(Dynamo.Applications.DynamoRevitApp.DynamoCorePath, DynamoRevit.findRevitASMVersion(asmLocation)));
        }
Ejemplo n.º 11
0
        protected override TestSessionConfiguration GetTestSessionConfiguration()
        {
            var asmLocation = AppDomain.CurrentDomain.BaseDirectory;

            return(new TestSessionConfiguration(Dynamo.Applications.DynamoRevitApp.DynamoCorePath, DynamoRevit.PreloadAsmFromRevit()));
        }
Ejemplo n.º 12
0
 void CurrentUIApplication_ViewActivating(object sender, Autodesk.Revit.UI.Events.ViewActivatingEventArgs e)
 {
     DynamoRevit.SetRunEnabledBasedOnContext(e);
 }
Ejemplo n.º 13
0
        protected override void StartDynamo(TestSessionConfiguration testConfig)
        {
            try
            {
                UpdateSystemPathForProcess();

                // create the transaction manager object
                TransactionManager.SetupManager(new AutomaticTransactionStrategy());

                // Note that there is another data member pathResolver in base class
                // SystemTestBase. That pathResolver will be used only in StartDynamo
                // of the base class, here a local instance of pathResolver is used.
                //
                var commandData    = new DynamoRevitCommandData(RevitTestExecutive.CommandData);
                var userDataFolder = Path.Combine(Environment.GetFolderPath(
                                                      Environment.SpecialFolder.ApplicationData),
                                                  "Dynamo", "Dynamo Revit");
                var commonDataFolder = Path.Combine(Environment.GetFolderPath(
                                                        Environment.SpecialFolder.CommonApplicationData),
                                                    "Autodesk", "RVT " + commandData.Application.Application.VersionNumber, "Dynamo");

                // Set Path Resolver's user data folder and common data folder with DynamoRevit runtime.
                var pathResolverParams = new TestPathResolverParams()
                {
                    UserDataRootFolder   = userDataFolder,
                    CommonDataRootFolder = commonDataFolder
                };
                RevitTestPathResolver revitTestPathResolver = new RevitTestPathResolver(pathResolverParams);
                revitTestPathResolver.InitializePreloadedLibraries();

                // Get the preloaded DynamoRevit Custom Nodes, and Add them to Preload Libraries.
                var preloadedLibraries = new List <string>();
                GetLibrariesToPreload(preloadedLibraries);
                if (preloadedLibraries.Any())
                {
                    foreach (var preloadedLibrary in preloadedLibraries)
                    {
                        if (Directory.Exists(preloadedLibrary))
                        {
                            revitTestPathResolver.AddNodeDirectory(preloadedLibrary);
                        }
                        else if (File.Exists(preloadedLibrary))
                        {
                            revitTestPathResolver.AddPreloadLibraryPath(preloadedLibrary);
                        }
                    }
                }

                // Init DynamoTestPath to get DynamoSettings.xml which under user data folder
                PreferenceSettings.DynamoTestPath = string.Empty;
                //preload ASM and instruct dynamo to load that version of libG.
                var requestedLibGVersion = DynamoRevit.PreloadAsmFromRevit();

                DynamoRevit.RevitDynamoModel = RevitDynamoModel.Start(
                    new RevitDynamoModel.RevitStartConfiguration()
                {
                    StartInTestMode       = true,
                    GeometryFactoryPath   = DynamoRevit.GetGeometryFactoryPath(testConfig.DynamoCorePath, requestedLibGVersion),
                    DynamoCorePath        = testConfig.DynamoCorePath,
                    PathResolver          = revitTestPathResolver,
                    Context               = DynamoRevit.GetRevitContext(commandData),
                    SchedulerThread       = new TestSchedulerThread(),
                    PackageManagerAddress = "https://www.dynamopackages.com",
                    ExternalCommandData   = commandData,
                    ProcessMode           = RevitTaskProcessMode
                });

                Model = DynamoRevit.RevitDynamoModel;

                this.ViewModel = DynamoRevitViewModel.Start(
                    new DynamoViewModel.StartConfiguration()
                {
                    DynamoModel = DynamoRevit.RevitDynamoModel,
                });

                var vm3D = ViewModel.Watch3DViewModels.FirstOrDefault(vm => vm is RevitWatch3DViewModel);
                if (vm3D != null)
                {
                    vm3D.Active = false;
                }

                // Because the test framework does not work in the idle thread.
                // We need to trick Dynamo into believing that it's in the idle
                // thread already.
                IdlePromise.InIdleThread = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }