Aller au contenu

Messages recommandés

Posté(e)

Bonjours,

 

(setq Variable "Texte")

(c:Variable)

 

Evidement ne fonctionne pas.

 

J'ai essayer avec Eval mais rien de concluant.... :(

 

Je ne comprends pas ce que tu cherches à faire.

Si tu veux utiliser une variable avec un nom de commande (chaîne), c'est possible :

(setq variable "_text")

(command variable ...)

Mais tu semble confondre commandes les natives d'AutoCAD avec les fonctions LISP préfixées avec 'c:' qui peuvent, certes, être appelées en lignes de commande mais restent des fonctions LISP sans être de véritables commandes (par contre, les commandes ou les fonctions LISP définies en .NET ou ObjectARX sont de véritables équivalents des commandes et fonctions LISP natives).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Si la fonction LISP s'appelle : toto et qu'une variable contient la chaîne : "toto", il faut "lire" la variable (convertir la chaîne en symbole), puis évaluer le symbole :

(setq var "toto")
(eval (list (read var)))

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Il faut vérifier qu'une valeur est bien affectée au symbole retourné par (read var), autrement dit, qu'il n'est pas nil.

 

(if (boundp (read var))
 (eval (list (read var)))
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut,

 

Mais comment le tester sans crasher le lisp si le lisp appelé n'existe pas?

 

Pour un lisp utilise la fonction type:

(if (= (type (eval (read var))) 'USUBR) ;test si c'est une fonction lisp 
 ((eval (read var))) ; lance le lisp
)

 

Ps : Avec boundp il faudra privilégier la syntaxe suivante (boundp ‘var) si je ne me trompe car dans le teste (boundp (read var)), read renverra une erreur si var est nil..

 

A+

Apprendre => Prendre => Rendre

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité