DenisHen Posté(e) le 30 octobre 2016 Posté(e) le 30 octobre 2016 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)
DenisHen Posté(e) le 30 octobre 2016 Auteur Posté(e) le 30 octobre 2016 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)
(gile) Posté(e) le 30 octobre 2016 Posté(e) le 30 octobre 2016 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
DenisHen Posté(e) le 2 novembre 2016 Auteur Posté(e) le 2 novembre 2016 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)
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