private static void TryOpenAndExecuteWorkspaceInCommandData(DynamoRevitCommandData commandData) { if (commandData.JournalData == null) { return; } if (commandData.JournalData.ContainsKey(JournalKeys.DynPathKey)) { bool isAutomationMode = CheckJournalForKey(commandData, JournalKeys.AutomationModeKey); bool forceManualRun = CheckJournalForKey(commandData, JournalKeys.ForceManualRunKey); if (ModelState == RevitDynamoModelState.StartedUIless) { revitDynamoModel.OpenFileFromPath(commandData.JournalData[JournalKeys.DynPathKey], forceManualRun); } else { dynamoViewModel.OpenIfSavedCommand.Execute(new Dynamo.Models.DynamoModel.OpenFileCommand(commandData.JournalData[JournalKeys.DynPathKey], forceManualRun)); dynamoViewModel.ShowStartPage = false; } //If we are in automation mode the model will run anyway (on the main thread //without the idle loop) regardless of the DynPathExecuteKey. if (!isAutomationMode && commandData.JournalData.ContainsKey(JournalKeys.DynPathExecuteKey)) { bool executePath = false; bool.TryParse(commandData.JournalData[JournalKeys.DynPathExecuteKey], out executePath); if (executePath) { HomeWorkspaceModel modelToRun = revitDynamoModel.CurrentWorkspace as HomeWorkspaceModel; if (modelToRun != null) { modelToRun.Run(); return; } } } } }
private static void TryOpenAndExecuteWorkspaceInCommandData(DynamoRevitCommandData commandData) { if (commandData.JournalData == null) { return; } if (commandData.JournalData.ContainsKey(JournalKeys.DynPathKey)) { bool isAutomationMode = CheckJournalForKey(commandData, JournalKeys.AutomationModeKey); bool forceManualRun = CheckJournalForKey(commandData, JournalKeys.ForceManualRunKey); bool useExistingWorkspace = false; if (CheckJournalForKey(commandData, JournalKeys.DynPathCheckExisting)) { WorkspaceModel currentWorkspace = revitDynamoModel.CurrentWorkspace; if (currentWorkspace.FileName.Equals(commandData.JournalData[JournalKeys.DynPathKey], StringComparison.OrdinalIgnoreCase)) { useExistingWorkspace = true; } } if (!useExistingWorkspace) //if use existing is false, open the specified workspace { if (ModelState == RevitDynamoModelState.StartedUIless) { revitDynamoModel.OpenFileFromPath(commandData.JournalData[JournalKeys.DynPathKey], forceManualRun); } else { dynamoViewModel.OpenIfSavedCommand.Execute(new Dynamo.Models.DynamoModel.OpenFileCommand(commandData.JournalData[JournalKeys.DynPathKey], forceManualRun)); dynamoViewModel.ShowStartPage = false; } } //If we have information about the nodes and their values we want to push those values after the file is opened. if (commandData.JournalData.ContainsKey(JournalKeys.ModelNodesInfo)) { try { var allNodesInfo = JsonConvert.DeserializeObject <List <Dictionary <string, string> > >(commandData.JournalData[JournalKeys.ModelNodesInfo]); if (allNodesInfo != null) { foreach (var nodeInfo in allNodesInfo) { if (nodeInfo.ContainsKey(JournalNodeKeys.Id) && nodeInfo.ContainsKey(JournalNodeKeys.Name) && nodeInfo.ContainsKey(JournalNodeKeys.Value)) { var modelCommand = new DynamoModel.UpdateModelValueCommand(nodeInfo[JournalNodeKeys.Id], nodeInfo[JournalNodeKeys.Name], nodeInfo[JournalNodeKeys.Value]); modelCommand.Execute(revitDynamoModel); } } } } catch { Console.WriteLine("Exception while trying to update nodes with new values"); } } //If we are in automation mode the model will run anyway (on the main thread //without the idle loop) regardless of the DynPathExecuteKey. if (!isAutomationMode && commandData.JournalData.ContainsKey(JournalKeys.DynPathExecuteKey)) { bool executePath = false; bool.TryParse(commandData.JournalData[JournalKeys.DynPathExecuteKey], out executePath); if (executePath) { HomeWorkspaceModel modelToRun = revitDynamoModel.CurrentWorkspace as HomeWorkspaceModel; if (modelToRun != null) { modelToRun.Run(); return; } } } } }