lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Re, J'me disais aussi,... J'avais rajouté en début de lisp "defun c:PurgeBlock",.... Si je colle "(gc:PurgeBlock "*")" en ligne de commande, j'ai => Commande: (gc:PurgeBlock "*"); erreur: Erreur Automation Objet référencé Ou définit toi une commande en utilisant cette fonction : Comment ? En début de lisp par exemple ? Car, en faisant ça, j'ai => Commande: (LOAD "C:/Users/Lilian/Desktop/URB.lsp") GC:PURGEBLOCKCommande: urb; erreur: Erreur Automation Objet référencé Surement un truc que je n'ai pas pigé, désolé,... Merci encore, PS: Je n'arrive pas à éditer les smileys, c'est pénible ce truc,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Si je colle "(gc:PurgeBlock "*")" en ligne de commande, j'ai => Commande: (gc:PurgeBlock "*"); erreur: Erreur Automation Objet référencé Ça m'intéresse, peux-tu m'envoyer un fichier avec les blocs qui provoquent cette erreur. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Re, C'est sur ce fichier qui m'a servi pour divers tests cette AA (Je te préviens, ils ne ressemble à rien,...) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Re, En recommençant le chargement du lisp comme ceci (je ne sais toujours pas si la syntaxe est ok,...) (defun c:URB () (gc:PurgeBlock "*") (princ)) ;; gc:PurgeBlock ;; Purge les blocs dont le nom correspond au modèle (insensible à la casse) ;; ;; Argument ;; pat : un modèle pour le nom de bloc, accepte les caractères génériques ("*" pour tous) (defun gc:PurgeBlock (pat / massoc blk name blst loop) (vl-load-com) (defun massoc (code alst) (if (setq alst (member (assoc code alst) alst)) (cons (cdar alst) (massoc code (cdr alst))) ) ) (while (setq blk (tblnext "BLOCK" (not blk))) (if (and (wcmatch (strcase (setq name (cdr (assoc 2 blk)))) (strcase pat)) (< (cdr (assoc 70 (setq elst (entget (tblobjname "BLOCK" name))))) 4) ) (setq blst (cons (cdr (assoc 330 elst)) blst)) ) ) (setq loop T) (while (and loop blst) (setq loop nil) (foreach b blst (or (vl-some 'entget (massoc 331 (entget b))) (progn (setq blk (vlax-ename->vla-object b)) (vlax-for o blk (if (= (vla-get-ObjectName o) "AcDbBlockReference") (vla-Delete o) ) ) (vla-delete blk) (setq blst (vl-remove b blst)) (setq loop T) ) ) ) ) ) , j'aimaintenant ce message : (Un seul bloc non purgé *U2) Commande:Commande: (LOAD "C:/Users/Lilian/Desktop/URB.lsp") GC:PURGEBLOCKCommande: (gc:PurgeBlock "*")T Cela vient surement d'une mauvaise utilisation de ma part, auquel cas, désolé,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Lilian, Il n'y a aucun problème avec le code tel que tu l'as posté. Dans le dessin mis en téléchargement, la collection des blocs contient les blocs suivant (avec le nouveau code : _"niv dalle compact-081114105006-" _"*U2" _"e" |_"*U2"(niv dalle compact-081114105006-) _"plancher_a" _"d" |_"e" | |_"*U2"(niv dalle compact-081114105006-) |_"plancher_a" _"Ligne Arase" _"surfbloc" _"TotalArea" _"TotalPerimeter" La commande PURGER donne les blocs "d" et "Ligne Arase" purgeables (curieusement "*U2" n'apparait pas alors qu'il n'est pas référencé). Si je lance URB, je n'ai aucun message et la commande purger ne donne plus aucun bloc puregeble. Les blocs "d" et "Ligne Arase" ont donc bien été purgés ainsi que les blocs "e", "_niv dalle compact-081114105006-" et "plancher_a" imbriqués dans "d".Si je relance Listblocks (ci dessous) je note que "*U2" a aussi été purgé. (defun c:ListBlocks (/ foo efName name def) (defun foo (pref blk) (vlax-for o blk (if (and (= (vla-get-ObjectName o) "AcDbBlockReference") (setq name (vla-get-Name o) efName (vlax-get o (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name ) ) ) (setq def (vla-item *blocks* efName)) (= (vla-get-IsXref def) :vlax-false) ) (progn (princ (strcat "\n" pref "\"" name "\"" (if (/= name efName) (strcat "(" efName ")") "" ) ) ) (foo (strcat " |" pref) def) ) "" ) ) ) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*))) (vlax-for b *blocks* (if (and (= (vla-get-IsXref b) :vlax-false) (= (vla-get-IsLayout b) :vlax-false) ) (progn (princ (strcat "\n\n_\"" (vla-get-Name b) "\"")) (foo " |_" b) ) ) ) (textscr) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Bonjour à toutes et tous, Gilles, Pourtant, suite aux tests réalisés hier sur le fichier joint, quand je passe par la fonction "classique" de purge AutoCAD, j'ai ce fameux bloc *U2 de purgeable http://img.ahst.fr/data/images/purgegille.jpg Et quand je lance "list_blk_children", j'ai : Commande: list_blk_children Xref trouvé ---> C:\Users\Lilian\Documents\BAC SEMELLES COTATIONS.dwg36 Explore le bloc TotalPerimeterExplore le bloc TotalAreaExplore le bloc surfblocExplore le bloc *U2 Si je passe par LISTBLOCKS : Commande: LISTBLOCKS_"*U2"_"surfbloc"_"TotalArea"_"TotalPerimeter"_"*D|REF12"Commande: Je n'ai rien touché au fichier posté hier pour voir si tu fais le même constat chez toi en suivant les mêmes opérations,... D'ailleurs pourquoi la xref avec "list_blk_children" porte le nom BAC SEMELLES COTATIONS.dwg36 et avec " LISTBLOCKS" "*D|REF12" ????? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 OK, en ce qui concerne "*U2", j'ai compris c'est le nom du bloc anonyme créé par l'insertion du bloc dynamique "niv dalle compact-081114105006-" dans "e".Comme il est imbriqué, il n'apparait pas au premier niveau des blocs purgeables. ListBlocks et list_blk_children ne fonctionnent pas exactement pareil, ceci doit pouvoir expliquer les différences, mais pour la xref (et les blocs qu'elle contient), je ne peux pas tester, je n'ai pas le fichier. Dans tout les cas, je ne vois pas de dysfonctionnement de gc:PurgeBlock. PS : J'ai modifié ListBlocks pour qu'il affiche le nom effectif et le "nom du bloc anonyme" pour les blocs anonymes imbriqués Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Re, Comme il est imbriqué, il n'apparait pas au premier niveau des blocs purgeables. Que faut-il faire alors dans ce cas ? Relancer URB" ? mais pour la xref (et les blocs qu'elle contient), je ne peux pas tester, je n'ai pas le fichier. Le voici (là aussi, rien d'extraordinaire, un bloc dyn uniquement) Dans tout les cas, je ne vois pas de dysfonctionnement de gcurgeBlock. Moi non plus à priori, c'est juste que je comprenais pas "l'attitude" du bloc "*U2",... J'ai modifié ListBlocks pour qu'il affiche le nom effectif et le "nom du bloc anonyme" pour les blocs anonymes imbriqués Vu ! 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