willy95 Posté(e) le 5 août 2016 Posté(e) le 5 août 2016 Bonjour, à présent "j'arrive" à faire appel à des boite de dialogue via le lisp, mais car il y a mais, <_< je bloque sur "Suivant", je m'explique : je lance un lisp qui appel une boite de dialogue avec des choix de symboles à insérer via des petites images "sld" et jusque la cela fonctionne à merveilles :D (merci au passage des précieux conseils aux Membres de ce site sans qui je n'arriverai à rien) et j'aimerai pouvoir grâce à un bouton suivant que j'ai insérer comme prévu mais en revanche je n'arrive pas à lui faire fermer la boite en cour pour en ouvrir une nouvelle, malgré de nombreuses tentatives aussi foireuses les unes que les autres. :angry: Alors si une Ame charitable traine sur ce post et qui souhaite aider son prochain ou plutôt Suivant ce serait vraiment sympa. Jetez un petit œil sur l'idée du code suivant, en vous remerciant par avance pour votre aide future. :unsure: (setq Slides@ (list nil "Choix1" "Choix2" "Suivant") Choix1$ (nth Slides@) Choix2$ (nth Slides@) Suivant$ (nth Slides@) Folder$ "" Return$ "") (setq Dcl_Id% (load_dialog "MaBoitePage1.dcl")) (new_dialog "MaBoitePage1" Dcl_Id%) (set_tile "Choix1" Choix1$) (set_tile "Choix2" Choix2$) (set_tile "Suivant" Suivant$) (action_tile "Choix1" (setq Return$ Choix1$") (action_tile "Choix2" (setq Return$ Choix2$") (action_tile "Suivant" (setq Return$ Suivant$") (start_dialog) (unload_dialog Dcl_Id%) (IF (= Return$ Choix1$) (progn (command "_insert" "Choix1" 0,0 1 1 0) (prin1)) (IF (= Return$ Choix2$) (progn (command "_insert" "Choix2" 0,0 1 1 0) (prin1)) (IF (= Return$ Suivant$) (progn (..................) (prin1))
(gile) Posté(e) le 5 août 2016 Posté(e) le 5 août 2016 Salut, Il faut initialiser la boite de dialogue dans une boucle tant que l'utilisateur ne fait pas OK ou annuler.On attribue différentes valeurs pour done_dialog aux actions des contrôles et récupère cette valeur retournée pas (start_dialog) suivant le contrôle qui a été actionné.Tu peux voir ce sujet dans l'aide. J'ai simplifié le code (supprimé des choses inutiles) (setq slides (list "Choix1" "Choix2" "Suivant") status 2 dcl_id (load_dialog "MaBoitePage1.dcl") ) (while (< 1 status) (new_dialog "MaBoitePage1" dcl_id) (set_tile "Choix1" (car slides)) (set_tile "Choix2" (cadr slides)) (set_tile "Suivant" (caddr slides)) (action_tile "accept" "(done_dialog 1)") (action_tile "Choix1" "(done_dialog 2)") (action_tile "Choix2" "(done_dialog 3)") (action_tile "Suivant" "(done_dialog 4)") (setq status (start_dialog)) (cond ((= status 0) (prompt "\nBoite de dialogue fermée par Annuler")) ((= status 1) (prompt "\nBoite de dialogue fermée par OK")) ((= status 2) (command "_insert" "Choix1" 0.0 1 1 0) (prin1) ) ((= status 3) (command "_insert" "Choix2" 0.0 1 1 0) (prin1) ) ((= status 4) (alert "Suivant") ) ) ) (unload_dialog dcl_id) PS: si tu utilisais l'éditeur Visual LISP, tu aurais vu que le code que tu as posté est truffé d'erreurs de parenthèses et de guillemets... PPS: ta question ne concerne pas ObjectDCL (ni OpenDCL) mai du DCL standard, je déplace donc le sujet dans "Pour aller plus loin en LISP" Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 10 août 2016 Auteur Posté(e) le 10 août 2016 Bonjour à tous, Merci Gile pour cette réponse qui m'ouvre encore les yeux sur de nouvelles aventures. :D Grâce à tes lignes de codes que j'ai décortiquée :wacko: , j'ai réussi à intégrer ma page suivante en fermant la précédente. J'ai bien sûr adapté ce principe à mon code avec et comme toujours un style non conventionnel, mais cela marche à merveille. :wub: Encore merci et à une prochaine (surement un blocage quelque part dans mes idées futures).
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