Civil 3D Dynamo – Use Cases 1

Nouvelle série d’article, en complément aux ‘Tips and Tricks’ sur Dynamo, qui va démonter l’utilisation de ce langage dans le cadre d’un ‘Use Case’ définit.

Use Case #1 : Pressure Network – PSet et remplissage des valeurs

Phases

  1. Explication et définition de base : PSet, Dictionnaire, …
  2. Création d’un PSet et de ses propriétés, depuis un fichier externe
  3. Remplissage du PSet, avec des données du Composant.
  4. Extraction des données dans un fichier externe.
  5. Modification et réimport des données extraites.
  6. Intégration de valeur externe

Description

Cet ensemble de scripts à créer (plusieurs scripts existent déjà) permettra d’aborder un cas concret d’utilisation, à savoir ici, la création d’un jeu de propriété pour les composants d’un réseau sous pression et de l’attribuer aux types d’objets concernés et de remplir le PSet depuis les données saisie avec le composant.

Par la suite, un autre script permettra d’extraire ces données (év. incomplète) dans un fichier Excel, qui pourra être modifier et/ou compléter, puis réimport de ces valeurs dans le PSet.

Pour terminer, je vous propose également d’intégrer des valeurs à ce PSet, à partir d’un fichier externe. Ici le numéro d’article et son prix seront importés.

Définition de base

Dictionnaire

Un dictionnaire est solution pour extraire, classer et utiliser des données. Le principe est la clé/valeur des données, et la clé doit être unique et alphanumérique. Exemple : pour le numéro d’article d’un composant, on pourrait avoir ‘article_no[« 1234RBDJ25 »]’.

Une bonne solution est d’avoir ces informations dans un fichier externe (Excel, par exemple) et de pouvoir ainsi charger un fichier ou l’autre, qui est configuré pour notre cas, te ainsi importer ses données pour traitement, à savoir pour renseigner l’une ou l’autre propriété du PSet.

PSet

Les PSet sont des jeux de propriétés, qui liés à un ou plusieurs types d’objets, permettent d’ajouter des informations (Propriétés, Valeurs) aux objets. Par exemple, pour un tuyau sous pression : Marque, N° d’article, …

Il est possible de définir autant de PSet que l’on veut, et en lié un à plusieurs articles, et un autre à un seul type. Exemple : PSet ‘Fournisseurs’ liés à tous les composants

Use case : Renseignements d’un réseau sous pression

Dans notre cas, je vous propose donc de travailler avec un jeu de données tests d’un réseau sous pression (eau potable, chauffage à distance, …) et de créer 2-3 Pset en lien avec ces objets (Fournisseurs, Caractéristiques, Prix). Ensuite on renseignera les différents valeurs de plusieurs sources, puis on jouera avec ces PSet.

Civil 3D – Property Sets (Jeux de propriétés)

Les jeux de propriétés permettent d’affecter et d’utiliser des propriétés personnalisées pour un objet donné.

Une définition de jeu de propriétés sert à préciser un ensemble de caractéristiques pour des groupes de propriétés pouvant être référencés dans des objets de votre dessin.

Vous pouvez attribuer une même définition à un seul ou à plusieurs objets en sélectionnant ceux-ci dans l’onglet de catégorie d’objet.

… suite à rédiger

Dynamo : Dictionary

Un dictionnaire est un type de données composé d’un ensemble de paires clé-valeur, où chaque clé est unique dans chaque ensemble. Un dictionnaire n’a pas d’ordre et vous pouvez, en fait, rechercher des éléments à l’aide d’une clé au lieu d’une valeur d’index, comme dans une liste. Dans Dynamo 2.0, les clés peuvent uniquement être des chaînes.

Une très bonne introduction aux dictionnaires dans Dynamo est disponible dans cette vidéo Youtube du UK Dynamo User Group North.

Dynamo – Custom Node, Simplifiez vos workflows !

Article LinkedIn : https://tinyurl.com/25v2z8g4

Objectif

Découvrez comment passer au niveau supérieur avec Dynamo en créant vos propres nœuds, les ‘Custom Node’.
Fini les scripts surchargés et répétitifs !

Qu’est-ce qu’un Custom Node ?

Même si Dynamo propose maintenant une multitude de noeuds, la possibilité de créer et d’utiliser des nœuds personnalisés apporte de nombreux avantages, à savoir :

  • Un « Super Node » parfaitement adapté à nos besoins,
  • Regroupe plusieurs Nodes en une seule unité,
  • Possède ses propres entrées/sorties,
  • Réutilisable dans tous vos scripts,
  • Partageable avec votre équipe.

Pourquoi créer des Customs Nodes

  • Simplifiez vos scripts
  • Évitez la répétition de code
  • Standardisez vos méthodes
  • Gagnez en productivité
  • Créez votre bibliothèque d’outils

