Construire dynamiquement le nom d'une fonction AutoLISP

Supposons que vous avez défini deux fonctions : f1 et f2. Vous voulez appeler l'une ou l'autre en vous basant sur le contenu d'une variable a qui contient 1 ou 2.

Il faut d'abord construire le nom de la fonction avec strcat :

(setq function-name (strcat "f" (itoa a)))

Puis il faut convertir la chaîne obtenue en symbole. On peut faire ça avec la fonction atoms-family :

(setq function-symbol (atoms-family 0 (list function-name))

Une fois qu'on a le symbole, on peut exécuter la fonction avec eval :

(eval function-symbol)

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.