Sous Dynamo il existe 3 modes d'exécution :
Automatique : par défaut, les nouvelles définitions Dynamo sont définies pour s'exécuter automatiquement. Cela signifie que le graphique est exécuté par l'ordinateur, chaque fois qu'il y a un changement dans le modèle.
Manuel : le graphique Dynamo ne s'exécutera que lorsque vous appuyez sur ce bouton, ce qui signifie que vous pouvez apporter des modifications sans demander à l'ordinateur de calculer le résultat jusqu'à ce que vous soyez prêt.
C'est celui-ci qui est activé par défaut avec Dynamo Player
Remarque :
Lorsque vous recevez un script que vous (ou votre société) n'avez pas développé il est préférable de l'exécuter dans ce mode à l'ouverture.
Périodique : Dynamo a la possibilité d'exécuter le graphique de manière rythmique, toutes les X millisecondes, avec une fréquence que l'on peut définir. Cette option n'est activée que lorsqu'un nœud du canevas appelle spécifiquement ce type de comportement d'exécution.
Il s'agit du nœud standard (OOTB) DateTime.Now
Les nœuds activés périodiquement sont ceux qui pourraient injecter des informations en constante évolution dans le graphique Dynamo, telles que les données d'un capteur ou d'un microcontrôleur (comme un LeapMotion ou un Raspberry Pi couplé à un capteur) ou encore une GTB.
Sans données d'entrée dynamique, ce mode d'exécution peut également servir pour animer/déplacer des objets dans la maquette ou encore acquérir des données de la maquette toutes les X minutes afin d'auditer cette dernière (par exemple en BIM niveau 3).
Voici un exemple de déplacement périodique d'un objet le long d'une Ligne de Modèle.
Note :
Ici les localisations des instances à T-1 sont sauvegardés (via un index) localement dans un fichier txt (peut être également fait via le module Python Pickle)
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
import sys
sys.path.append(r'C:\Program Files (x86)\IronPython 2.7\Lib')
import os
def readidxfile(file):
with open(file, "r") as f:
return int(f.read())
def setidxfile(file, idx):
with open(file, "w") as f:
return f.write(str(idx))
dataEnteringNode = IN
time = IN[0] #input DateTime.Now() node
modelcurve = UnwrapElement(IN[1])
instance = UnwrapElement(IN[2])
pathuser = os.path.expanduser('~')
fullpath = pathuser + "\\Documents\\objb.txt"
try:
oldidx = readidxfile(fullpath)
indx = oldidx + 1
setidxfile(fullpath, indx)
except:
indx = 0
setidxfile(fullpath, str(indx))
#create range
rangeint = range(1,11,1)
#create simple float range
floatrange = [x * 0.1 for x in rangeint]
curveproto = modelcurve.GeometryCurve.ToProtoType()
try:
ptx = curveproto.PointAtParameter(floatrange[indx])
except:
indx = 0
setidxfile(fullpath, indx)
ptx = curveproto.PointAtParameter(floatrange[indx])
TransactionManager.Instance.EnsureInTransaction(doc)
instance.Location.Point = ptx.ToXyz()
TransactionManager.Instance.TransactionTaskDone()
OUT = ptx
github
0 commentaires:
Enregistrer un commentaire