CadFrank Posté(e) le 9 février 2015 Posté(e) le 9 février 2015 Bonjour à tous, Je suis en construction d'une boite de dialogue pour un convertiseur universel sur AutoCad. Je suis un peu embeter à comment continuer mon program lisp. il me reste a communiqué les valeurs de Edit_1 et Edit_2 en fonction de ce qui est sélectionné dans mes popup_list 1 & 2. Malheuresement je ne sais pas trop comment y parvenir. J'aimerai avoir des idées. Merci ! Voici les codes (defun c:test ( / i id lst ) (setq lst '( ("rb1" "- Choisir -" "[m] Mètre" "[km] Kilomètre" "[pi] Pied" "[po] Pouce") ("rb2" "- Choisir -" "[km²] Kilomètre carrée" "[m²] Mètre carrée" "[pi²] Pied carrée" "[po²] Pouce carrée") ("rb3" "- Choisir -" "[km³] Kilomètre cube" "[m³] Mètre cube" "[pi³] Pied cube" "[po³] Pouce cube") ("rb4" "- Choisir -" "[kg] Kilogramme" "[g] Gramme" "[t] Tonne" "[lb] Livre") ("rb5" "- Choisir -" "[kN] Kilonewton" "[N] Newton" "[kips] Kilolivre force" "[lbf] Livre force") ("rb6" "- Choisir -" "[kN/m²] Kilonewton par mètre carrée" "[Nm] Newton par mètre carrée" "[kips/pi²] Kilolivre par pied carrée" "[lbf/pi] Livre par pied carrée") ("rb7" "- Choisir -" "[kNm] Kilonewton mètre" "[Nm] Newton mètre" "[kips*pi] Kilolivre force pied" "[lbf*pi] Livre force pied") ) );setq (if (and (< 0 (setq id (load_dialog "test.dcl"))) (new_dialog "Convertisseur" id) );and (progn (repeat (setq i 7) (action_tile (strcat "rb" (itoa i)) (strcat "(addlist \"list_1\" (cdr (assoc $key lst)))" "(addlist \"list_2\" (cdr (assoc $key lst)))" "(mode_tile \"Edit_1\" 0)" ) ) ;action_tile (setq i (1- i)) ) ;repeat (action_tile "Edit_1" (strcat "(setq Val1 (get_tile \"Edit_1\"))" "(setq Unit1 (get_tile \"list_1\"))" "(setq Unit2 (get_tile \"list_2\"))" "(set_tile \"Edit_2\" (CalVal Val1 Val2))" "(mode_tile \"Edit_2\" 0)" "(mode_tile \"Edit_2\" 2)" ) ;strcat ) ;action_tile (start_dialog) ) ; progn );if (if (< 0 id) (unload_dialog id)) (princ) ) (defun addlist ( key lst ) (start_list key) (foreach x lst (add_list x)) (end_list) lst ) Convertisseur : dialog { label="Convertiseur"; : boxed_radio_row { label = "Type de conversion"; : radio_button { key = "rb1"; label = "&Longueur"; value = "0"; } : radio_button { key = "rb2"; label = "&Surface"; value = "0";} : radio_button { key = "rb3"; label = "&Volume"; value = "0";} : radio_button { key = "rb4"; label = "&Poids"; value = "0";} : radio_button { key = "rb5"; label = "&Force"; value = "0";} : radio_button { key = "rb6"; label = "P&ression"; value = "0";} : radio_button { key = "rb7"; label = "&Moment"; value = "0";} }// fin boxed_radio : boxed_column { label = "Calculateur" ; : row { : text { label = "Convertir :"; width = 12;} : edit_box { key = "Edit_1"; edit_width = 15; value = "0"; is_enabled = false; } : popup_list {key = "list_1"; width = 40; multiple_select = true; fixed_width_font = true; value = "0"; } } : row { : text { label = "à :"; width = 12;} : edit_box { key = "Edit_2"; edit_width = 15; value = "0"; is_enabled = false;} : popup_list { key = "list_2"; width = 40; multiple_select = true; fixed_width_font = true; value = "0"; } }//row }//boxed_row : row { : button { alignment = left; fixed_width = true; width = 20; key = "Cop"; label = "Copier"; } : button { alignment = centered; fixed_width = true; width = 20; key = "Gen"; label = "Générer"; } : button { alignment = right; fixed_width = true; width = 20; key = "Close"; label = "Fermer"; is_default = false; is_cancel = true; } }//row //: paragraph { //: text_part { label = "* Location Universelle ne peut pas garantir l'exactitude des résultats de la conversion de l'unité."; } //}// paragraph }// fin Convertisseur
Patrick_35 Posté(e) le 10 février 2015 Posté(e) le 10 février 2015 Salut C'est très bien de vouloir optimiser sa boite de dialogue, mais commence par le plus simple.Un tuto sur les DCL. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CadFrank Posté(e) le 10 février 2015 Auteur Posté(e) le 10 février 2015 Ummm il etait ou ce tuto la! je ne les pas trouver sur le net.. J'ai vu les tuto de Afralisp et Sanders.. mais je les trouver incomplet. lui il est plus gros.. :D Merci !
CadFrank Posté(e) le 16 février 2015 Auteur Posté(e) le 16 février 2015 ReBonjour, J'ai bien compris comment activer mes tiles. Maintenant ce que je ne comprend pas c'est le pourquoi, ma variable val2 ne veux pas prendre de valeur. Voir Code ci-bas : (defun c:test ( / i id lst );itm1 itm2 val1 val2 rb1t rb2t rb3t rb4t rb5t rb6t rb7t (setq lst '( ("rb1" "- Choisir -" "[m] Mètre" "[km] Kilomètre" "[pi] Pied" "[po] Pouce") ("rb2" "- Choisir -" "[km²] Kilomètre carrée" "[m²] Mètre carrée" "[pi²] Pied carrée" "[po²] Pouce carrée") ("rb3" "- Choisir -" "[km³] Kilomètre cube" "[m³] Mètre cube" "[pi³] Pied cube" "[po³] Pouce cube") ("rb4" "- Choisir -" "[kg] Kilogramme" "[g] Gramme" "[t] Tonne" "[lb] Livre") ("rb5" "- Choisir -" "[kN] Kilonewton" "[N] Newton" "[kips] Kilolivre force" "[lbf] Livre force") ("rb6" "- Choisir -" "[kN/m²] Kilonewton par mètre carrée" "[Nm] Newton par mètre carrée" "[kips/pi²] Kilolivre par pied carrée" "[lbf/pi] Livre par pied carrée") ("rb7" "- Choisir -" "[kNm] Kilonewton mètre" "[Nm] Newton mètre" "[kips*pi] Kilolivre force pied" "[lbf*pi] Livre force pied") ) );setq (if (and (< 0 (setq id (load_dialog "test.dcl"))) (new_dialog "Convertisseur" id) );and (progn (repeat (setq i 7) (action_tile (strcat "rb" (itoa i)) (strcat "(addlist \"list_1\" (cdr (assoc $key lst)))" "(addlist \"list_2\" (cdr (assoc $key lst)))" ) ) ;action_tile (setq i (1- i)) ) ;repeat (action_tile "list_2" (strcat "(mode_tile \"Edit_1\" 0)" "(setq itm1 (get_tile \"list_1\"))" "(setq itm2 (get_tile \"list_2\"))" "(setq rb1t (get_tile \"rb1\"))" "(setq rb2t (get_tile \"rb2\"))" "(setq rb3t (get_tile \"rb3\"))" "(setq rb4t (get_tile \"rb4\"))" "(setq rb5t (get_tile \"rb5\"))" "(setq rb6t (get_tile \"rb6\"))" "(setq rb7t (get_tile \"rb7\"))" ) ) (if (and (= "1" rb1t) (= '(itm1 itm2) '("1" "2")) ) (setq val2 (float 1000.00000)) ) (action_tile "Edit_1" (strcat "(setq Val1 (get_tile \"Edit_1\"))" "(set_tile \"Edit_2\" (rtos (/ (float (atof val1)) val2) 2 2 ))" "(mode_tile \"Edit_2\" 0)" "(mode_tile \"Edit_2\" 2)" ) ;strcat ) ;action_tile (start_dialog) ) ; progn );if (if (< 0 id) (unload_dialog id)) (princ) ) (defun addlist ( key lst ) (start_list key) (foreach x lst (add_list x)) (end_list) lst ) quelqu'un peu m'aider svp.
bonuscad Posté(e) le 16 février 2015 Posté(e) le 16 février 2015 Bonjour, Peut être à cause de ceci: (if (and (= "1" rb1t) (= '(itm1 itm2) '("1" "2")) ) (setq val2 (float 1000.00000)) ) Essayes avec : (if (and (= "1" rb1t) (equal (list itm1 itm2) '("1" "2")) ) (setq val2 (float 1000.00000)) ) Je n'ai pas décortiqué plus ton code, c'est l'erreur qui m'a semblé la plus évidente.Il y a peut être autre chose de bloquant... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CadFrank Posté(e) le 16 février 2015 Auteur Posté(e) le 16 février 2015 Bonjour, Peut être à cause de ceci: (if (and (= "1" rb1t) (= '(itm1 itm2) '("1" "2")) ) (setq val2 (float 1000.00000)) ) Essayes avec : (if (and (= "1" rb1t) (equal (list itm1 itm2) '("1" "2")) ) (setq val2 (float 1000.00000)) ) Je n'ai pas décortiqué plus ton code, c'est l'erreur qui m'a semblé la plus évidente.Il y a peut être autre chose de bloquant... Oui finalement il y avait aussi :(= "1" rb1t) que j'ai changé pour :(equal "1" rb1t) Merci grandement.
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