Les macros de commandes peuvent inclure des commandes, des caractères spéciaux, des expressions DIESEL ou le code de programmation AutoLISP.
Vous pouvez définir puis affecter une macro à une commande en modifiant la propriété Macro de cette dernière dans la boîte de dialogue Personnaliser interface utilisateur (Windows) ou Personnaliser (Mac OS).
Une macro définit l'action devant être effectuée lorsqu'un élément de l'interface utilisateur est utilisé. Elle peut être aussi simple qu'une commande (par exemple, circle) et inclure des caractères spéciaux (tels que ^C^C).
Par exemple, la macro ^C^C_.circle \1 dessine un cercle avec un rayon de 1 unité. Le tableau suivant présente les composants qui définissent cette macro.
Composants de la macro CIRCLE |
||
---|---|---|
Composant |
Type de composant |
Résultat |
^C^C |
Séquence de caractères de contrôle spéciaux |
Séquence semblable au fait d'appuyer deux fois sur la touche Echap. |
_ |
Caractère de contrôle spécial |
Indique que la commande qui suit doit utiliser le nom de commande global et non le nom de commande localisé. |
. |
Caractère de contrôle spécial |
Indique que la commande qui suit doit utiliser la définition de la commande et non la commande redéfinie susceptible d'exister. |
CERCLE |
Nom de commande |
Lance la commande CERCLE. |
Caractère spécial |
Un espace revient à appuyer sur la barre d'espacement lors de l'utilisation d'une commande. |
|
\ |
Caractère de contrôle spécial |
Crée une pause pour la saisie utilisateur. Dans cet exemple, il s'agit d'une pause pour saisir le centre du cercle. |
1 |
Entrée de valeur |
Réponse à l'invite demandant d'indiquer le rayon du cercle ; dans cet exemple, l'unité est égale à 1. |
Lorsque vous cliquez sur un bouton de l'interface utilisateur, la macro qui lui est affectée est exécutée dans le contexte courant du programme. Cela signifie que la macro va tenter d'envoyer des réponses à l'invite courante. Si vous souhaitez vous assurer qu'aucune commande n'est active lors de l'exécution de la macro, ajoutez la séquence de commandes ^C en tant que préfixe à votre commande. Bien qu'un simple symbole ^C permette d'annuler la plupart des commandes, les symboles ^C^C sont requis pour retourner à l'invite de commande à partir de la commande de cotation, et les symboles ^C^C^C sont requis en fonction de l'option courante de la commande -CALQUE. La séquence ^C^C permet d'annuler la plupart des séquences de commande et il est donc recommandé de l'utiliser.
Chaque caractère d'une macro a sa propre signification, même les espaces. Si vous placez un espace à la fin de la macro, il est traité comme si vous avez appuyé sur la touche d'espacement ou sur Entrée pour mettre fin à la commande.
Les commandes d'AutoCAD ou des produits basés sur AutoCAD doivent utiliser un point (.) en tant que préfixe. Le point permet d'utiliser la commande standard même si sa définition a été annulée à l'aide de la commande NONDEF. Cette précaution rend la macro prévisible lors de son utilisation sur d'autres ordinateurs partageant le même fichier de personnalisation (CUI/CUIx).
Lorsque vous créez une macro, vous utilisez les noms de commande et les valeurs d'options dans la langue du produit que vous maîtrisez. Chaque commande/option dispose d'un nom local et d'un nom global qui permet aux macros d'être utilisées par les autres langues du produit. La prise en charge dans une langue autre que l'anglais ne nécessite pas beaucoup de travail supplémentaire de votre part. Il vous suffit de faire précéder chaque commande ou option d'un caractère de soulignement (_). Ce caractère de soulignement indique au programme que le nom de la commande ou la valeur de l'option doit être traduit dans la langue locale du produit avant son exécution.
Le mode de sélection d'objet unique annule la répétition normale de l'invite Choix des objets dans les commandes d'édition. Une fois que vous avez sélectionné un objet et répondu aux invites, la commande prend fin.
Examinez la macro de l'exemple suivant :
^C^C._erase single
Cette macro arrête la commande courante et lance la commande EFFACER en mode de sélection d'objet unique. Une fois la macro lancée, vous pouvez sélectionner un seul objet ou cliquer sur une zone vide du dessin, puis spécifier une sélection de fenêtre/d'intersection. Tous les objets sélectionnés à l'aide de ces méthodes sont effacés.
Après avoir créé une macro, vous pouvez répéter son utilisation avant de passer à une autre commande. Dans une macro, utilisez un astérisque (*) au début pour indiquer que la commande d'une macro doit être répétée jusqu'à ce que vous appuyiez sur la touche Echap ou lanciez une autre macro commençant par ^C.
Les macros des exemples suivants répètent les commandes :
*^C^C._move Single *^C^C._copy Single *^C^C._erase Single *^C^C._stretch Single Crossing *^C^C._rotate Single *^C^C._scale Single
Certaines macros requièrent des caractères de fin spéciaux. Par exemple, la commande TEXTE implique d'appuyer sur la touche Entrée plutôt que sur la touche d'espacement pour mettre fin à la commande, et certaines commandes requièrent plusieurs pressions de la barre d'espacement ou de la touche Entrée pour être arrêtées.
Deux conventions spéciales permettent de résoudre ces problèmes.
Comparez les deux macros suivantes :
ucs ucs ;
Le premier exemple lance la commande SCU et, puisque la ligne se termine par un espace, il simule une pression de la barre d'espacement. Les invites suivantes s'affichent :
Spécifiez l'origine du SCU ou [Face/NOmmé/OBjet/Précédent/Vue/Général/X/Y/Z/AxeZ] <Général>:
Le second exemple lance la commande SCU, simule une pression de la barre d'espacement, puis une pression de la touche Entrée pour accepter la valeur par défaut (Général).
Les caractères d'une macro s'affichent sur l'invite de commande comme si vous les aviez saisis au clavier. Cette duplication d'affichage est appelée écho. Vous pouvez supprimer l'écho des macros à l'aide de la variable système MENUECHO. Si les retours et les invites issus de la saisie d'un élément sont activés, vous pouvez introduire ^P devant la macro pour les désactiver temporairement. Vous pouvez également utiliser ^Q dans une macro pour supprimer l'affichage de toutes les invites et entrées de l'historique de la ligne de commande.