Aller au contenu

Juste petite question pour le gestion de plusieurs échelles


DenisHen

Messages recommandés

Bonjour à tous...

 

Et d'abord, bonnes vacances et/ou bonnes fêtes à vous...

 

Voilà, ceci étant fait, je cherche à configurer, avec l'aide de la saisie de l'opérateur, deux échelles. Il en faut une dite 'primaire' et une seconde 'facultative' nommée 'secondaire'.

 

Voici ce que j'ai écris :

;;; *************************
;;; Définitions des échelles 
;;; *************************
;;; ************************************
;;; Définition de l'échelle primaire... 
(defun c:DHLotiEch (/ ech1 ech2)
 (if (= (vlax-ldata-get "DhLoti" "Ech1") nil)
   (setq ech1 (getreal "Échelle primaire : 1/ :"))
   (setq ech1 (getreal
	 (strcat ")\nÉchelle primaire : 1/<"
		 (rtos (vlax-ldata-get "DhLoti" "Ech1") 2 0)
		 "> :"
	 ) ;_ Fin:strcat
       ) ;_ Fin:getreal
   ) ;_ Fin:setq
 ) ;_ Fin:if
 (cond	((and (= ech1 nil) (/= (vlax-ldata-get "DhLoti" "Ech1") nil))
 (vlax-ldata-put "DhLoti" "Ech1" (vlax-ldata-get "DhLoti" "Ech1"))
)
((/= ech1 nil) (vlax-ldata-put "DhLoti" "Ech1" ech1))
(T
 (alert
   "Aucune échelle primaire définie.\nAucune commande ne fonctionnera sans cette échelle minimum."
 ) ;_ Fin:alert
 (exit)
) ;_ Fin:progn
 ) ;_ Fin:if
;;; ************************************* 
;;; Définition de l'échelle secondaire... 
 (if (= (vlax-ldata-get "DhLoti" "Ech2") nil)
   (setq ech2 (getreal "Échelle secondaire : 1/ :"))
   (setq ech2 (getreal	"\nÉchelle secondaire : 1/ :<"
		(vlax-ldata-get "DhLoti" "Ech2")
		"> '0 pour aucune échelle' :"
       ) ;_ Fin:getreal
   ) ;_ Fin:setq
 ) ;_ Fin:if
 (princ "Résultat ech2 =")
 (princ ech2)
 (princ "\n")
 (if ((or (/= ech2 nil) (/= ech2 0)))
   (progn
     (vlax-ldata-put "DhLoti" "Ech2" ech2)
     (alert (strcat "Échelle primaire : 1/"
	     (rtos (vlax-ldata-get "DhLoti" "Ech1") 2 0)
	     "\nÉchelle secondaire 1/"
	     (rtos (vlax-ldata-get "DhLoti" "Ech2") 2 0)
     ) ;_ Fin:strcat
     ) ;_ Fin:alert
   ) ;_ Fin:progn
   (progn
     (vlax-ldata-put "DhLoti" "Ech2" nil)
     (alert (strcat "Échelle primaire : 1/"
	     (rtos (vlax-ldata-get "DhLoti" "Ech1") 2 0)
	     "\nAucune échelle secondaire"
	     ech2
     ) ;_ Fin:strcat
     ) ;_ Fin:alert
   ) ;_ Fin:progn
 ) ;_ Fin:if
 (princ)
) ;_ Fin:defun

Il faudrait qu'il y ait au moins la première échelle saisie, sinon, rien ne fonctionnera, mais ça, je le gérerais autrement.

 

Mais l'opérateur pourra éventuellement saisir une deuxième échelle. Mais celle-ci n'est pas obligatoire, si elle n'est pas saisie, elle sera égale à nul... Si non, égale à elle-même...

 

Je n'arrive pas à mettre tous-ça en place... S'il y a une bonne âme...

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

Salut,

 

Tu peux forcer l'utilisateur à saisir une valeur en utilisant une expression de style :

(while (not (setq ech1 (getreal ...))))

ainsi on n'a d'autre choix qu'entrer une valeur ou faire Echap ce qui met fin à la routine.

 

Mais si cette échelle concerne aussi d'autres routines, le plus sage est d'utiliser une valeur par défaut fixée arbitrairement.

(setq ech (cond ((vlax-ldata-get "DhLoti" "Ech1"))
               ((vlax-ldata-put "DhLoti" "Ech1" 100))
         )
)

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

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je viens de supprimer ma réponse car j'étais agacé par tes questions

On te file de l'aide mais tu n'en tiens pas compte

Va voir sur "da-code" ce que j'explique sur getreal et tu devrais comprendre ton erreur de syntaxe, tu devrais ...

 

Amicalement tout de même (comme une bonne âme)

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é