Fraid Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 Bonjours, (setq Variable "Texte")(c:Variable) Evidement ne fonctionne pas. J'ai essayer avec Eval mais rien de concluant.... :( https://github.com/Fraiddd
Patrick_35 Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 Salut Si tu souhaites interroger la variable sur la ligne de commande, mets un point d'exclamation devant (ex !ma_variable) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 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
Fraid Posté(e) le 27 septembre 2012 Auteur Posté(e) le 27 septembre 2012 Tout a fait je me suis mal exprimé, C'est bien un lisp que je veux lancer selon un texte dans ce cas la (command variable) repond commande inconnue https://github.com/Fraiddd
(gile) Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 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
Fraid Posté(e) le 27 septembre 2012 Auteur Posté(e) le 27 septembre 2012 Merci, j'y etait presque... Mais comment le tester sans crasher le lisp si le lisp appelé n'existe pas? https://github.com/Fraiddd
(gile) Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 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
VDH-Bruno Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant