Lancer un script dans un contexte différent de Dynamo (Éditeur ou Player)
if this article is not in your language, use the Google Translate widget (bottom of page for Mobile version)⬈
Quelle utilité à pouvoir lancer un script Dynamo hors de sa propre interface utilisateur ?
Voici quelques exemples :
- lancer ses scripts depuis des boutons ou un Add-In
- créer son propre launcher
- pouvoir 'chainer' l'exécution de plusieurs scripts
- déterminer facilement le temps d'exécution d'un ensemble de scripts
code pour lancer un script (Python)
clr.AddReference('DynamoRevitDS')
import Dynamo
dynamoRevit = Dynamo.Applications.DynamoRevit()
dynamoApp = Dynamo.Applications
journalData = Dictionary[str, str]()
journalData.Add(Dynamo.Applications.JournalKeys.ShowUiKey, False.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.AutomationModeKey, True.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.DynPathKey, "")
journalData.Add(Dynamo.Applications.JournalKeys.DynPathExecuteKey, True.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.ForceManualRunKey, False.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.ModelShutDownKey, True.ToString() )
journalData.Add(Dynamo.Applications.JournalKeys.ModelNodesInfo, False.ToString())
#
dynamoRevitCommandData = dynamoApp.DynamoRevitCommandData()
dynamoRevitCommandData.Application = uiapp
dynamoRevitCommandData.JournalData = journalData
#
dynamoRevit.ExecuteCommand(dynamoRevitCommandData)
dynamoRevit.RevitDynamoModel.OpenFileFromPath(r'D:\MyScriptFolder\Test Hello Word.dyn', True)
dynamoRevit.RevitDynamoModel.ForceRun()
#
# option to get the current CurrentWorkspace and Nodes from dyn
currentWorkspace = dynamoRevit.RevitDynamoModel.CurrentWorkspace
currentWorkspaceNodes = dynamoRevit.RevitDynamoModel.CurrentWorkspace.Nodes
code pour ouvrir un script (Python)
clr.AddReference('DynamoRevitDS')
import Dynamo
dynamoRevit = Dynamo.Applications.DynamoRevit()
dynamoApp = Dynamo.Applications
journalData = Dictionary[str, str]()
journalData.Add(Dynamo.Applications.JournalKeys.ShowUiKey, True.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.AutomationModeKey, False.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.DynPathKey, r'D:\MyScriptFolder\Test Hello Word.dyn')
journalData.Add(Dynamo.Applications.JournalKeys.DynPathExecuteKey, False.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.ForceManualRunKey, False.ToString())
journalData.Add(Dynamo.Applications.JournalKeys.ModelShutDownKey, False.ToString() )
journalData.Add(Dynamo.Applications.JournalKeys.ModelNodesInfo, True.ToString())
#
dynamoRevitCommandData = dynamoApp.DynamoRevitCommandData()
dynamoRevitCommandData.Application = uiapp
dynamoRevitCommandData.JournalData = journalData
#
dynamoRevit.ExecuteCommand(dynamoRevitCommandData)
dynamoRevit.RevitDynamoModel.OpenFileFromPath(r'D:\MyScriptFolder\Test Hello Word.dyn', True)
voici exemple en vidéo depuis une macro Revit (Python) avec :
- lancement simple d'un script Dynamo
- édition du script pour corriger une erreur
- lancement multiple de scripts
Note:
Si le macro manager Revit ne lance pas, consulter cette page
Ressources :
- fichiers Python pour macros Revit
https://github.com/Cyril-Pop/VoltaDynaBim/tree/master/Launch%20dyns
- script pour grouper des géométries par direction
https://voltadynabim.blogspot.com/2020/05/dynamopython-geometriesgroupir.html
0 commentaires:
Enregistrer un commentaire