fabcad Posté(e) le 21 mars 2012 Posté(e) le 21 mars 2012 Bonjour à tous, J'avais récupéré cette routine il y a un an développée à l'origine par jvillarreal visible à : http://www.theswamp.org Elle fonctionnait sur un map 2009, me retrouvant sur un map 2007 elle plante lorsque je passe sur un objet qui contient des donnée d'objets mais fonctionne dans le cas contraire (pareil sur un map 2011). Voici le message d'erreur provoqué sur le passage d'un objet contenant des donnée d'objets :<type d'argument incorrect: numberp: nil> J'ai essayé de regarder ou se situe l'erreur dans le corps du programme mais je sèche pour l'instant. Peut-être qu'un œil d'expert pourrait trouver l'erreur. MerciFabcadreadobjectdata.lsp
bonuscad Posté(e) le 21 mars 2012 Posté(e) le 21 mars 2012 Bonjour, Essayes cette version corrigée, j'ai rajouter une condition de test et surtout remis la variable fieldnames à nil dans la boucle (grread). C'est elle qui provoquait cette erreur.Surprenant qu'elle fonctionnait sans "bugs" sur des versions antérieures...readobjectdata.lsp Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
GEGEMATIC Posté(e) le 21 mars 2012 Posté(e) le 21 mars 2012 salut,j'étais intrigé par ce que pouvait faire cette commande, je trouve ça assez rigolo ...moi je n'ai pas trouvé le même bug que Bonuscad, chez moi, ce qui plantait, c'était le rtos sur la valeur nilDonc j'ai ajouté le controle de numberp (setq strcatlst (apply 'strcat (mapcar (function (lambda (x) (strcat x " : " (if (/= (type (setq fieldstring (ade_odgetfield ename (ade_odgettables ename) x 0 ) ) ) 'STR ) (if (numberp fieldstring) (rtos fieldstring 2 2) ) fieldstring ) "\n" ) ) ) ;fin function fieldnames ) ;fin mapcar ) ;fin apply ) ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
fabcad Posté(e) le 21 mars 2012 Auteur Posté(e) le 21 mars 2012 Merci bonuscad, J'ai compris pourquoi elle ne fonctionne pas. Elle fonctionne lorsque l'objet ne possède qu'1 table de données d'objets, si il en possède deux ou plus, elle ne fonctionne plus. Mon idée est de faire une liste en concaténant le nom de la table et du champ séparé par un "|" pour les dissocier ensuite dans la partie de récupération de la valeur. Car il n'existe pas une fonction qui permet de retrouver le nom de la table depuis un nom de champ, ce qui est normal car un objet peut posséder un même nom de champ dans plusieurs tables associés. Si tu as une autre idée plus simple, je suis preneur. Fabcad
GEGEMATIC Posté(e) le 21 mars 2012 Posté(e) le 21 mars 2012 Oups d'accord, le vrai pb est résolu par Bonuscad, puisque le rtos de nil est un conséquence d'un autre bug ...en tout cas, je garde cette commande, elle est bien pratique... ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
fabcad Posté(e) le 21 mars 2012 Auteur Posté(e) le 21 mars 2012 Après des tests ligne par ligne j'y suis arrivé. Voici la fonction modifiée. Merci à Gile pour ses fonctions de création de listes avec des chaines de caractères. Bonne soirée,readobjectdata.lsp
lecrabe Posté(e) le 21 mars 2012 Posté(e) le 21 mars 2012 Hello Fab Fort sympa ta routine ! Neanmoins SVP je suggere une petite amelioration necessaire lorsque un objet a N tables OD (Object Data) et non pas UNE SEULE Confere par exemple le DWG de test fourni a Olivier dans mon message du 5 Mars 2012 15h08 :http://cadxp.com/index.php?/topic/26836-filtre-sur-des-objects-data/ Ta micro-fenetre devrait "plutot" afficher un truc du genre : ----- Nom Table OD 1 -----Champ1 =Champ2 = ----- Nom table OD 2 -----Champ 1etc----- Nom Table OD 3 -----Champ 1etc Merci d'avance, Decapodiquement votre, lecrabe Autodesk Expert Elite Team
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