stephan35 Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Bonjour, Me voilà rendu dans le gas-oil !humm humm humm ... Un petit coup de pouce svp : J'ai récupéré grace aux véterans (encore merci à vous) un petit exemple qui me permet grace à une variable de faire un choix entre 2 sous fonctions pour un même boutons, seulement dans mon cas mes guillemets sont ignorés $M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^C(rcalque "NEUTRE");_line;,^C^C(@mess 1)) donne (rcalque NEUTRE) !!! :casstet: Merci !
(gile) Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Salut, Dans ta macro l'expression (rcalque "NEUTRE") est une expression LISP, il faut donc faire précéder les guillemets par une "barre oblque" (anti-slash) : $M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^C(rcalque \"NEUTRE\");_line;,^C^C(@mess 1)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 3 mai 2007 Auteur Posté(e) le 3 mai 2007 J'ai voulu revérifier, je l'avais tenté et il l'interprête comme une attente d'entrée au clavier :casstet: Commande: (rcalqueCommande:Commande: (rcalque(_> NEUTRE*Annuler* Merci ...
(gile) Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 En effet j'ai répondu une bétise, les expressions LISP ne semblent pas faire bon ménage à l'intérieur d'expressions Diesel.Peut-être faut-il obligatoirement passer par des commandes : (defun c:toto () (rcalque "NEUTRE")(princ)) (defun c: tata ()(@mess 1)(princ)) et appeler toto et tata depuis la macro. $M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^Ctoto;_line;,^C^Ctata;) Pas testé non plus. [Edité le 3/5/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 3 mai 2007 Auteur Posté(e) le 3 mai 2007 Bon, Les parametres sans guillemets fonctionnent bien :(@mess 1) ne pose aucun soucis, Par contre pour le (rcalque "neutre") c'est embêtant de repasser par un fonction pour executer une fonction ! :casstet: Je cherche un peu de mon coté !
bonuscad Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Le diesel est un évaluateur de chaine, pour qu'il ne l'évalue pas directement, il n'y a pas moyen.Je tenterais de passer par la variable USERS1 en lui plaçant la chaine "NEUTRE" et non pas NEUTRE. Essayes ceci (je ne peux pas tester) $M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^C(rcalque $(getvar,users1));_line;,^C^C(@mess 1)) Si cela fonctionne, il te faudra définir dans ta macro la variable USERS1 AVANT le $M= qui lance l'évaluateur diesel Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
stephan35 Posté(e) le 3 mai 2007 Auteur Posté(e) le 3 mai 2007 FRAPPADINGUE !!!! (setvar "users1" (strcat (chr 34) "NEUTRE" (chr 34)));$M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^C(rcalque $(getvar,users1));_line;,^C^C(@mess 1)) pour mettre les guillemets (chr 34) à cause du \ qui est considéré comme une attente utilisateur ! Dans ce cas, il n'y aurait pas l'équivalent en diesel afin d'éviter de passer par une variable ???
bonuscad Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Dans ce cas, il n'y aurait pas l'équivalent en diesel afin d'éviter de passer par une variable ??? Hé non, du moins pas à ma connaissance. Le diesel empêche l'usage des guillemets "" et les macros dans les menu l'usage de l'anti-slash \, ce symbole étant affecté à la pause pour l'utilisateur. Je pense pas que tu sois obligé de passer par une expression lisp pour définir USERS1^C^CUSERS1;"NEUTRE",devrait fonctionner aussi, je dis ça pour un usage sur une LT (ce qui n'a pas l'aire d'être ton cas) Dans ce cas une expression lisp aurait été peut être plus facile, quitte à employer (lambda ...) pour avoir une fonction anonyme dans ton bouton. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
rebcao Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 coucou roucoucou, :) lorsque je suis confronté à des \...\ dans une MACRO je fais appel à un SCRIPT à l'intérieur de ma MACRO... par exemple lorsqu'il s'agit d'appeler un fichier en utilisant son chemin absolu ! Mais ça ne fonctionne pas toujours si la MACROS est plus ou moins complexe... en général ça marche Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
stephan35 Posté(e) le 4 mai 2007 Auteur Posté(e) le 4 mai 2007 Merci à tous, Faute de solution satisfaisante j'utiliserai la solution proposée par bonuscad :^C^CUSERS1;"NEUTRE", ..... lorsque je suis confronté à des \...\ dans une MACRO je fais appel à un SCRIPT à l'intérieur de ma MACRO... par exemple lorsqu'il s'agit d'appeler un fichier en utilisant son chemin absolu ! Celle-ci aurait pu fonctionner, mais je développe en relatif, a tout moment mon arborescence peut changer (indexée sur une autre variable), Hormis le coté fonctionnel (c'est le résultat qui compte) à mon avis çette solution aurais tendance à semer des fichiers un peu partout ... PS: il est vrai que j'aurais aussi pu faire le tout en lisp .... :casstet:
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