Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous.

 

Voilà, aujourd'hui, j'ai fais un(e) super DCL qui fonctionne très bien. Sauf lorsque je la charge. :huh:

 

En effet, je cherche à modifier le "value" d'un "radio_button". J'ai ça, et c'est inopérant :

      (if (= Xyz "Oui")
       (set_tile "XYZOui" "value = 1")
       (set_tile "XYZNon" "value = 1")
     ) ;_ Fin de if

Et j'ai, dans le (la) DCL :

	               :row {:text {label = "Inclure les coordonées :";}
                      :radio_button {label = "Oui"; key="XYZOui";}
                      :radio_button {label = "Non"; key="XYZNon";}
                      }       

Si quelqu'un a une astuce, un conseil... Je suis preneur...

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)

Posté(e)

Salut,

 

Si les contrôles radio_button sont dans un conteneur (boxed_row ou boxed_column) la bascule se fera automatiquement.

 

DCL

:boxed_row {
            label = "Inclure les coordonées"; 
            key="XYZ";
            :radio_button {label = "Oui"; key="XYZOui";}
            :radio_button {label = "Non"; key="XYZNon";}
          }

 

LSP

(if (= Xyz "Oui")
 (set_tile "XYZOui" "1")
 (set_tile "XYZOui" "0") ; ou (set_tile "XYZNon" "1")
)

 

Ensuite, tu peux directement récupérer le bouton radio coché via la clé du conteneur (get_tile "XYZ") retournera "XYZOui" ou "XYZNon".

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Tu peux même simplifier/optimiser la chose en choisissant des clés pour les boutons radio équivalentes aux valeurs de la variable Xyz ("Oui" ou "Non").

 

DCL

:boxed_row {
            label = "Inclure les coordonées"; 
            key="XYZ";
            :radio_button {label = "Oui"; key="Oui";}
            :radio_button {label = "Non"; key="Non";}
          }

 

LSP

(set_tile Xyz "1")
...
(action_tile "XYZ" "(setq Xyz $value)")

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour (gile), et merci de me répondre.

 

En fait, mon formateur m'a fait écrire ça :

	           :boxed_column {label = "Paramètres du texte :";
               :row {:text {label = "Inclure les coordonées :";}
                      :radio_button {label = "Oui"; key="XYZOui";}
                      :radio_button {label = "Non"; key="XYZNon";}
                      }       
               :row {:text {label = "Saisie d'un texte avant :";}
                      :radio_button {label = "Oui"; key="TxtAvOui";}
                      :radio_button {label = "Non"; key="TxtAvNon";}
                      }       
               :row {:text {label = "Saisie d'un texte après :";}
                      :radio_button {label = "Oui"; key="TxtApOui";}
                      :radio_button {label = "Non"; key="TxtApNon";}
                      }
                   }

Mais il cafouillait énormément et on a mit 2 heures pour écrire ça...

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)

Posté(e)

Re.

 

J'ai donc suivi ton code et j'ai écris ça :

LSP

      (if (= Xyz "Oui")
       (set_tile "XYZOui" "value = 1")
       (set_tile "XYZOui" "value = 0")
     ) ;_ Fin de if
     (if (= SaisiTxtAv "Oui")
       (set_tile "TxtAvOui" "value = 1")
       (set_tile "TxtAvOui" "value = 0")
     ) ;_ Fin de if
     (if (= SaisiTxtAp "Oui")
       (set_tile "TxtApOui" "value = 1")
       (set_tile "TxtApOui" "value = 0")
     ) ;_ Fin de if
     (action_tile "XYZOui" "(vlax-ldata-put \"DenisH\" \"FlXYZ\" \"Oui\")" )
     (action_tile "XYZNon" "(vlax-ldata-put \"DenisH\" \"FlXYZ\" \"Non\")")
     (action_tile "TxtAvOui" "(vlax-ldata-put \"DenisH\" \"FlXYZSaisiTxtAv\" \"Oui\")")
     (action_tile "TxtAvNon" "(vlax-ldata-put \"DenisH\" \"FlXYZSaisiTxtAv\" \"Non\")")
     (action_tile "TxtArOui" "(vlax-ldata-put \"DenisH\" \"FlXYZSaisiTxtAp\" \"Oui\")")
     (action_tile "TxtApNon" "(vlax-ldata-put \"DenisH\" \"FlXYZSaisiTxtAp\" \"Non\")")

 

