willy95 Posté(e) le 23 novembre 2017 Posté(e) le 23 novembre 2017 Bonjour, Est-il possible d'ouvrir une boite de dialogue avec 2 choix possible avec radio_button et de valider avec "ok" et que cette boite reste ouverte pendant que l'on dessine, puis choisir l'autre choix et validé avec "ok" et continuer à dessiner avec cette nouvelle variable choisi ? En clair comment faire une boite de dialogue qui peut être ouverte et dessiner en même temps sans la refermer ? Merci pour vos réponse constructives.
(gile) Posté(e) le 23 novembre 2017 Posté(e) le 23 novembre 2017 Salut, En "pur DCL", ce n'est pas possible, les boites de dialogues ne peuvent être que modales.Avec ObjectDCL ou OpenDCL il est possible de définir des boites de dialogue non-modales (modeless). Ce type de boite de dialogue est beaucoup plus délicat à gérer. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 24 novembre 2017 Auteur Posté(e) le 24 novembre 2017 Oulala... Merci "Gile" pour cette explication clair et instructive. Je pose mon petit code exemple type ci-dessous, peut-être que certaines personnes bien calées sur le sujet vont prendre ça comme un défi (je l'espère grandement) et trouver une solution en "modeless" pour laisser la Boite active pendant que l'on dessine; car j'avoue que "OpenDcl" est graphiquement très parlant mais l'utilisation est encore pour moi difficile, je vais l'étudier avec attention. Merci pour vos éventuelles solutions.. (defun C:o (/ ) (setq tmposnapz (vl-filename-mktemp "Osnapz01.dcl") file (open tmposnapz "w")) (write-line "Osnapz01 : dialog { key = \"Titre\"; label = \"OSNAPZ\"; spacer; : row { : radio_button { label = \"OSNAPZ 0\"; key = \"OSN0\"; height = 1; edit_width = 26; fixed_width = true; alignment = left;} : radio_button { label = \"OSNAPZ 1\"; key = \"OSN1\"; height = 1; edit_width = 26; fixed_width = true; alignment = left;}} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmposnapz)) (new_dialog "Osnapz01" Dcl_Id) (action_tile "OSN0" (vl-prin1-to-string '(if (= $value "1") (setvar "osnapz" 0) (setvar "osnapz" 1) ))) (action_tile "OSN1" (vl-prin1-to-string '(if (= $value "1") (setvar "osnapz" 1) (setvar "osnapz" 0) ))) (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmposnapz) )
bonuscad Posté(e) le 24 novembre 2017 Posté(e) le 24 novembre 2017 Bonjour, Et une expression diesel dans un bouton ne serait pas plus simple et aussi efficace? ^P$M=$(if,$(=,$(getvar,OSNAPZ),0),'OSNAPZ;1;,'OSNAPZ;0;)^Z Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
willy95 Posté(e) le 7 décembre 2017 Auteur Posté(e) le 7 décembre 2017 Bonjour, Suite aux bon conseils de "Giles" j'ai installé "ObjetDCL" et créer un fichier *.ODC, mais je n'arrive pas à lancer cette boite de dialogue dans mon lisp, après plusieurs tentative non fructueuse je bloque encore.... Quelqu'un peut-il me présenté les quelques lignes de code en lisp pour charger cette boite ODC ? Merci par avance
DenisHen Posté(e) le 7 décembre 2017 Posté(e) le 7 décembre 2017 Salut. Personnellement, j'utiliserais ce bout de code de Maître (gile)... On peut remplacer tes bouton ratio par un texte avec ce code... :;; ListBox (gile) ;; Boite de dialogue permettant un ou plusieurs choix dans une liste ;; ;; Arguments ;; title : le titre de la boite de dialogue (chaîne) ;; msg ; message (chaîne), "" ou nil pour aucun ;; keylab : une liste d'association du type ((key1 . label1) (key2 . label2) ...) ;; flag : 0 = liste déroulante ;; 1 = liste choix unique ;; 2 = liste choix multipes ;; ;; Retour : la clé de l'option (flag = 0 ou 1) ou la liste des clés des options (flag = 2) ;; ;; Exemple d'utilisation ;; (listbox "Présentation" "Choisir une présentation" (mapcar 'cons (layoutlist) (layoutlist)) 1) (defun ListBox (title msg keylab flag / tmp file dcl_id choice) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) ;_ Fin de setq (write-line (strcat "ListBox:dialog{label=\"" title "\";") file) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) ;_ Fin de if (write-line (cond ((= 0 flag) "spacer;:popup_list{key=\"lst\";") ((= 1 flag) "spacer;:list_box{key=\"lst\";") (T "spacer;:list_box{key=\"lst\";multiple_select=true;") ) ;_ Fin de cond file ) ;_ Fin de write-line (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ListBox" dcl_id)) (exit) ) ;_ Fin de if (start_list "lst") (mapcar 'add_list (mapcar 'cdr keylab)) (end_list) (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (if (= 2 flag) (progn (foreach n (str2lst (get_tile \"lst\") \" \") (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))) (setq choice (reverse choice))) (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab))))) (done_dialog)" ) ;_ Fin de action_tile (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) ;_ Fin de defun Je n'ai jamais réussis à faire fonctionner OpenDCL... Mais si c'est pour "jongler" entre plusieurs types d'accroche objet, deux boutons dans une palette sera la solution la plus rapide, et à son "développement" et à son utilisation... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
willy95 Posté(e) le 2 janvier 2018 Auteur Posté(e) le 2 janvier 2018 Bonjour et Je vous souhaite à tous et à toutes une Bonne Année 2018, qu'elle s'accomplit avec succès et prospérité pour vos projets personnels et professionnels. :D Par ailleurs, ne serait-il pas possible de faire une barre comme les "controles" de calque, de couleur ou de type de ligne ? Avec deux choix possible comme quand on voit le calque courant dans la barre de contrôle des calques en plus simplifié ?(Cela me permettrai de voir à chaque instant si mon "Osnapz" est en 0 ou en 1) Un peu comme cela (sans les activations et les couleurs) :
willy95 Posté(e) le 9 janvier 2018 Auteur Posté(e) le 9 janvier 2018 C'est vraiment pas possible de faire une simple barre de contrôle avec 2 choix ? :wacko:
Tramber Posté(e) le 9 janvier 2018 Posté(e) le 9 janvier 2018 En général, on fait une checkbox pour cela. Sinon une liste contrôlé c'est possible aussi (mais d'apparence plus simple).Là on est dans le forum ODCL mais je parle bien de DCL, que je ne programme pas.En ODCL, ce que tu demandes ne pose pas de problème non plus et présente l'avantage de te laisser créer une boite non-modale, qui reste à l'écran tout le temps. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
willy95 Posté(e) le 10 janvier 2018 Auteur Posté(e) le 10 janvier 2018 Merci pour vos réponse, mais un peu difficile à mettre en place pour moi, en revanche j'ai trouver l'insertion dans la Barre inférieur d'Autocad à placer en permanence la valeur du "Osnapz" visisible à chaque instant dans mon code de choix. :D (Bien sur le top serait de pouvoir changer la couleur de ce texte en fonction, mais bon, je ne veux plus être plus Royaliste que le Roi. (if (= (getvar 'OSNAPZ )0) (setvar "MODEMACRO" "OSNAPZ=0 (sur le Nuage) = $(getvar, osnapz)") (setvar "MODEMACRO" "OSNAPZ=1 (sur le Plan) = $(getvar, osnapz)"))
Tramber Posté(e) le 10 janvier 2018 Posté(e) le 10 janvier 2018 Merci pour vos réponse, mais un peu difficile à mettre en place pour moi, en revanche j'ai trouver l'insertion dans la Barre inférieur d'Autocad à placer en permanence la valeur du "Osnapz" visisible à chaque instant dans mon code de choix. :D (Bien sur le top serait de pouvoir changer la couleur de ce texte en fonction, mais bon, je ne veux plus être plus Royaliste que le Roi. Un temps, avec mon install Autodesk Architectural Desktop, j'avais une bascule OSNAPZ dans la barre du bas (eh oui !) pour le retour de laquelle j'avais milité autant que je pouvais. C'est exactement ce que tu recherches et que l'on devrait réclamer. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
willy95 Posté(e) le 12 janvier 2018 Auteur Posté(e) le 12 janvier 2018 Bonjour, J'aimerai rajouté à ma barre la valeur d'echelle d'insertion comme ci-dessous,MAIS pas avec la valeur numérique mais le texte qui la définie (par exemple : Sans unité ) Comment dois-faire ? j'ai bien tester avec un "strcat" mais cela ne marche pas. :angry: (setvar "MODEMACRO" "Echelle d'Insertion : $(upper,$(getvar,insunits))"))) Merci par avance pour vos réponses.
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