Aller au contenu

Messages recommandés

Posté(e)

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))

Posté(e)

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

Posté(e)

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). :rolleyes:

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é