Mais ça ne fonctionne pas...

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)

Posté(e)

J'ai oublié de poster mon DCL :

	               :boxed_row {label = "Inclure les coordonées :";
                      key = "XYZ";
                      :radio_button {label = "Oui"; key="XYZOui";}
                      :radio_button {label = "Non"; key="XYZNon";}
                      }       
               :boxed_row {label = "Saisie d'un texte avant :";
                      key = "TxtAv";
                      :radio_button {label = "Oui"; key="TxtAvOui";}
                      :radio_button {label = "Non"; key="TxtAvNon";}
                      }       
               :boxed_row {label = "Saisie d'un texte après :";
                      key = "TxtAp";
                      :radio_button {label = "Oui"; key="TxtApOui";}
                      :radio_button {label = "Non"; key="TxtApNon";}
                      }

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)

Posté(e)

Première chose : on écrit "value = 1;" (avec un point-virgule) dans le DCL pour assigner une valeur par défaut.

Dans le set_tile d'un bouton radio ou d'une case à cocher (toggle), on écrit : (set_tile "laClé" "1").

 

Mais comme je te le disais il est plus pratique d'utiliser la clé du conteneur dont la valeur est toujours la clé du bouton radio activé.

 

Par contre, je me suis trompé, ce n'est pas un contrôle boxed_row, mais un contrôle boxed_radio_row (ou radio_row) qu'il faut utiliser.

 

DCL

  :boxed_column {
   label = "Paramètres du texte";
   :boxed_radio_row {
     label = "Inclure les coordonées";
     key = "XYZ";
     :radio_button {label = "Oui"; key="XYZOui";}
     :radio_button {label = "Non"; key="XYZNon";}
   }       
   :boxed_radio_row {
     label = "Saisie d'un texte avant";
     key = "TxtAv";
     :radio_button {label = "Oui"; key="TxtAvOui";}
     :radio_button {label = "Non"; key="TxtAvNon";}
   }       
   :boxed_radio_row {
     label = "Saisie d'un texte après";
     key = "TxtAp";
     :radio_button {label = "Oui"; key="TxtApOui";}
     :radio_button {label = "Non"; key="TxtApNon";}
   }
 }

 

LSP (il est peut-être préférable de ne pas modifier les ldata dans les action des boutons radio pour laisser la possibilité à l'utilisateur d'annuler).

 

      (set_tile "XYZ" (strcat "XYZ" Xyz))
     (set_tile "TxtAv" (strcat "TxtAv" SaisiTxtAv))
     (set_tile "TxtAp" (strcat "TxtAp" SaisiTxtAp))
     
     ;; actions : on ne modifie que les variables pour l'instant
     (action_tile "XYZ" "(setq Xyz (substr $value 4))")
     (action_tile "TxtAv" "(setq SaisiTxtAv (substr $value 6))")
     (action_tile "TxtAp" "(setq SaisiTxtAp (substr $value 6))")
     
     (setq status (start_dialog))
     (unload_dialog dcl_id)
     
     ;; si l'utilisateur a fait OK on modifie les ldata
     (if (= 1 status)
       (progn
         (vlax-ldata-put "DenisH" "FlXYZ" Xyz)
         (vlax-ldata-put "DenisH" "FlXYZSaisiTxtAv" SaisiTxtAv)
         (vlax-ldata-put "DenisH" "FlXYZSaisiTxtAp" SaisiTxtAp)
       )
     )

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Tu pourrais aussi utiliser des cases à cocher plutôt que des boutons radio "Oui" / "Non".