Ci-dessous, je vous propose un exemple de ‘Custom Node‘, basé sur mon premier post, l’accès et la récupération des données d’un fichier Excel.

Ci-dessous, je vous propose un exemple de ‘Custom Node‘, , basé sur mon premier post, l’accès et la récupération des données d’un fichier Excel.

1️⃣ Script complet : en haut normal, en bas, remplacé par un ‘Custom Node‘,
2️⃣ Custom Node : 2 Input (Nom du fichier Excel et le nom de l’onglet), 2 Output (Message d’erreur et les données)
3️⃣ Custom Node : Détail, quasiment identique au graphe normal
4️⃣ Input 1 : Nom du fichier excel, le paramétrage dans le ‘Code Block’ configure le noeud à son utilisation
5️⃣ Input 2/Output 1 : Nom de l’onglet et le message d’erreur éventuel
6️⃣ Custom Node Library : Disponible dans la librairie, comme les autres noeuds
7️⃣ Custom Node Help : Fichier d’aide configurable.

🚀 𝗖𝗼𝗻𝗰𝗹𝘂𝘀𝗶𝗼𝗻

L’utilisation de ‘𝘊𝘶𝘴𝘵𝘰𝘮 𝘕𝘰𝘥𝘦’ permet de simplifier les graphes Dynamo et la compréhension du script, de venir compléter les nœuds standard. Ils sont également réutilisable et peuvent être partager via une bibliothèque, ce qui permet de réduire les coûts de développement.

𝘾𝙪𝙨𝙩𝙤𝙢 𝙉𝙤𝙙𝙚𝙨: 𝘾𝙤𝙙𝙚 𝙇𝙚𝙨𝙨, 𝘽𝙪𝙞𝙡𝙙 𝙈𝙤𝙧𝙚, 𝘾𝙪𝙩 𝘾𝙤𝙨𝙩𝙨 !

🤝Besoin d’un accompagnement pour réaliser vos scripts Dynamo qui répondent à vos besoins ou créer une ‘Custom Nodes Library’ pour diminuer vos coûts ? N’hésitez pas, contactez-moi dès aujourd’hui !

Dynamo – Code Block et fonction

Cet article fait suite à l’article sur l’utilisation du Node ‘PressurePart.PartData’ ou comment exploiter efficacement les données du catalogue

🎯Objectif 1 : Récupérer les données du dictionnaire ‘PressurePart.PartData’

🎯Objectif 2 : Créer une fonction et l’utiliser dans des ‘Code Block’

Avec les fonctions dans les Codes Block, on montent un peu de niveau 😉

1️⃣ Exploitation du dictionnaire de données

Le Node ‘PressurePart.PartData’ nous renvoie un dictionnaire contenant les propriétés du composant. Ces propriétés sont stockées sous la forme de clés/valeurs.

Pour en extraire les valeurs :

  • Utilisez ‘Dictionary.ValueAtKey’ pour accéder à une propriété spécifique (valeur d’une clé).

Astuce

  • Vérifiez d’abord les clés disponibles avec ‘Dictionary.Keys’ pour connaître toutes les propriétés accessibles ou visualisez les avec un Node ‘Watch’

2️⃣Fonction dans le Code Block

Les Code Blocks dans Dynamo, sont le graal, pour tout développeur ou non. Outre leur fonctions basiques de saisie ou de traitement de données, ils permettent aussi d’écrire des fonctions personnalisées.

Voici comment définir et utiliser une fonction de conversion :

Principe de définition de fonction (dans un Code Block indépendant) :

𝘥𝘦𝘧 𝘯𝘰𝘮𝘋𝘦𝘓𝘢𝘍𝘰𝘯𝘤𝘵𝘪𝘰𝘯(𝘱𝘢𝘳𝘢𝘮𝘦̀𝘵𝘳𝘦𝘴):
{
 𝘳𝘦𝘴𝘶𝘭𝘵 = ...;
 𝘳𝘦𝘵𝘶𝘳𝘯 𝘳𝘦𝘴𝘶𝘭𝘵;
};

Notre fonction de conversion :

 𝘥𝘦𝘧 𝘗𝘕_𝘪𝘯_𝘣𝘢𝘳(𝘪𝘯1):
{
 𝘗𝘕_𝘣𝘢𝘳 = 𝘪𝘯1*1000;
 𝘳𝘦𝘵𝘶𝘳𝘯 𝘗𝘕_𝘣𝘢𝘳;
};

Astuces pour la définition de fonctions dans les Code Blocks :

  • Utilisez des noms explicites pour vos fonctions
  • Un seul « return » par fonction
  • Possibilité d’ajouter plusieurs paramètres : def maFonction(param1, param2)
  • Les commentaires commencent par // ou /* */

Envie d’aller plus loin avec Dynamo ?

Abonnez-vous, likez et partagez ce post ou contactez-moi pour toutes questions ou prestations sur mesure, adaptées à vos besoins en scripts Dynamo !