(gile) Posté(e) le 17 juillet 2006 Posté(e) le 17 juillet 2006 J'ai découvert en réparant un dysfonctionnement dans Edit_bloc.lsp que certains blocs de la "Palette de panneaux de signalisation routière" (Téléchargement proposés par l'administrateur >> Blocs, Bibliothèques, Textures >> AutoCAD) contenaient une "AcDbZombieEntity" (Objectname en vlisp). En parcourant les entités de ces blocs avec entnext il s'avère qu'il s'agit d'une ACAD_PROXY_ENTITY. Ces blocs "zombifiés" ne peuvent, par exemple, pas être insérés avec le Design Center, ni placés dans une palette d'outils, ni modifiés dans l'éditeur de bloc (AutoCAD 2006 et 2007). La suppression des "entités zombies" ne semble pas affecter les blocs en questions (blocs B8, C28-1, C28-2 et C4A pour la bibliothèque citée plus haut). Voici donc une petite routine pour supprimer les entités zombies de tous les blocs de la collection : (vlax-for bloc (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-for ent bloc (if (= "AcDbZombieEntity" (vla-get-ObjectName ent)) (vla-delete ent) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LUDWIG Posté(e) le 24 avril 2009 Posté(e) le 24 avril 2009 Merci (gile) Encore un outils à ajouter à ma collection de programme de nettoyage. Mes plans vont être tout propres ! Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 24 avril 2009 Posté(e) le 24 avril 2009 Salut Mes plans vont être tout propres A force de nettoyer, ils risquent de devenir vierge ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 25 mai 2010 Posté(e) le 25 mai 2010 Bonsoir à toutes et tous, On copie-colle uniquement le code en ligne de commande ? Commande: (vlax-for bloc (vla-get-blocks((_>((_> (vla-get-ActiveDocument(((_>(((_> (vlax-get-acad-object)(((_>(((_> )((_>((_> )(_>(_> (vlax-for ent bloc((_>((_> (if (= "AcDbZombieEntity" (vla-get-ObjectName ent))(((_>(((_> (vla-delete ent)(((_>(((_> )((_>((_> )(_>(_> )nil Si le résultat est nil, c'est qu'il n'y a pas d'""entités zombies"" ? Parce que le fichier en question ayant progressé se trouve avec des éléments non purgeables,... Peut-être pas de rapport,... Mais là aussi Edit_bloc semble ne pas pouvoir tout "redresser propre" ,... Une idée ? Merci d'avance, PS: Rappel du post Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 mai 2010 Auteur Posté(e) le 25 mai 2010 Salut, C'est quoi la demande ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 25 mai 2010 Posté(e) le 25 mai 2010 Re, On copie-colle uniquement le code en ligne de commande ? Si le résultat est nil, c'est qu'il n'y a pas d'""entités zombies"" ? Je voudrais "nettoyer" ce fichier,...et je ne sais pas comment reconnaitre ces entités dites "zombies" De plus, j'ai testé edit_bloc sur celui-ci est je n'ai pas de résultats probants, d'où mon interrogation. Certaines calques ne sont pas purgeable, je ne sais donc pas si cela provient de ce phénomène ou blocs imbriqués ou que sais-je encore,... Pour résumer, passer l'ensemble du fichier en définition du bloc en cochant toutes les options de edit_bloc (calque "0", couleur, type de ligne, épaisseur et style de tracé du bloc) Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 mai 2010 Auteur Posté(e) le 25 mai 2010 Salut, 1. oui on copie directement l'expression en ligne de commande.2. L'expression retourne toujours nil (pour info, il y a 9 zombies dans le dessin) Pour ce fichier, j'ai commencer par RECUPERER le fichier : 207 erreurs.Ensuite j'ai un peu regardé et à mon avis si c'est pour faire une bibliothèque de bloc saine il y a beaucoup de boulot... Il est truffé d'objets créés par des application genre Architecture ou Civil, MAP et Covadis qui tous stockent des informations parfaitement inutiles pour des panneaux de signalisation dans une multitude de dictionnaire et données étendues. Si tu crées un nouveau calque, des xdatas lui sont automatiquement attachées... L'utilisation d'Edit_Bloc n'est pas une bonne idée, si tu mets tous les composants des blocs sur le calque 0 et en couleur DuBloc, les panneaux vont devenir tout blanc !... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 25 mai 2010 Posté(e) le 25 mai 2010 Re, ok ! (pour info, il y a 9 zombies dans le dessin) Comment obtiens-tu le nombre de 9 ? j'ai commencer par RECUPERER le fichier : 207 erreurs. Quand je l'ai fait ,j'en ai trouvé bien plus !!!??? Etape 1 62200 objets contrôlésContrôle des entités 2ème passeEtape 2 62300 objets contrôlésContrôle des blocs 1137 blocs contrôlésNombre total d'erreurs trouvées 3787, corrigées 37870 objets effacés Qu'est-ce qui peut expliquer cette différence selon toi ? Et au final, au bout de 1 ou 2 minutes, AutoCAD à planté ! Il est truffé d'objets créés par des application genre Architecture ou Civil, MAP et Covadis C'est ce genre d'infos qui te font penser ça ? Chargement des applications non enregistrées ... -> Pas d'application trouvée pour la classe 'AcDbAssocNetwork' ! -> Pas d'application trouvée pour la classe 'AcMapDMStylizedEntitiesTable' ! -> Pas d'application trouvée pour la classe 'AcMapDMMapManager' ! -> Pas d'application trouvée pour la classe 'AcMapDMStyleLibrary' ! Si tu crées un nouveau calque, des xdatas lui sont automatiquement attachées... Aie ! :mad: Pas de solution "propre" alors ? L'utilisation d'Edit_Bloc n'est pas une bonne idée, si tu mets tous les composants des blocs sur le calque 0 et en couleur DuBloc, les panneaux vont devenir tout blanc !... Oui, je m'en suis rendu compte,... :casstet: (Je voulais dire sans changer la couleur,...) Merci de ton aide, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 mai 2010 Auteur Posté(e) le 25 mai 2010 Comment obtiens-tu le nombre de 9 ? en rajoutant un compteur :(setq n 0) (vlax-for bloc (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-for ent bloc (if (= "AcDbZombieEntity" (vla-get-ObjectName ent)) (progn (vla-delete ent) (setq n (1+ n)) ) ) ) ) Pas de solution "propre" alors ? À partir de cette base, ça me semble difficile. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 25 mai 2010 Posté(e) le 25 mai 2010 Re, Au second passage commande récupérer, comme toi,...!!??? Etape 1 62300 objets contrôlésContrôle des entités 2ème passeEtape 2 62300 objets contrôlésContrôle des blocs 1139 blocs contrôlésNombre total d'erreurs trouvées 207, corrigées 2070 objets effacés Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 25 mai 2010 Posté(e) le 25 mai 2010 Re, Ok ! Ne fonctionne pas chez moi,... Commande: (setq n 0)0Commande:_HELPCommande: (vlax-for bloc (vla-get-blocks((_>((_> (vla-get-ActiveDocument(((_>(((_> (vlax-get-acad-object)(((_>(((_> )((_>((_> )(_>(_> (vlax-for ent bloc((_>((_> (if (= "AcDbZombieEntity" (vla-get-ObjectName ent))(((_>(((_> (progn((((_>((((_> (vla-delete ent)((((_>((((_> (setq n (1+ n))((((_>((((_> )(((_>(((_> )((_>((_> )(_>(_> )nilCommande:AIDECommande:AIDECommande:AIDE Quand je fais "echap", ouvre l'aide,... À partir de cette base, ça me semble difficile. Dommage, Merci encore, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 26 mai 2010 Auteur Posté(e) le 26 mai 2010 1. Je pense que l'appel de l'aide est dû aux sauts de ligne rajoutés par CADxp dans le code qui correspondent à autant d'entrée entre les différentes expressions :(setq n 0) Entrée Entrée Le second Entrée appelle l'aide (dernière commande ?). Tu as appris, utilise plutôt l'éditeur Visual LISP... Rappel : une expression LISP retourne le résultat de la dernière évaluation. Dans ce cas, si le dernier objet évalué n'est pas un ZombieEntity l'expression retournera nil.Mais la variable n stocke le nombre de ZombieEntity qui on été supprimés, il suffit de l'interroger avec !n en ligne de commande ou directement n dans la console de l'éditeur. 2. Je n'ai pas dit qu'on ne pouvait pas faire une bibliothèque à partir de cette base, je dis juste qu'il sera long et fastidieux de faire quelque chose de propre, c'est à dire une bibliothèque dont les blocs ne ramènent pas avec eux dans les dessins dans lesquels ils sont insérés tout un tas d'objets inutiles. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 26 mai 2010 Posté(e) le 26 mai 2010 Bonjour à toutes et tous, C'est ce que j'ai fini par faire hier soir (Utiliser l'éditeur VL) pensant qu'il manquait une parenthèse,... J'ai alors formaté la fenêtre d'édition. Il me manquait alors l'appel de la variable. J'ai testé les deux solutions (console de l'éditeur et ligne de commande, ça fonctionne, merci pour le rappel => Il faut que je reprenne mes notes,...) Avant d'y arriver, la console me donnait => _1$ n avec un rectangle vert devant,.. Peux-tu me rappeler ce que cela veut dire ? 2. Je n'ai pas dit qu'on ne pouvait pas faire une bibliothèque à partir de cette base, Oui, bien sur, lorsque j'ai écrit "dommage", je voulais dire qu'il était dommage de ne pouvoir "nettoyer" correctement un bloc "facilement" de ces entités "polluantes". Une commande AutoCAD base pour ce genre de chose n'aurait pas été du luxe (comme par exemple détaché les xdatas lors de la création d'un nouveau calque,...,une commande permettant de remettre par défaut les entités sur le calque "0",etc,...) Je pensais tout sortir en wbloc et reconstruire des fichiers par cathégorie. Est-ce que la commande wbloc est adaptée pour espérer avoir quelque chose de propre, ou est-ce qu'il faut tout de même ouvrit tous les blocs pour remettre "manuellement" les entités dans le calque "0" est assurer ensuite une purge du fichier selon toi ? Merci encore, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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