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.

Rhinocéros extrusion via script grasshopper sélection par nom

 

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.

Rhinocéros information élément

On a alors une fenêtre dans laquelle on peut voir ce numéro sous l’appellation “Identification”.

Rhinocéros information élément description objet

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:

Rhinocéros extrusion via script python

 

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.

Rhinocéros extrusion via script grasshopper sélection par nom

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:

Rhinocéros grasshopper ligne persistante

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

Rhinocéros grasshopper ligne persistante

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:

Rhinocéros grasshopper primitive GUID sélection par nom

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.

Rhinocéros grasshopper assignation de texte- sélection par nom

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.

Rhinocéros grasshopper extrusion - sélection par nom

 

 

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.