This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
fr:rhino:basicmacros [2020/08/14] 127.0.0.1 external edit |
fr:rhino:basicmacros [2024/09/18] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ======Créer des macros====== |
- | ======Introduction====== | + | > Tutoriel de base sur l' |
- | Scripting macros in Rhino is a way to automate many tasks, customize your commands and improve your workflow. | + | Dans Rhino, |
- | There may be some confusion | + | Le terme scriptage peut parfois prêter à confusion. On l’emploie pour décrire à la fois l’écriture de macros (le sujet de cet article) mais aussi de scripts |
- | I will use the term “Macro” here exclusively to describe the putting together of strings of ordinary Rhino commands and their options to create an automated function. This is “scripting” on its simplest of levels, and is easily accessible to any ordinary Rhino user, even if they have no knowledge of programming. | + | //Ce sont en fait deux choses complètement différentes.// Écrire des fonctions dans RhinoScript, Python ou d’autres langages de programmation est bien plus complexe que de créer des macros et requiert des connaissances et des compétences en programmation. |
+ | J' | ||
- | =====The tools you need:===== | ||
- | Your brain | ||
- | The Rhino Help file - | + | ===== Les outils nécessaires===== |
+ | * Votre cerveau :-P | ||
+ | * Le **fichier d'aide de Rhino** qui liste toutes les commandes de Rhino et leurs options. C’est votre document de référence. | ||
+ | * L’**ÉditeurMacro** de Rhino qui est une interface intégrée conçue pour créer et tester vos macros. | ||
+ | * Comprendre comment intégrer vos macros dans votre flux de travail sous forme d’alias ou de boutons de barre d' | ||
+ | ===== Vous avez déjà utilisé une ou deux macros...===== | ||
+ | Tout d’abord, si vous êtes utilisateur de Rhino, vous ne le savez peut-être pas mais vous avez déjà utilisé des macros. Dans Rhino, de nombreuses commandes sont déjà écrites sous forme de macros pour vous. Lorsque vous cliquez sur un bouton dans une barre d’outils ou sur une commande dans un menu, c’est souvent une macro prédéfinie. | ||
+ | //(shown: V6 for Windows)// | ||
- | The Rhino V4 or V3 SR4+ Bonus tool **MacroEditor**, | + | {{: |
- | =====You' | + | Ce bouton appelle simplement la commande |
- | First, if you are a user of Rhino, you are already a user of macros even though you may not know it. Many of the commands in Rhino are already “macroed” for you, when you click a toolbar button or call a command from the menu, it is often a preset macro. | + | |
- | {{: | + | C’est un exemple du type de macros le plus simple qui définit une série d’options |
- | This an example of the simplest | + | |
- | In a sense, you’re doing the same thing as if you clicked or typed the options | + | En un sens, cela revient au même que si vous cliquiez sur les boutons ou tapiez les options |
- | This scripting of options | + | Le scriptage d’options |
- | > **Note:** //Why the _Underscores? | + | >**Remarque :** //À quoi servent les tirets bas (_) ? |
- | ======Getting Started====== | + | ======Pour commencer===== |
- | Let’s say you have to place a series of 10 x 10 x 10 boxes with the center of the bottom face landing at the desired point, that point to be specified by either by a mouse click at the desired location or by keyboard entering the coordinates. | + | Imaginons que vous vouliez créer une série de boîtes de 10x10x10 en positionnant le centre de la base à l’endroit de votre choix, et que vous vouliez indiquer ce point d’insertion soit en cliquant avec la souris, soit en tapant les coordonnées au clavier. |
- | One could use the standard | + | Vous pourriez utiliser la commande Boîte |
- | Open the **MacroEditor**, type this in: | + | Ouvrez l’**ÉditeurMacro** et tapez le texte suivant : |
- | ! //Box // | + | ! _Box _Center |
- | All entries | + | //(C’est en fait la macro qui se trouve sous le bouton Boîte, Centre. Vous pouvez vérifier.)//\\ |
+ | Toutes les entrées | ||
- | Now, we need to specify the center | + | Nous devons à présent indiquer le point central. |
- | ! //Box // | + | ! _Box _Center |
- | Once the data has been entered, we can specify the size of the box directly in the command. | + | |
+ | Une fois les données saisies, vous pouvez indiquer la taille de la boîte directement dans la commande. | ||
- | ! //Box // | + | ! _Box _Center |
- | (Why the “r”? | + | |
+ | (À quoi correspond le « r » ? | ||
- | At this point we can put in the height, which in this case is relative | + | Vous pouvez maintenant indiquer la hauteur, qui dans ce cas est relative |
- | ! //Box // | + | ! _Box _Center |
- | Since there is no further input necessary nor options | + | |
+ | Comme il n’y a pas d’autre entrée nécessaire et qu’il n’y a plus d’autres | ||
- | ! //Box //Center // | + | ! _Box _Center _Pause |
- | Now that the macro is running and you are satisfied, [[rhino: | + | À présent que la macro fonctionne, [[rhino: |
- | ======OK, let’s get a bit more complicated…====== | + | > //À propos de la commande Pause :// |
- | Some commands invoke dialog boxes with many options. | + | Par exemple, la macro suivante |
- | =====Loft two open curves===== | + | ! _Polyline _Pause _SelLast |
- | Let’s say you would like to repetitively **Loft** two //OPEN// curves together to form a surface. | + | |
- | {@ | + | créera la polyligne, mais ne la sélectionnera pas à la fin. Pourquoi ? |
- | ====== _-Loft====== | + | |
- | _Pause | + | |
- | //Type=//Normal | + | |
- | // | + | En revanche, la macro suivante |
- | //Closed=//No | + | ! _Polyline _Multipause _SelLast |
+ | |||
+ | Fonctionne avec la sélection de la polyligne à la fin parce que Multipause inclut | ||
- | _Enter | + | =====Et maintenant, compliquons un peu les choses…===== |
- | }@ | + | |
- | Note that the command is invoked, and then immediately after the pause which allows you to pick your curves. | + | |
- | =====Modifying it for use with closed curves===== | + | Certaines commandes appellent des boîtes de dialogue contenant de nombreuses options. |
- | Now, try it with two closed curves. | + | |
- | Adding a pause in the right place will allow you to check and adjust the seam on screen: | + | =====Créer une surface par sections à partir de deux courbes ouvertes===== |
- | {@ | + | Imaginons que vous vouliez créer de manière répétitive une **Surface par sections** à partir de deux courbes // |
- | ====== | + | |
+ | < | ||
+ | _-Loft | ||
_Pause | _Pause | ||
- | _Pause | + | _Type=_Normal |
- | //Type=//Normal | + | _Simplify=_None |
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </code> | ||
- | //Simplify=//None | + | Remarquez que lorsque vous appelez la commande, vous avez immédiatement une Pause pour sélectionner vos courbes. |
- | //Closed=//No | + | =====Modifier cette macro pour l’utiliser avec des courbes fermées===== |
+ | Essayez à présent avec deux courbes fermées. | ||
+ | |||
+ | Ajoutez une pause au bon endroit pour vérifier et ajuster la jointure à l’écran : | ||
+ | |||
+ | < | ||
+ | _-Loft | ||
+ | _Pause | ||
+ | _Pause | ||
+ | _Type=_Normal | ||
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
_Enter | _Enter | ||
- | }@ | + | </ |
- | Adding an Enter instead of the Pause tells Rhino you don’t care, just leave the seam the way it is by default. | + | |
+ | Si vous écrivez Entrée au lieu de Pause, vous indiquez à Rhino que vous ne souhaitez rien spécifier. Que la jointure peut être laissée telle qu’elle est par défaut. | ||
- | {@ | + | < |
- | ====== | + | _-Loft |
_Pause | _Pause | ||
_Enter | _Enter | ||
- | //Type=//Normal | + | _Type=_Normal |
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </code> | ||
- | // | + | Ou, vous pouvez indiquer une autre option de jointure pour SurfaceParSections en descendant au niveau de la sous-option de jointure : |
- | // | + | < |
- | + | _-Loft | |
- | _Enter | + | |
- | }@ | + | |
- | Or, you can specify another Loft seam option by stepping down into the seam sub-option level: | + | |
- | + | ||
- | {@ | + | |
- | ====== | + | |
_Pause | _Pause | ||
_Natural | _Natural | ||
_Enter | _Enter | ||
- | //Type=//Normal | + | _Type=_Normal |
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </code> | ||
- | // | + | (Entrée après « Natural » est nécessaire pour sortir du niveau de l’option « jointure » et revenir au niveau des options de SurfaceParSections.) |
- | //Closed=//No | + | //Malheureusement, |
- | _Enter | ||
- | }@ | ||
- | (the Enter after Natural is necessary to exit the “seam” option level and get back up to the Loft options level) | ||
- | <color darkslateblue> | + | ======Utiliser des macros pour définir rapidement les options de votre interface====== |
+ | Les macros peuvent aussi être utilisées pour définir automatiquement diverses options GUI et des propriétés du document sans avoir à naviguer dans la boîte de dialogue d' | ||
- | ======Using Macros to set your interface options quickly====== | + | < |
- | + | ||
- | Macros can also be used to set various GUI and Document Properties options automatically without having to go wading into the Options dialog. | + | |
- | + | ||
- | {@ | + | |
-_DocumentProperties | -_DocumentProperties | ||
- | // | + | _Mesh _Custom |
- | + | _MaxAngle=0 _AspectRatio=0 | |
- | //MaxAngle=0 // | + | _MinEdgeLength=0 _MaxEdgeLength=0 |
- | + | _MaxEdgeSrf=0.01 _GridQuads=16 | |
- | // | + | _Refine=Yes _JaggedSeams=No |
- | + | ||
- | // | + | |
- | + | ||
- | //Refine=Yes // | + | |
_SimplePlanes=No | _SimplePlanes=No | ||
_Enter | _Enter | ||
_Enter | _Enter | ||
- | }@ | + | </code> |
- | Why two Enters at the end? | + | |
- | + | ||
- | Well you went down two levels in -_DocumentProperties, | + | |
- | + | ||
- | To script Crosshairs | + | |
- | + | ||
- | -//Options // | + | |
- | Notice the reference to each individual command option name. Specifying them inside the script is like clicking on them with the mouse. | + | |
- | + | ||
- | OR, if you just use an exclamation point ' | + | |
- | + | ||
- | The script above simply toggles the crosshairs ON and OFF, but let's say you wanted a script that always turned them ON and another that always turned them OFF...here' | + | |
- | + | ||
- | Always ON version: | + | |
- | + | ||
- | -//Options // | + | |
- | Always OFF version: | + | |
- | + | ||
- | -//Options // | + | |
- | Note the use of the ' | + | |
- | + | ||
- | (Thanks, Jeff) | + | |
- | + | ||
- | ======Other useful macro writing tools and commands====== | + | |
- | + | ||
- | There are some handy tricks for doing more complex macros. | + | |
- | + | ||
- | {@ | + | |
- | Select | + | |
- | + | ||
- | SelLast | + | |
- | + | ||
- | SelPrev | + | |
- | + | ||
- | SelNone | + | |
- | + | ||
- | SetObjectName | + | |
- | + | ||
- | SetGroupName | + | |
- | + | ||
- | SelGroup | + | |
- | + | ||
- | SelName | + | |
- | Group | + | Pourquoi y a-t-il deux fois « Entrée » à la fin ? |
- | Ungroup | + | Vous êtes descendu deux niveaux dans -_DocumentProperties (PropriétésDocument), |
- | }@ | + | La macro suivante |
- | To set a single object name (this in itself is a macro!): | + | |
- | // | + | Pour ACTIVER ou DÉSACTIVER le pointeur en croix, écrivez la macro suivante pour un bouton : |
- | To cancel a single object name (without deleting the object) | + | < |
+ | -_Options _Appearance _Visibility | ||
+ | _Crosshairs _Enter _Enter _Enter | ||
+ | </code> | ||
+ | Vous constatez qu’il indique à chaque fois le nom de l’option et de la sous-option de la commande. | ||
- | // | + | **EnterEnd** est un bon moyen pour ressortir d’une commande sans avoir à compter le nombre de sous-niveaux dans lesquels vous êtes descendu. |
- | =====Examples using the above tools===== | + | |
- | Have a look at the following macro: | + | |
- | {@ | + | < |
- | ====== Select Pause _Setredrawoff====== | + | |
- | // | + | </code> |
- | //Selnone //Sellast | + | Ou, si vous utilisez tout simplement un point d’exclamation **!** à la fin (ce qui dans un script signifie « terminer maintenant ! »), |
- | //OffsetSrf //Solid _Pause | + | Le script ACTIVE ou DÉSACTIVE simplement le pointeur en croix. Mais si vous voulez un script qui l’ACTIVE toujours et un autre qui le DÉSACTIVE toujours, voici à quoi cela ressemblerait : |
- | //Delete //Sellast | + | Version toujours ACTIVÉ : |
+ | < | ||
+ | -_Options _Appearance _Visibility | ||
+ | _Crosshairs=_Show ! | ||
+ | </code> | ||
+ | Version toujours DÉSACTIVÉ : | ||
+ | < | ||
+ | -_Options _Appearance _Visibility | ||
+ | _Crosshairs=_Hide ! | ||
+ | </code> | ||
+ | Remarquez bien que nous utilisons un **!** ici. Remarquez aussi que vous pouvez assigner directement les valeurs disponibles pour les options en utilisant l’opérateur « = ». | ||
- | // | + | (Merci, Jeff) |
- | //Delete // | + | ======Autres outils et commandes utiles pour l’écriture de macros====== |
- | }@ | + | Voici quelques astuces pratiques pour écrire des macros plus complexes. |
- | It creates an offset bounding box around an object, the offset is input by the user. | + | |
- | **//As a final example,// | + | < |
+ | _Select (Sélectionner) | ||
+ | _SelLast (SélDerniers) | ||
+ | _SelPrev (SélPréc) | ||
+ | _SelNone (RienSélectionner) | ||
+ | _SetObjectName (DéfinirNomObjet) | ||
+ | _SetGroupName (NommerGroupe) | ||
+ | _SelGroup (SélGroupe) | ||
+ | _SelName (SélNom) | ||
+ | _Group (Grouper) | ||
+ | _Ungroup (Dégrouper) | ||
+ | </code> | ||
+ | Pour définir le nom d’un seul objet (ce qui est déjà une macro !) : | ||
+ | < | ||
+ | _Properties _Pause _Object _Name | ||
+ | [Insérez le nom de votre objet ici] _Enter _Enter | ||
+ | </code> | ||
+ | Pour annuler le nom d’un seul objet (sans supprimer l’objet) | ||
+ | < | ||
+ | _Properties _Pause _Object _Name | ||
+ | “ “ _Enter _Enter (guillemets espace guillemets pour le nom) | ||
+ | </ | ||
- | Note the use of a named group and various selection commands. | + | =====Exemples d’utilisation des outils précédents===== |
- | {@ | + | Regardez la macro suivante : |
- | ====== Select Pause Noecho Setredrawoff====== | + | |
- | //Group //Enter _SetGroupName TexTemp | + | |
- | // | + | < |
+ | _Select _Pause _Setredrawoff | ||
+ | _BoundingBox _World _Enter | ||
+ | _Selnone _Sellast | ||
+ | _OffsetSrf _Solid _Pause | ||
+ | _Delete _Sellast | ||
+ | _BoundingBox _World _Enter | ||
+ | _Delete _Setredrawon | ||
+ | </code> | ||
+ | Elle crée une boîte de contour décalée autour d’un objet. Le décalage est indiqué par l’utilisateur. | ||
- | //SelNone | + | **//En tant que dernier exemple,//** la macro suivante crée un point centré sur un objet plat en 2D ou un objet de texte et le groupe avec l’objet. Elle considère que vous êtes dans la même vue que celle dans laquelle le texte a été créé et que l’objet est réellement en 2D ou plat (autrement il est probable qu’elle échoue). |
- | // | + | Remarquez l’utilisation d’un groupe nommé et de plusieurs commandes de sélection. |
- | //Ungroup // | + | < |
+ | _Select _Pause _Noecho _Setredrawoff | ||
+ | _Group _Enter _SetGroupName TexTemp | ||
+ | _BoundingBox _CPlane _Enter | ||
+ | _SelNone _SelLast _PlanarSrf | ||
+ | _SelPrev _Delete _SelLast | ||
+ | _AreaCentroid _Delete | ||
+ | _Sellast _SelGroup TexTemp | ||
+ | _Ungroup _Group | ||
- | }@ | + | </ |
- | ==Please feel free to add to or edit this tutorial!== | + | |
- | This is a work in progress... | + | |
+ | //Dernière modification : | ||
+ | **N’hésitez pas à ajouter des éléments ou à modifier ce tutoriel !** | ||
+ | C’est un article en cours de développement... | ||