Et pour simplifier la chose, stocker dans les ldata "1" ou "0" plutôt "Oui" ou "Non" de manière à les utiliser directement dans la boite de dialogue.

 

DCL

  :boxed_column {
   label = "Paramètres du texte";
   :toggle{label = "Inclure les coordonées"; key = "XYZ";}
   :toggle{label = "Saisie d'un texte avant"; key = "TxtAv";}
   :toggle{label = "Saisie d'un texte après"; key = "TxtAp";}
 }

 

LSP

      (set_tile "XYZ" Xyz)
     (set_tile "TxtAv" SaisiTxtAv)
     (set_tile "TxtAp" SaisiTxtAp)
     
     (action_tile "XYZ" "(setq Xyz $value)")
     (action_tile "TxtAv" "(setq SaisiTxtAv $value)")
     (action_tile "TxtAp" "(setq SaisiTxtAp $value)")
     
     (setq status (start_dialog))
     (unload_dialog dcl_id)
     
     (if (= 1 status)
       (progn
         (vlax-ldata-put "DenisH" "FlXYZ" Xyz)
         (vlax-ldata-put "DenisH" "FlXYZSaisiTxtAv" SaisiTxtAv)
         (vlax-ldata-put "DenisH" "FlXYZSaisiTxtAp" SaisiTxtAp)
       )
     )

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Re.

 

Judicieuse remarque... Il va falloir que je me retape tout, car mon code est beaucoup plus grand que ce que j'ai posté... Mais je le ferais, tes conseils sont tellement bons... ;)

 

A ce sujet, pourrais-tu, s'il te plait, me donner ton avis sur ce que j'ai fais en formation ?

 

Je suis curieux de connaitre l'avis d'un "vrai" formateur (les autres aussi peuvent participer, bien-sur). On a fait ça en deux jours, et tout ne fonctionne pas...!

 

Petite cerise, pendant la formation, je lui corrigeais parfois ces codes...

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)

Posté(e)

Coucou

 

Mais il cafouillait énormément et on a mit 2 heures pour écrire ça...

Ah les formateurs !!!

je lui corrigeais parfois ces codes

Tu vas pas te faire des copains sur le coup, mais c'est une grande vérité tout en étant une règle non écrite, il y a formateur et formateur..

Tu devrais nous donner des leçons maintenant, j'attends tes conseils pour ne plus mettre deux heures à écrire une DCL (c'est vrai que c'est compliqué le DCL) des maîtres (qui sévissent aussi sur CadXP) se permettent de faire du DCL DANS des lisp en fichiers temporaires, c'est très fort.

 

Sans te manquer de respect si Toi tu lui corrigeais ses codes (avec un S, pronom personnel) il devrait venir sur CadXP ce garçon (si c'est un garçon)

C'est une blague ? ou bien un formateur auto-proclamé comme le sergent se déclare colonel dans certains pays que j'ai connus, ou le bidouilleur développeur (hihi).

Toujours sans te manquer de respect : corrige les fautes d'orthographe dans les messages utilisateurs, ça fait couillon

 

 

Amicalement

Posté(e)

Bonjour à tous.

 

didier : désolé pour la faute, il en passe une de temps en temps, généralement, celle-là, je ne la fais pas :huh:

Pour le formateur, ma direction n'a pas suivi mes désires et a choisi un formateur "improvisé" près de chez nous...

Mais je suis déçu de cette formation, j'en attendais tellement, bien que le formateur était très sympas... :(

Deux jour pour faire cette DCL et le code qui la gère, et on n'a pas fini, du coup, je me retrouve avec un couple DCL/LISP qui est bancale que je tente de faire fonctionner correctement...

 

(gile) : mais ça ne m'a pas appris grand chose...

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)

Posté(e)

Coucou

 

Tu m'en vois désolé.

