Invité Patrick Posté(e) le 10 juillet 2006 Posté(e) le 10 juillet 2006 Un bug très étrange que je n'arrive pas à résoudre, donc... A L'AIDE!!! (pas trouvé d'aide sur Google non plus) L'instruction VBA suivante (j'insère un fichier/bloc): Set L_obj_BlocAttributs = ThisDrawing.PaperSpace.InsertBlock(position, "titre_legende_barrial.dwg", 1, 1, 1, 0) produit une erreur "fichier non trouvé" dans AutoCAD 2007 mais seulement la deuxième fois que l'instruction est exécutée... :casstet: Cette instruction ne produit jamais d'erreur dans AutoCAD 2006 ni dans AutoCAD 2005. Je précise évidemment que le dessin inséré est bien dans son répertoire et que son chemin d'accès est bien accessible comme chemin de support. Info additionnelle: bug testé également dans les versions allemandes d'AutoCAD 2007.
Patrick_35 Posté(e) le 10 juillet 2006 Posté(e) le 10 juillet 2006 Salut Patrick 1) Ce n'est que pour ce bloc ou ça arrive avec d'autres ?2) Ce n'est que pour un certain dessin ou ça arrive sur d'autres ?3) As-tu relancé Autocad, voir redémarrer l'ordinateur voir si cela se reproduit ?4) Le fichier est dans les chemins de recherches d'autocad afin qu'il l'insère selon ton exemple ?5) La variable position est correcte pour le deuxième insertion ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Patrick Posté(e) le 10 juillet 2006 Posté(e) le 10 juillet 2006 ]Salut Patrick 1) Ce n'est que pour ce bloc ou ça arrive avec d'autres ? ça arrive avec d'autres. 2) Ce n'est que pour un certain dessin ou ça arrive sur d'autres ? j'utilise un gabarit et de nouveaux dessins sont créés à partir de ce gabarit. Un an et demi que ça fonctionne sauf en 2007.... 3) As-tu relancé Autocad, voir redémarrer l'ordinateur voir si cela se reproduit ? Oui, pareil. 4) Le fichier est dans les chemins de recherches d'autocad afin qu'il l'insère selon ton exemple ? Oui. 5) La variable position est correcte pour le deuxième insertion ? Elle a la même valeur que pour la première insertion...
Patrick_35 Posté(e) le 11 juillet 2006 Posté(e) le 11 juillet 2006 Encore une question, le bloc n'est pas déjà dans le dessin lors de la première insertion et si c'est le cas, un test dans la table des blocs pourrait éviter le problème @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Patrick Posté(e) le 11 juillet 2006 Posté(e) le 11 juillet 2006 Lors de la première insertion, le bloc n'est pas dans le dessin. La première instruction d'insertion fonctionne et ça plante à la deuxième. Si je teste si le bloc existe, je vais le trouver dans le dessin la deuxième fois, mais il faut que je l'insère de toute façon, ou alors peut être en enlevant le suffixe DWG pour la deuxième insertion?
Patrick_35 Posté(e) le 11 juillet 2006 Posté(e) le 11 juillet 2006 C'est à tester car dans ton instruction, je ne vois pas d'erreur @6 Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Patrick Posté(e) le 11 juillet 2006 Posté(e) le 11 juillet 2006 Il n'y en a pas, c'est certain puisque ce programme fonctionne depuis plus d'un an en version 2006. C'est AutoCAD 2007 qui apporte un changement dont je ne connais pas la nature et qui cause ce bug. Ma priorité est de trouver une solution, puis ensuite de trouver la cause du bug.
(gile) Posté(e) le 11 juillet 2006 Posté(e) le 11 juillet 2006 Salut, Je ne connais pas le VBA mais j'ai essayé un code similaire en vlisp sur AutoCAD 2007 : (vla-insertblock (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point (getpoint "\nInsertion: ")) "F:\\D.A.O\\Blocs\\Logo.dwg" 1 1 1 0 ) pas de problème, le bloc s'insère à chaque fois. Mais ça m'a donné un idée, tester si le bloc est déjà dans la collection du dessin, et si oui essayer de l'insérer depuis la collection en spécifiant uniquement son nom. Je ne sais pas comment on l'écrirait en VBA, mais en vlisp ça serait quelque chose comme çà : (setq pt (getpoint "\nInsertion: ")) (vla-insertblock (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point (getpoint "\nInsertion: ")) [surligneur](if (vla-item (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object))) "Logo") "Logo" "F:\\D.A.O\\Blocs\\Logo.dwg" )[/surligneur] 1 1 1 0 ) En relisant plus attentivement, je m'aperçois que mon idée ne fait que préciser ce qui est suggéré plus haut. [Edité le 11/7/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité Patrick Posté(e) le 11 juillet 2006 Posté(e) le 11 juillet 2006 Oui, mais c'est une bonne idée et j'essaierais dès jeudi.
(gile) Posté(e) le 12 juillet 2006 Posté(e) le 12 juillet 2006 Une petite précision, Item Method retourne une erreur si le bloc n'est pas présent dans la collection. Je ne sais pas si des fonction équivalentes existent en VBA, mais en vlisp on peut passer par un (if (vl-catch-all-error-p (vl-catch-all-apply ...)) ...) : (vla-insertblock (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point (getpoint "\nInsertion: ")) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)) ) "Logo" ) ) ) "F:\\D.A.O\\Blocs\\Logo.dwg" "Logo" ) 1 1 1 0 ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité Patrick Posté(e) le 13 juillet 2006 Posté(e) le 13 juillet 2006 Bon ben c'est confirmé, le comportement du VBA en version 2006 et 2007 n'est pas le même... Lorsque vous insérez un bloc en VBA 2007, vous ne pouvez plus comme en 2006 spécifier le bloc sous la forme nomdubloc.dwg Il faut tester si la définition du bloc est dans la table des blocs, puis selon que la réponse est oui ou non, spécifier le nom du bloc à insérer comme nomdubloc ou nomdubloc.dwg Vachement plus simple... j'ai passé la matinée à adapter mon développement. Précision, cette adaptation a été testée avec succès dans un AutoCAD 2007 français et allemand.
Invité Patrick Posté(e) le 12 juin 2009 Posté(e) le 12 juin 2009 Suite de la discussion sur le forum Autodesk US, je n'ai jamais eu d'explication sur cette différence de comportement entre la 2005 et la 2007...http://discussion.autodesk.com/forums/thread.jspa?threadID=732606
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