Aller au contenu

Afficher en Continue ?


willy95

Messages recommandés

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.

Lien vers le commentaire
Partager sur d’autres sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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)

)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

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)

 

 

screen10.jpg

 

Un peu comme cela (sans les activations et les couleurs) :

 

screen11.jpg

Lien vers le commentaire
Partager sur d’autres sites

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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

 


(if (= (getvar 'OSNAPZ )0)

(setvar "MODEMACRO" "OSNAPZ=0 (sur le Nuage) = $(getvar, osnapz)")

(setvar "MODEMACRO" "OSNAPZ=1 (sur le Plan) = $(getvar, osnapz)"))

Lien vers le commentaire
Partager sur d’autres sites

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

 

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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

 

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.

Lien vers le commentaire
Partager sur d’autres sites

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é