Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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 !

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

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é