Aller au contenu

Messages recommandés

Posté(e)

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.

 

Merci

Fabcad

readobjectdata.lsp

Posté(e)

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

Posté(e)

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 nil

Donc 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.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

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

Posté(e)

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 1

etc

----- Nom Table OD 3 -----

Champ 1

etc

 

Merci d'avance, Decapodiquement votre, lecrabe

Autodesk Expert Elite Team

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é