DYNAMO: Get Document Phases by String
BA
BOURLET Antoine
07 février 2018
9584 0 12 0
Salut les Bimers !
Encore une fois, je me creuse bien la tête avec Dynamo !!
Je vous expose le problème: J'ai créé un sol, que j'ai transformé en éléments (catégorie Parts).
J'ai ensuite découpé cet élément d'origine Sols en 6 sous-éléments (Cf. pièce jointe "Esquisse éléments d'origine sols").
Puis j'ai affecté une phase de création pour chacun de ces 6 sous-éléments. (24 à 29). A partir de là, je souhaite simplement incrémenté de 1 la phase de création de chaque élément (25 à 30 donc). Pour cela, j'ai créé un script Dynamo (cf. pièce jointe "Script Dynamo Phase de création + 1") utilisant le noeud "Get Document Phases by String" du package Clockwork for Dynamo version 1.31.0.
D'autre part, avant de lancer le script, j'ai créé 35 phases dans le gestionnaire de phases REVIT (1 à 35). Mais après avoir lancé le script, les phases 1 à 14 et 31 à 35 sont supprimées du gestionnaire de phases. (cf. pièce jointe "Gestionnaire de phases final")
Les éléments d'origine Sols ont bien été incrémentés de 1 sur la phase de création, mais comme les phases postérieures à 30 ont été supprimées, le script plante si je le relance une seconde fois. (La phase "31" n'existe plus)
Pourquoi est-ce que mon script me supprime des phases dans les gestionnaire REVIT ? Comment faire pour que cela ne se produise plus ? Connaissez-vous un nœud plus adapté qui permet de récupérer la phase d'un élément à partir d'un "string" en entrée ? Avez-vous d'autres moyens de parvenir au résultat attendu ?
Merci pour vos réponses !
Encore une fois, je me creuse bien la tête avec Dynamo !!
Je vous expose le problème: J'ai créé un sol, que j'ai transformé en éléments (catégorie Parts).
J'ai ensuite découpé cet élément d'origine Sols en 6 sous-éléments (Cf. pièce jointe "Esquisse éléments d'origine sols").
Puis j'ai affecté une phase de création pour chacun de ces 6 sous-éléments. (24 à 29). A partir de là, je souhaite simplement incrémenté de 1 la phase de création de chaque élément (25 à 30 donc). Pour cela, j'ai créé un script Dynamo (cf. pièce jointe "Script Dynamo Phase de création + 1") utilisant le noeud "Get Document Phases by String" du package Clockwork for Dynamo version 1.31.0.
D'autre part, avant de lancer le script, j'ai créé 35 phases dans le gestionnaire de phases REVIT (1 à 35). Mais après avoir lancé le script, les phases 1 à 14 et 31 à 35 sont supprimées du gestionnaire de phases. (cf. pièce jointe "Gestionnaire de phases final")
Les éléments d'origine Sols ont bien été incrémentés de 1 sur la phase de création, mais comme les phases postérieures à 30 ont été supprimées, le script plante si je le relance une seconde fois. (La phase "31" n'existe plus)
Pourquoi est-ce que mon script me supprime des phases dans les gestionnaire REVIT ? Comment faire pour que cela ne se produise plus ? Connaissez-vous un nœud plus adapté qui permet de récupérer la phase d'un élément à partir d'un "string" en entrée ? Avez-vous d'autres moyens de parvenir au résultat attendu ?
Merci pour vos réponses !
Réponses
23 réponses
Pour écrire un commentaire, veuillezenregistrer ou log dans
Bonjour,
Pourquoi passer par dynamo pour faire le phasage de ces éléments ?
Pourquoi passer par dynamo pour faire le phasage de ces éléments ?
AA
Exactement la même question 
C'est du boulot pour Navisworks.
C'est du boulot pour Navisworks.
DH
Bonjour à vous deux ! 
Ceci n'est qu'une partie isolée du développement que je souhaite réaliser.
La finalité est de produire des carnets de phasage de travaux (rotations de banches depuis REVIT). Or, sur Naviswork il n'est pas possible, il me semble, de gérer des présentations (avec cartouches, nomenclatures...) pour en extraire un fichier PDF (1 page par jour dans mon cas).
Là, je m'intéresse au phasage des planchers, et notamment aux phases antérieures au coulage d'un plot de dalle. (Exemple: Coffrage, Ferraillage, Incorporation...etc)
Voilà, j'espère vous avoir donné plus de précisions sur le "pourquoi" de mon problème. Maintenant si vous avez des solutions à me proposer, je suis preneur et je sais qu'il y a des experts Dynamo parmi vous !!! :P
Merci à vous !
Ceci n'est qu'une partie isolée du développement que je souhaite réaliser.
La finalité est de produire des carnets de phasage de travaux (rotations de banches depuis REVIT). Or, sur Naviswork il n'est pas possible, il me semble, de gérer des présentations (avec cartouches, nomenclatures...) pour en extraire un fichier PDF (1 page par jour dans mon cas).
Là, je m'intéresse au phasage des planchers, et notamment aux phases antérieures au coulage d'un plot de dalle. (Exemple: Coffrage, Ferraillage, Incorporation...etc)
Voilà, j'espère vous avoir donné plus de précisions sur le "pourquoi" de mon problème. Maintenant si vous avez des solutions à me proposer, je suis preneur et je sais qu'il y a des experts Dynamo parmi vous !!! :P
Merci à vous !
BA
Peux-tu joindre ton script ?
AA
Akli AM,
Il y a une capture d'écran sur mon premier message. Tu as besoin du ".dyn" ??
Il y a une capture d'écran sur mon premier message. Tu as besoin du ".dyn" ??
BA
Si tu gardes cette gestion avec un numéro de phase tu peux tout simplement utiliser List.GetItemAtIndex car le nom de la phase va correspondre avec l'item correpondant. Puis tu recupère toutes les phases de ton docuemnt pour sélectionner celle que tu as besoin...
Cela fonctionne bien et ne supprime pas les phases en cours.
Cela fonctionne bien et ne supprime pas les phases en cours.
RM
Salut Rémy,
Mais oui ! Pourquoi j'avais pas pensé à ça !! Je vais tester cet après-midi, merci beaucoup!
Mais oui ! Pourquoi j'avais pas pensé à ça !! Je vais tester cet après-midi, merci beaucoup!
BA
Pas de souci, la simplicité paie parfois 
RM
PS: A noter que la phase de base Existante à l'id 2, quid quel élément à l'id 1 ???? 
RM
BA
tu devrais essayer ça
tu extrais les phases que tu voudras puis tu les injectes dans tes éléments
tu peux ainsi nommer tes phases
tu extrais les phases que tu voudras puis tu les injectes dans tes éléments
tu peux ainsi nommer tes phases
AA
AA
Akli AM,
Ta méthode fonctionne également merci beaucoup !!
Ta méthode fonctionne également merci beaucoup !!
BA
Bon... J'en profite pour vous exposer un deuxième problème que je rencontre dans le développement de mon script.
En fait, j'ai besoin de récupérer les faces inférieures des mes sous-éléments d'origine Sols de façon à générer des sols sous chacun des sous-éléments). Le périmètre des ces sols étant exactement calé sur celui de l'élément sous lequel il est généré. (cf. pièce jointe "Esquisse de division du sol en éléments"
Or lorsque que mon sol d'origine, comporte des trémies à géométrie trop complexe (qu'elles soient modélisées avec les limites du sol ou via une ouverture verticale), le nœud "Element.faces" de mon script (Cf. pièce jointe: "Script dysfonctionnant") ne détecte pas les faces de mon sous-élément.... alors que ce nœud fonctionne très bien pour un sous-élément simple (sans trémie).
Comment récupérer la face ou la géométrie de la face inférieure de chacun de ces 6 sous-éléments ?? (J'ai déjà la suite du code qui récupère les courbes du périmètre de chaque surface et qui créé un sol avec le noeud "Floor.ByOutlineTypeAndLevel"
J'espère avoir été clair ^^
Merci pour votre aide !
En fait, j'ai besoin de récupérer les faces inférieures des mes sous-éléments d'origine Sols de façon à générer des sols sous chacun des sous-éléments). Le périmètre des ces sols étant exactement calé sur celui de l'élément sous lequel il est généré. (cf. pièce jointe "Esquisse de division du sol en éléments"
Or lorsque que mon sol d'origine, comporte des trémies à géométrie trop complexe (qu'elles soient modélisées avec les limites du sol ou via une ouverture verticale), le nœud "Element.faces" de mon script (Cf. pièce jointe: "Script dysfonctionnant") ne détecte pas les faces de mon sous-élément.... alors que ce nœud fonctionne très bien pour un sous-élément simple (sans trémie).
Comment récupérer la face ou la géométrie de la face inférieure de chacun de ces 6 sous-éléments ?? (J'ai déjà la suite du code qui récupère les courbes du périmètre de chaque surface et qui créé un sol avec le noeud "Floor.ByOutlineTypeAndLevel"
J'espère avoir été clair ^^
Merci pour votre aide !
BA
Je vous joints un lien WeTransfer pour récupérer le fichier REVIT (.rvt) et le script (.dyn):
https://we.tl/3R2RDsNOQC

https://we.tl/3R2RDsNOQC
BA
sinon tu optes "Select Faces "
AA
Oui j'y ai pensé, mais le nœud "Select Model Element" me permet de récupérer d'autres paramètres liés au sous-élément comme la "phase de création" que j'exploite pour phaser les sols générés (Leur phase découle de celle du sous-élément)...
BA
C'est un problème qui a été remonté à autodesk
pour ton script, tu sélectionnes les faces avec "selects face" et pour avoir le même ordre que tes "parts" tu inclues ceci

pour ton script, tu sélectionnes les faces avec "selects face" et pour avoir le même ordre que tes "parts" tu inclues ceci
AA
Ok Akli AM! Compris ! 
Du coup, il faudrait que j'inclues deux champs d'entrée dans mon script:
- La sélection des éléments
- La sélection des faces
Et commencer mon développement par mettre la liste des faces dans l'ordre de celle des éléments via ton script !
Je vais tester ! Merci beaucoup
Du coup, il faudrait que j'inclues deux champs d'entrée dans mon script:
- La sélection des éléments
- La sélection des faces
Et commencer mon développement par mettre la liste des faces dans l'ordre de celle des éléments via ton script !
Je vais tester ! Merci beaucoup
BA
Dernière petite question bête ! Je n'arrive pas à utiliser le nœud "Select.faces". J'appuies sur "sélectionner", puis je sélectionne chacun des éléments, mais le nœud ne détecte pas ma sélection, il m'affiche "aucune sélection". Alors que le nœud "Select.face" (au singulier) fonctionne très bien...
Comment faut-il s'y prendre ? Cliquer sur "Sélectionner", puis sélectionner toutes les faces , puis cliquer sur "entrée" ??
Merci
Comment faut-il s'y prendre ? Cliquer sur "Sélectionner", puis sélectionner toutes les faces , puis cliquer sur "entrée" ??
Merci
BA


