Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Je recherche une façon plus élégante sur l'utilisation de la condition If (Cf code ci-dessous)

 

Si ohdiametre = valeur alors lmini = valeur (peut on créer de liste de correspondance ?)

 

 

(if (= ohdiametre 0.3)
	(setq lmini (/ 0.96 2)))
(if (= ohdiametre 0.4)
	(setq lmini (/ 1.08 2)))
(if (= ohdiametre 0.5)
	(setq lmini (/ 1.2 2)))
(if (= ohdiametre 0.6)
	(setq lmini (/ 1.32 2)))
(if (= ohdiametre 0.8)
	(setq lmini (/ 1.76 2)))
(if (= ohdiametre 1)
	(setq lmini (/ 2.00 2)))
(if (= ohdiametre 1.2)
	(setq lmini (/ 2.24 2)))
(if (= ohdiametre 1.4)
	(setq lmini (/ 2.48 2)))
(if (= ohdiametre 1.5)
	(setq lmini (/ 2.60 2)))
(if (= ohdiametre 1.6)
	(setq lmini (/ 2.82 2)))
(if (= ohdiametre 1.8)
	(setq lmini (/ 2.96 2)))
(if (= ohdiametre 2)
	(setq lmini (/ 3.20 2)))

 

 

Merci de vos retours,

 

Cordialement,

 

Laurent

Posté(e)

Salut,

 

Avec cond :

(setq lmini
      (cond
 ((= ohdiametre 0.3) (/ 0.96 2))
 ((= ohdiametre 0.4) (/ 1.08 2))
 ((= ohdiametre 0.5) (/ 1.2 2))
 ((= ohdiametre 0.6) (/ 1.32 2))
 ((= ohdiametre 0.8) (/ 1.76 2))
 ((= ohdiametre 1) (/ 2.00 2))
 ((= ohdiametre 1.2) (/ 2.24 2))
 ((= ohdiametre 1.4) (/ 2.48 2))
 ((= ohdiametre 1.5) (/ 2.60 2))
 ((= ohdiametre 1.6) (/ 2.82 2))
 ((= ohdiametre 1.8) (/ 2.96 2))
 ((= ohdiametre 2) (/ 3.20 2))
      )
)

 

De plus, contrairement à ce qui se passe avec ton code, si une condition est évaluée T les suivantes ne seront pas évaluées.

en fait ça correspond à :

(if (= ohdiametre 0.3)
  (setq lmini (/ 0.96 2))
  (if (= ohdiametre 0.4)
    (setq lmini (/ 1.08 2))
    (if (= ohdiametre 0.5)
      (setq lmini (/ 1.2 2))
      (if (= ohdiametre 0.6)
 (setq lmini (/ 1.32 2))
 (if (= ohdiametre 0.8)
   (setq lmini (/ 1.76 2))
   (if (= ohdiametre 1)
     (setq lmini (/ 2.00 2))
     (if (= ohdiametre 1.2)
       (setq lmini (/ 2.24 2))
       (if (= ohdiametre 1.4)
	 (setq lmini (/ 2.48 2))
	 (if (= ohdiametre 1.5)
	   (setq lmini (/ 2.60 2))
	   (if (= ohdiametre 1.6)
	     (setq lmini (/ 2.82 2))
	     (if (= ohdiametre 1.8)
	       (setq lmini (/ 2.96 2))
	       (if (= ohdiametre 2)
		 (setq lmini (/ 3.20 2))
	       )
	     )
	   )
	 )
       )
     )
   )
 )
      )
    )
  )
)

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

Posté(e)

Bonjour,

 

On peut également avec une liste associative, comme ceci.

 

 

(setq lmini (/ (cdr (assoc ohdiametre
                          '((0.3 . 0.96)
                            (0.4 . 1.08)
                            (0.5 . 1.2)
                            (0.6 . 1.32)
                            (0.8 . 1.76)
                            (1.0 . 2.00)
                            (1.2 . 2.24)
                            (1.4 . 2.48)
                            (1.5 . 2.60)
                            (1.6 . 2.82)
                            (1.8 . 2.96)
                            (2.0 . 3.20)
                           )
                   )
              )
              2
           )
)

 

A+

  • Upvote 1

Apprendre => Prendre => Rendre

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é