On te taquinait (je te taquinais) au sujet de cette formation à venir qui devait te mettre le pied à l'étrier pour avoir moins besoin de chercher des aides sur le site voire nous apporter des réponses à nos questions.

Te voila revenu à la case départ mais c'est aussi une case de dialogue et dans la mesure du possible tu trouveras des réponses car je pense bien que tu vas continuer à chercher à progresser.

Pour ce qui est des fautes de frappe et d'orthographe, une seule solution se relire, se contrôler, et se relire encore pour se contrôler ...

 

Amicalement

Posté(e)

Re.

 

Merci pour ta sollicitude.

 

Mais tout n'est pas tout noir, j'ai enfin compris ce que veut dire :

(setq Obj (entget (car (entsel "Cliquer l'entité :"))))

ainsi que :

(setq Obj (entget (car (nentsel "\nCliquer l'altitude dans le bloc :"))))

Donc, les (assoc qui suivent dans les codes (que je ne comprenais pas) et pour finir, le (entmod pour mettre à jour l'entité...

 

J'ai même tenté un (entmake, mais je ne connais pas encore les codes DXF impératifs à la construction d'entités via cette commande.

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)

Posté(e)

Coucou

 

Donc il y a du positif, toutefois je pensais que ce niveau programmation était intégré pour toi, t'es pas arrivé au mapcar (hihi).

Continue à poser des questions, fais des tests, n'aie pas peur tu ne casseras pas la machine,

C'est comme quand on apprend à marcher, quand après les chutes, les croutes sur les genoux sous parties on sait presque courir.

 

Amicalement

Posté(e)

Encore Re.

 

Non, j'ai presque compris le (mapcar et le (lamda (merci Patrick_35), mais je suis très loin de les utiliser parce-que je n'ai pas encore le réflexe d'utiliser des listes, ce qui est un comble, je l'avoue, en programmation AutoLisp... ;)

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)

Posté(e)

Salut,

 

Je pense que le fait de baser la formation sur l'élaboration d'une boite de dialogue n'était peut-être pas une bonne idée. Avec le DCL on passe (on perd) beaucoup de temps sur des détails accessoires.

 

Le fait que ton programme ne soit pas terminé à la fin de la formation n'est pas un problème si ton formateur t'a donné les clés pour le finir tout seul.

À mon avis une formation doit insister sur les fondamentaux et surtout donner des moyens pour poursuivre l'auto-apprentissage.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Hello

 

Dans un temps lointain ou je faisais du Lisp pur, je ne me suis jamais intéressé au DCL !

 

Mais je pense qu'une certaine maîtrise des listes et des codes DXF est indispensable...

 

Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

Salut à tous, et merci pour vos remarques...

 

@(gile) : effectivement, on a passé deux jours à construire le DCL, et on n'a pas eu le temps de réellement approfondir la question des aller/retour entre Lisp et DCL... Du coup, j'utilise mon vieux Lisp sans DCL...

le formateur ne m'a malheureusement rien donné de bien précis pour une "auto-formation" à posteriori, à part quelques photocopies d'un vieux bouquin...

 

@lecrabe : on n'a rien vu des listes (étonnant non ?) et pour les codes DXF, on a juste vu ça :

(defun c:ChangCalq (/)
 (setq Obj (entget (car (entsel "Clique l'entité :"))))
 (setq Calq (assoc 8 Obj))
 (setq Obj (subst (cons 8 "Toto") Calq Obj))
 (entmod Obj)
 (princ)
)

 

Ce qui m'a permis de voir les (entsel, (nentsel, (entget, (entmod qui me manquait cruellement...

 

Je trouve curieux qu'il ait "lourdement" insisté sur les xdata, car je ne pense pas en avoir un jour l'utilité...

 

J'ai fais part de cette "pseudo" formation (qui ne m'a presque rien apporté) à ma direction et en ai redemandé une autre, une vrai cette fois-ci, avec le formateur que j'avais choisi au départ...

 

Denis...

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)

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é