Aller au contenu

[Résolu] Ename mais en fait, non...


Messages recommandés

Posté(e)

Bonjour à tous.

 

Pour les besoins d'une petite routine, je tente de savoir si une variable est un ENAME ou pas...

 

Voici mon lisp de text :

(defun c:TestEname (/)
 (setq Txt_Prof (car (entsel "Sélection d'entité :")))
 (if (= (type Txt_Prof) ENAME)
   (princ "\nEname")
   (princ "\nNot Ename")
 )
 (princ)
)

 

Mon problème est que, quand je sélectionne une entité AutoCAD, ma routine teste fait l'opposé de ce que je "veux"...

 

Lorsque je clique sur une entité, AutoCAD me répond "Not Ename" et si je ne clique rien, J'obtient "Not Ename"...

 

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)

Bon, j'ai trouvé la solution dans un autre poste.

 

Je la donne pour partager...

 

C'est en fait 'ENAME avec l'apostrophe qu'il faut placer...

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,

 

Un peu de logique pour éviter les expressions inutiles qui alourdissent le code et finissent par le rendre moins lisible.

 

(car (entsel)) ne peut retourner qu'un ENAME ou nil or en LISP, une expression conditionnelle considère que tout ce qui n'est pas nil est vrai.

 

Ceci étant tu peux simplement écrire, sans tester le type :

(defun c:TestEname (/ Txt_Prof)
 (setq Txt_Prof (car (entsel "Sélection d'entité :")))
 (if Txt_Prof
   (princ "\nEname")
   (princ "\nNil")
 )
 (princ)
)

 

ou directement:

(defun c:TestEname (/ Txt_Prof)
 (if (setq Txt_Prof (car (entsel "Sélection d'entité :")))
   (princ "\nEname")
   (princ "\nNil")
 )
 (princ)
)

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

Posté(e)

Salut.

 

Et merci (gile) pour cette précision, mais en fait, je faisais un petit test, car ce code fait parti d'un code plus grand que je n'ai pas mis pour ne pas "embrouiller" :

  (setq Prof (vlax-ldata-get "DenisH" "EtiqPRD_OldProf"))
 (if (= Prof nil)
   (setq Phrase (strcat "\nSélectionnez la profondeur : "))
   (setq Phrase (strcat "\nSélectionnez la profondeur <" Prof "> : "))
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPRD_Prof") "Oui")
   (progn (setq Txt_Prof (car (entsel Phrase)))
          (if (= Txt_Prof 'ENAME)
            (progn (setq TextSuppProf Txt_Prof)
                   (wcmatch (cdr (assoc 0 (setq elst (entget Txt_Prof)))) "*PROF")
                   (setq Prof (cdr (assoc 1 elst)))
                   ;; Suppression des textes "P" et "M" dans le Prof
                   (if (= T (wcmatch Prof "*#*"))
                     (progn (setq Prof (vl-string-left-trim "Pf:" (vl-string-right-trim "m" Prof)))
                            (setq Prof (vl-string-left-trim "P=" (vl-string-right-trim "M" Prof)))
                            (setq Prof (vl-string-left-trim "P:" ))
                            (setq Prof (vl-string-left-trim "P" ))
                            (setq Prof (vl-string-left-trim "p" ))
                     ) ;_ Fin de progn
                   ) ;_ Fin de if
                   (setq Prof (+ (atof Prof) (atof (vlax-ldata-get "DenisH" "EtiqPRD_Cste"))))
                   (setq Prof (rtos Prof 2 2))
                   (vlax-ldata-put "DenisH" "EtiqPRD_OldProf" Prof)
            ) ;_ Fin de progn
          ) ;_ Fin de if
   ) ;_ Fin de progn
 ) ;_ Fin de if

Merci encore pour ton aide...

 

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é