bseb67 Posté(e) le 9 octobre 2007 Posté(e) le 9 octobre 2007 Salut! Je planche sur un problème de dcl depuis ce matin :( . Ca doit être faisable, puisque certaines boite de dialogues d'autocad le font. Déroulement de ce que je cherche:Je clique sur mon bouton, qui ouvre une dcl. Il y a bien sûr le bouton ok et cancel, mais d'autres boutons, si je clique sur un de ces boutons, je voudrai que l'utilisateur puisse cliquer sur un objet dans le dessin donc fermer la dcl, traiter l'objet choisi, puis de ré-afficher la dcl. Exemple pour un bouton: (action_tile "btn_fichier_ARC" "(DONE_DIALOG)(set_tile \"fichier_ARC\" (setq var_f_ARC (recuperer_texte (entsel))))") Je fais bien un DONE_DIALOG, j'initialise un edit avec l'objet cliqué. Mais dans la commande autocad, je vois bein apparaître "cliquez sur un objet:", mais la boite de dialogue reste affichée et là je ne peux plus rien faire (ca boucle :( ). Si quelqu'un peut m'éclairer, je suis preneur :) Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
(gile) Posté(e) le 9 octobre 2007 Posté(e) le 9 octobre 2007 Salut, Il faut dans ton LISP faire une boucle avec start_dialog/done_dialog. Tu peux voir un exemple simple ici Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bseb67 Posté(e) le 9 octobre 2007 Auteur Posté(e) le 9 octobre 2007 Salut et merci. Mais j'ai trouvé (une autre facon peut-être).Je fait:(action_tile "btn_fichier_ARC" "(setq f_ARC t)(DONE_DIALOG)") Puis après le (unload_dialog dcl_id) (cond (f_arc (setq var_f_ARC (recuperer_texte (car (entsel)))) (lance_dcl) ) ; f_arc) ; cond A+! PS: J'ai hâte de voir ta façon pour le challenge12. J'en lancerai un prochainement ;) Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
(gile) Posté(e) le 9 octobre 2007 Posté(e) le 9 octobre 2007 J'ai hâte de voir ta façon pour le challenge12. J'attends un peu que des réponses se présentent... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 11 octobre 2007 Posté(e) le 11 octobre 2007 Ah dément un challenge 13 !! (action_tile "btn_fichier_ARC" "(setq f_ARC t)(DONE_DIALOG)")ta technique ne fonctionne que si un seul bouton de saisie utilisateur hors de la boîte de dialogue est disponible... Tu peux donner des flags à (done_dialog) qui te permettent de pouvoir donner des instructions pour chaque boutons...Avec un (setq loop (start_dialog)), tu donnes à la varible loop le flag de ton bouton, puis avec un (cond ((eq loop [flag du bouton])... Tu définis les actions pour ce bouton... Enfin bon je suppose que tu sais déjà tout ça... Voilà ! A bientot.Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
bseb67 Posté(e) le 11 octobre 2007 Auteur Posté(e) le 11 octobre 2007 Salut Matt666, Enfin bon je suppose que tu sais déjà tout ça Pas vraiment, je sais que l'on peut faire un (done_dialog x). Mais c'est, j'ai réussi à faire ce que je voulais. J'ai des variables globales qui contiennent le choix de l'utilisateur lors d'un clic, comme cela en bouclant sur la fonction qui lance la dcl, il peut faire toutes les étapes et dans n'importe quel ordre.Si j'ai le temps, je ferai une version simplifiée. Pour le futur challenge, disons qu'il n'est pas trop en rapport avec autocad, c'est plus tot l'intérêt des listes (encore :o ), et pour une fois pas vraiment un exercice :casstet: ! Je le lancerai dimanche ou lundi. a+ Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
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