Le module de visual scripting de Rhinocéros semble vraiment excellent à tous points de vue.
Cela permet de créer des éléments dans Rhino mais aussi de partir d’éléments existants via un lien pour continuer une construction en automatique.
Sommaire
Mais comment fait-on dans GrassHopper pour associer un élément par son nom ?
La question n’est pas dénuée d’intérêt, vous allez comprendre.
L’identifiant unique et le nom
Un élément dans Rhino est identifié par un numéro unique c’est l’UID (Unique IDentifier).
Sur Catia c’est pareil c’est un UUID (Universal Unique IDentifier pour info).
Ce numéro est très long cela permet d’éviter les doublons et les confusions au sein même de la machine.
Sur Rhino, on peut voir ce numéro (pourquoi pas). Il suffit d’aller dans l’onglet “Propriété” en ayant sélectionné un élément. puis de cliquer sur Info.
On a alors une fenêtre dans laquelle on peut voir ce numéro sous l’appellation “Identification”.
On peut aussi remarquer dans les deux images précédentes que j’ai attribué un nom (un label) à cet élément ligne.
Je l’ai nommé “courbe1” ce qui est plus commode pour la désigner.
Quel est l’intérêt de nommer les éléments ?
Il y en a certainement d’autres mais pour moi qui suis particulièrement paresseux, c’est un moyen de pointer l’élément au sein d’une macro pour l’utiliser.
On peut alors très bien imaginer un modèle de départ dans lequel tous les éléments de départ sont nommés et sont en lien avec une macro qui construit le reste du modèle.
Par exemple, un modèle de coque de bateau constitué au départ des courbes successives représentant les couples.
Si les couples sont correctement nommés (Couple1, Couple2, Couple3,…) et qu’une macro en fait une coque surfacique complète vous pourrez alors facilement remplacer ce modèle de départ par un autre modèle de bateau comportant des couples différents mais nommés de la même façon. Vous obtiendrez alors un autre bateau sans avoir la nécessité de tout repointer ou refaire une construction surfacique complète.
Macro Python
Dans une Macro Python il faut faire comme ceci pour attraper l’objet par son nom (Courbe1) et ensuite, par exemple, l’extruder:
# -*- coding: ISO-8859-1 –*- import rhinoscriptsyntax as rs #Script pour sélectionner par nom et extruder selon la direction de la Ligne1 strObjectID = rs.ObjectsByName("Courbe1") #Sélection de l’objet par son nom if strObjectID: #Si il existe un objet StrObjectID alors # On crée une ligne pour la direction d’extrusion Pt1=rs.AddPoint(0,0,0) Pt2=rs.AddPoint(0,0,10) Ligne1=rs.AddLine(Pt1,Pt2) # On extrude l’objet (Courbe1) selon la direction Ligne1 rs.ExtrudeCurve(strObjectID,Ligne1)
Résultat:
La méthode ObjectsByName existe déjà, cela à l’avantage d’être simple.
Macro GrassHopper
Dans GrassHopper (l’éditeur de script visuel) aussi il y a une solution pour faire cela.
Il faut une structure comme celle-là. Ce qui nous importe est l’ensemble de deux éléments “Txt” et “ID”.
Partant de la droite, l’élément Extrusion est alimenté par une ligne. C’est la direction d’extrusion.
C’est un élément persistant que l’on définit comme ceci.
Bouton droit sur l’objet:
Puis Add Path (le premier bouton “{}”) puis Add Item
Vous éditez la ligne et vous modifiez les coordonnées des extrémités de la ligne
Fini pour cette branche.
Pour l’autre branche il faut un élément de type “ID”.
Son rôle est de faire une correspondance entre le nom utilisateur et l’UID de l’objet car c’est ce qui intéresse les autres éléments de GrassHopper.
On le trouve ici:
Il n’y a pas de réglage à faire sur celui-ci.
Il faut ensuite un élément Text (un peu au dessus de “ID”)
Dans ce dernier, il faut lui attribuer la valeur (type String) du nom de ce que l’on recherche (Courbe1 dans notre cas).
Bouton droit dessus puis “Set Text”.
Grasshopper va alors scanner tout le modèle à la recherche d’un élément portant le nom « Courbe1 » ici.
Voilà, c’est fini.
Il faut penser à faire un bouton droit “Enable” pour activer chaque élément.
Résultat, le même qu’avec Python (heureusement !). Les éléments sont en prévisualisation ici dans Rhino.
Conclusion:
Ça n’a l’air de rien mais cette petite astuce permet de préparer rapidement des variantes de pièces sur la base de modèles de départ.
Personnellement, je vais me concentrer sur GrassHopper et tenter une réalisation surfacique basée sur un filaire générique. Cela me permettra de produire rapidement d’autres modèles du même type.
Et vous, vous servez-vous des noms des éléments dans Rhino ?
No responses yet