(gile) Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 J'ouvre un nouveau fil pour faire suite à celui-ci qui devenait long et confus. Donc, avec l'aide Fraid, sergeluc et Patrick_35, nous en sommes à 3 routines pas encore tout à fait abouties semble-t-il. Raster_purge qui supprime du dictionnaire des images les images non réfrencées ou non contenues dans des blocs : Version 1.1 ;;; RASTER_PURGE version 1.1 ;;; Purge les images raster non référencées ou non contenues dans des blocs (defun c:raster_purge (/ AcDoc lay l_lst im_dict n im_lst ss name obj bloc ent) ;; Chargement des fonctions ActiveX (vl-load-com) ;; AcDoc : pointeur vers le document actif (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) ;; Dévérouillage de tous les calques (repeat (setq n (vla-get-count (vla-get-Layers AcDoc))) (setq lay (vla-item (vla-get-Layers AcDoc) (setq n (1- n)))) (if (= :vlax-true (vla-get-lock lay) ) (progn (vla-put-lock lay :vlax-false) (setq l_lst (cons lay l_lst)) ) ) ) ;; Recherche du "dictionnaire" des images (s'il existe) (setq im_dict (vl-catch-all-apply 'vla-item (list (vla-get-Dictionaries acdoc) "ACAD_IMAGE_DICT") ) ) (if (vl-catch-all-error-p im_dict) (setq im_dict nil) ) ;; Constitution d'une liste des images contenues dans la "bibliothèque" (if im_dict (progn (repeat (setq n (vla-get-Count im_dict)) (setq im_lst (cons (vla-item im_dict (setq n (1- n))) im_lst)) ) ;; Suppression de la liste des images insérées dans le dessin (if (setq ss (ssget "_X" '((0 . "IMAGE")))) (repeat (setq n (sslength ss)) (setq name (vla-get-Name (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ) im_lst (vl-remove (vla-item im_dict name) im_lst) ) ) ) ;; Suppression de la liste des images contenues dans les blocs insérées (if (setq ss (ssget "_X" '((0 . "INSERT")))) (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ) (if (vlax-property-available-p obj 'EffectiveName) (setq name (vla-get-EffectiveName obj)) (setq name (vla-get-Name obj)) ) (setq bloc (vla-item (vla-get-blocks AcDoc) name)) (if (/= 0 (vla-get-count bloc)) ;_ éviter les blocs vides (repeat (setq m (vla-get-count bloc)) (setq ent (vla-item bloc (setq m (1- m)))) (if (= (vla-get-ObjectName ent) "AcDbRasterImage") (setq im_lst (vl-remove (vla-item im_dict (vla-get-Name ent)) im_lst ) ) ) ) ) ) ) ;; Suppression du dessin des images restant dans la liste (mapcar '(lambda (x) (vl-catch-all-apply 'vla-delete (list x))) im_lst ) ) ) ;; Restauration de l'état des calques (if l_lst (mapcar '(lambda (x) (vla-put-lock x :vlax-true) ) l_lst ) ) (princ) ) Xref_purge qui purge les xref non référencées : Version 1.2 ;;; XREF_PURGE version 1.2 ;;; Purge les xrefs non référencées (defun c:xref_purge (/ AcDoc lay n l_lst blocks name n_lst cnt item obj x_lst) ;; Chargement des fonctions ActiveX (vl-load-com) ;; AcDoc : pointeur vers le document actif (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) ;; Dévérouillage de tous les calques (repeat (setq n (vla-get-count (vla-get-Layers AcDoc))) (setq lay (vla-item (vla-get-Layers AcDoc) (setq n (1- n)))) (if (= :vlax-true (vla-get-lock lay) ) (progn (vla-put-lock lay :vlax-false) (setq l_lst (cons lay l_lst)) ) ) ) ;; Pour chaque nom de xref de la collection, on teste si une référence ;; est présente dans le dessin, si non la xref est détachée du dessin (vlax-for x (setq blocks (vla-get-Blocks AcDoc)) (if (and (= :vlax-true (vla-get-isXref x)) (/= 0 (vla-get-count x)) (not (member (setq name (vla-get-name x)) n_lst)) ) (setq n_lst (cons name n_lst)) ) ) (foreach n n_lst (repeat (setq cnt (vla-get-Count (setq item (vla-item blocks (eval n))))) (setq obj (vla-item item (setq cnt (1- cnt)))) (if (and (= (vla-get-objectname obj) "AcDbBlockReference") (member (vla-get-Name obj) n_lst) ) (setq x_lst (cons (vla-get-Name obj) x_lst)) ) ) ) (foreach n n_lst (if (member (eval n) x_lst) (setq n_lst (vl-remove (eval n) n_lst)) ) ) (foreach n n_lst (if (not (ssget "_X" (list (cons 0 "INSERT") (cons 2 (eval n))) ) ) (vla-detach (vla-item (vla-get-Blocks AcDoc) (eval n))) ) ) ;; Restauration de l'état des calques (if l_lst (mapcar '(lambda (x) (vla-put-lock x :vlax-true) ) l_lst ) ) (princ) ) Et enfin Spurge qui, après avoir effectué raster_purge et xref_purge, purge tout le dessin dans un boucle pour s'assurer que les sous-blocs des blocs imbriqués sont purgés aussi : Version 1.3 ;;; SPURGE version 1.3 ;;; Purge tout, y compris les blocs imbriqués, les blocs vides, ;;; les xrefs et les images non référencées (defun c:spurge (/ AcDoc lay l_lst ss n obj name bloc ent r_lst x_lst p_lst c_lst m ) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) ;; Purge les xrefs et rasters non référencées (c:xref_purge) (c:raster_purge) ;; Dévérouillage de tous les calques (repeat (setq n (vla-get-count (vla-get-Layers AcDoc))) (setq lay (vla-item (vla-get-Layers AcDoc) (setq n (1- n)))) (if (= :vlax-true (vla-get-lock lay) ) (progn (vla-put-lock lay :vlax-false) (setq l_lst (cons lay l_lst)) ) ) ) ;; r_lst : liste des blocs et "sous-blocs" insérés ;; x_lst : liste des xrefs insérées (setq ss (ssget "_X" '((0 . "INSERT")))) (if ss (progn (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ) (if (vlax-property-available-p obj 'EffectiveName) (setq name (vla-get-EffectiveName obj)) (setq name (vla-get-Name obj)) ) (if (and (= 0 (vla-get-count (vla-item (vla-get-Blocks AcDoc) name)) ) (= :vlax-false (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) name) ) ) ) (vla-delete obj) ;_ Suppression des blocs vides (if (= :vlax-true (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) name) ) ) (if (not (member name x_lst)) (setq x_lst (cons name x_lst)) ) (if (not (member name r_lst)) (setq r_lst (cons name r_lst)) ) ) ) ) ;; Ajout des "sous-blocs" des blocs insérés à r_lst (setq n 0) (if r_lst (while (setq name (nth n r_lst)) (setq bloc (vla-item (vla-get-blocks acDoc) name)) (repeat (setq m (vla-get-count bloc)) (setq ent (vla-item bloc (setq m (1- m)))) (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference") (not (member (vla-get-name ent) r_lst)) ) (setq r_lst (reverse (cons (vla-get-Name ent) (reverse r_lst))) ) ) ) (setq n (1+ n)) ) ) ) ) (setq p_lst T) (while p_lst (vla-PurgeAll AcDoc) ;; c_lst liste des définitions de blocs de la collection (setq c_lst nil) (repeat (setq n (vla-get-count (vla-get-blocks AcDoc))) (setq c_lst (cons (vla-get-name (vla-item (vla-get-blocks AcDoc) (setq n (1- n))) ) c_lst ) ) ) ;; p_lst : liste des blocs à purger, soit les blocs de la collection ... ;; ... moins les blocs "*Model_Space" "*Paper_Space*" et les blocs insérées (setq p_lst (vl-remove-if '(lambda (x) (or (= (substr x 1 1) "*") (member x r_lst) ) ) c_lst ) ) ;; ... moins les xrefs insérées et les blocs qu'elles contiennent (mapcar '(lambda (x) (setq p_lst (vl-remove-if '(lambda (y) (wcmatch y (strcat x "*")) ) p_lst ) ) ) x_lst ) ) (vla-AuditInfo AcDoc :vlax-true) ;; Restauration de l'état des calques (if l_lst (mapcar '(lambda (x) (vla-put-lock x :vlax-true) ) l_lst ) ) (princ) )[Edité le 13/6/2006 par (gile)][Edité le 13/6/2006 par (gile)][Edité le 6/7/2006 par (gile)][Edité le 8/7/2006 par (gile)][Edité le 9/10/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 j'ai reussi a te retrouvé j'ai fait tourné les 3 lisp séparement il y donc que xref_purge qui fonctionne les 2 autres me donne le meme message d'erreur https://github.com/Fraiddd
(gile) Posté(e) le 13 juin 2006 Auteur Posté(e) le 13 juin 2006 les 2 autres me donne le meme message d'erreur Il semblerait donc qu'il y ait déjà un problème avec raster_purge, c'est bizarre parceque tout à l'heure tu disais qu'il purgeait trop (images insérées dans les blocs). Le message ; "; erreur: Erreur Automation. Aucune description n'a été entrée." intervient, par exemple, quand, pour trouver un élément dans une collection, on fait (vla-item collection nom) et que nom est à nil. Dans ces LISP, l'argument "nom" est soit un index (là il ne devrait pas y avoir de souci) soit acquis avec (vla-get-Name ...) Dans le dessin incriminé, peux tu essayer, si tu as le temps, de faire : (vla-get-Name (vlax-ename->vla-object (car (entsel)))) en sélectionnant les images insérées ou celles contenues dans les blocs (après décomposition, bien sûr) pour voir s'il t'es bien retourné le nom de l'image. C'est peut-être une piste. Ou, si tu veux, m'envoyer un dessin (pas trop lourd) pour lequel tu as ce message. gilecantel(a)wanadoo.fr Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 ton incantation me retourne bien le nom de l'image t'envoyer un plan cela me parrait difficilecar se sont des plans qui appartienne au ministere de l'intetieur... je vais voir se que je peux faire pour t'envoyer quelque chose https://github.com/Fraiddd
(gile) Posté(e) le 13 juin 2006 Auteur Posté(e) le 13 juin 2006 Peut-être une autre piste : la présence d'un bloc vide (ne contennt aucune entité) inséré dans le dessin ferait retourner ce message d'erreur à l'interprétation de :(setq ent (vla-item bloc (setq m (1- m)))). Je modifie SPURGE pour qu'il efface du dessin les blocs vides avant de lancer la purge qui les supprimera définitvement. (version 1.1) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 13 juin 2006 Auteur Posté(e) le 13 juin 2006 Comme il est nécessaire d'exécuter xref_purge et raster_purge avant de faire la boucle pour purger les blocs imbriqués, j'ai modifié raster_purge pour tester l'éventuelle présence de blocs vides (version 1.1) et re-modifié spurge en conséquence (version 1.2). On va finir par y arriver :cool: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 je t'ai envoyé un dessin test car cela ne marche toujours pas sur celui la mais j'ai essayé dans d'autre sa marche il y a donc une particularité dans le test je ne t'en voudrai pas si tu laisse tombé :P merci https://github.com/Fraiddd
(gile) Posté(e) le 13 juin 2006 Auteur Posté(e) le 13 juin 2006 J'ai essayé sur ton dessin test, çà a marché. S'il subsiste un problème c'est peut-être une histoire de version d'AutoCAD, j'ai vu qu'il était au format AutoCAD 2000, si tu travailles effectivement sur une 2000, il y a parfois des problèmes avec certaines fonctions vlax... PS j'ai testé avec le dessin au format 2000 et au format 2007 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sergeluc Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 Bonjour GileJe viens de récupérer ta dernière version 1.1 je testerai demain (le 14-06) sur 2000 et 2006Tant qu'il sagit d'xref et de purge cela m'intéresse .A+de monis en monis de disponibilité en ce moment,mais je ne désespère pas..... [Edité le 16/6/2006 par sergeluc]
sergeluc Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 Bonjour Gilej'ai testé sur autocad2000 et 2006 avec un plan de 1.8méga et 2 xrefs. spurge version 1.2 avec 1 xref chargé et l'autre chemin non reconnu .j'ai arreté la procédure au bout de 5 minutes.(trop long) XREF_PURGE seul aucun résultat .les xrefs conservent leur état initial quel qu'il soit. et purge_xref du 5/6/2006 à 21:15 avec les corrections pour la version 2000 . détache les xrefs quelque soit leur état (chemin reconnu ou pas) a+
(gile) Posté(e) le 23 juin 2006 Auteur Posté(e) le 23 juin 2006 Houlà ! Je les avais presque oublié celles là ! Bon je vais essayer dans l'ordre, en expliquant bien à quoi sert chaque routine. XREF_PURGE seulaucun résultat .les xrefs conservent leur état initial quel qu'il soit. XREF_PURGE purge du dessin les xref non référencées, c'est à dire celles qui ont été insérées puis effacées elles ne sont plus apparentes dans le dessin mais apparaissent toujours dans la palette des xrefs (comme non référencées), en vlisp on les retrouve aussi dans la collection des blocs du dessin.Chez moi çà fonctionne très bien. et purge_xref du 5/6/2006 à 21:15 avec les corrections pour la version 2000 .détache les xrefs quelque soit leur état (chemin reconnu ou pas) PURGE_XREF détache du dessin les xref introuvables (celles dont le chemin n'est plus valide) elles sont aussi signalée comme telle dans la palette. Je crois me souvenir que c'est un problème de version avec 2000. Je te propose de faire un test : après avoir fait (vl-load-com), fait : (vla-get-Name (vlax-ename->vla-object (car (entsel)))) et sélectionne une xref s'il est retourné nil, c'est que la propriété n'est accessible la routine ne peut pas marcher avec 2000. si c'est T, essaye çà : (vla-get-Path (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) (vla-get-Name (vlax-ename->vla-object (car (entsel)))) )) et vérifie que le chemin est valable. SPURGE exécute xref_purge et raster_purge puis purge tous le dessin en faisant une purge "profonde" des blocs imbriqués. [Edité le 25/6/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 bonjour Gile je me permet de revenir sur ce lisp car purge xref enleve les xref qui sont déchargéeset la c'est embétant je voulais seulement les xrefs sans reference (supprimer manuelement) en plus sur 2006 le fonctionnement de spurge me parait aléatoiredes fois sa marche et des fois non sur un meme plan https://github.com/Fraiddd
(gile) Posté(e) le 6 juillet 2006 Auteur Posté(e) le 6 juillet 2006 Salut, Je n'avais effectivement pas pensé aux xref déchargées et xref_purge détachait toutes les xrefs non présentes dans le dessin. Le seul moyen que j'ai trouvé pour différencier les xrefs déchargées c'est qu'elles ne "comptent" aucune entité. Donc je modifie xref_purge pour qu'il détache toutes les xrefs non présentes dans le dessin sauf celles qui n'ont aucune entité (ce qui, à priori, ne devrait concerner que les xrefs déchargées). Pour ce concerne le fonctionnement aléatoire sur AutoCAD 2006, je ne suis pas sûr de pouvoir t'aider, je n'ai que la version 2007 et je dois avouer n'avoir pas fais énormément de tests approfondis et être proche de la limite de mes connaissances en VisualLISP. [Edité le 6/7/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sergeluc Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 Bonjour,si cela peut aider il y a cette routine http:// http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=10802#pid41812en supprimant : (if l3(xref-ins-2000);pour acad2000 et 2006) ;if l3 elle détache tous les xrefs sans chemins (non trouvés)
(gile) Posté(e) le 8 juillet 2006 Auteur Posté(e) le 8 juillet 2006 La modification apportée à xref_purge (version 1.1) pour éviter de purger les xrefs déchargées faisait entrer SPURGE (qui purge les blocs vides) dans une boucle sans fin. Je modifie SPURGE (version 1.3) pour corriger le problème. Pour sergeluc, Je te remercie mais j'avais fait ce nouveau sujet pour éviter les confusions qui avaient cours dans le sujet précédent, il n'est question ici que des xrefs non-référencées (pas des xrefs introuvables). [Edité le 8/7/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 12 septembre 2006 Posté(e) le 12 septembre 2006 bonjour Gile Je me permet de ramener cette discussion sur le devantcar il arrive parfois que cela tourne en boucle j'ai beau chercher je ne trouve pas pourquoi je precise que c'est la version 1.3 je viens de m'apercevoir que ce sont des dessins fait a partir de gabarits fournis par les clients qui on peut etre Autodesk Architectural Desktop ou une autre application perpendiculaire est-ce lié?[Edité le 12/9/2006 par Fraid] il y a 2 blocs récalcitrantarchtick et ELLIPSEainsi que le calque defpoint sans cotes :casstet: [Edité le 12/9/2006 par Fraid] https://github.com/Fraiddd
(gile) Posté(e) le 12 septembre 2006 Auteur Posté(e) le 12 septembre 2006 Salut Fraid Décidément je crois que je me débrouille mieux pour faire des LISP qui créent ou qui transforment des objets graphiques que pour "nettoyer" un dessin :casstet: Je peux difficilement répondre à la question comme ça, il faudrait d'abord essayer de situer le (ou les) bug(s) dans une des sous routines Raster_purge ou xref_purge ou dans la routine Spurge.Depuis que j'ai découvert des zombies dans certains blocs et qu'ils faisaient planter Edit_Bloc je m'attends à tout. Le plus simple serait que tu m'envoie un fichier ou fragment de fichier (si confidentiel) avec les blocs incriminés. Pour le calque Defpoint, je vais essayer de voir, demain, je devrais avoir un peu de temps, ce soir je suis trop fatigué. gilecantel(at)wandoo.fr Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 je t'ai envoyé un fragment de plan j'ai réussi a eliminer le bloc ELLIPSE qui etait dans un bloc mais il me semble que je ne suis pas le seul a etre embeté avec _Archtick sinon spurge est genial quand il tourne https://github.com/Fraiddd
(gile) Posté(e) le 13 septembre 2006 Auteur Posté(e) le 13 septembre 2006 Salut, Je n'ai pas réussi à trouver pourquoi le bloc _Archtick n'est pas purgeable ni avec la commande PURGER ni avec la fonction vla-PurgeAll, si le fichier est issu d'une suite verticale ou d'un autre logiciel ceci explique peut-être cela, mais ça ne m'aide pas à comprendre.Toujours est il que j'ai pu contourner le problème en supprimant tous les blocs non référencés avec vla-delete plutôt que vla-PurgeAll. Pour le calque Defpoints, dans le fichier que tu m'as envoyé, les fenêtres de présentation et les polylignes qui ont servi à les faire sont sur ce calque, il n'est donc pas supprimable en l'état. Je poste ici une nouvelle version provisoire de Spurge en attendant de trouver quelque chose de fiable pour le calque Defpoints. ;;; SPURGE version 1.40 ;;; Purge tout, y compris les blocs imbriqués, les blocs vides, ;;; les xrefs et les images non référencées (defun c:spurge (/ AcDoc lay l_lst ss n obj name bloc ent r_lst x_lst p_lst c_lst m ) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) ;; Purge les xrefs et rasters non référencées (c:xref_purge) (c:raster_purge) ;; Dévérouillage de tous les calques (vlax-for c (vla-get-Layers AcDoc) (if (= :vlax-true (vla-get-lock c) ) (progn (vla-put-lock c :vlax-false) (setq l_lst (cons c l_lst)) ) ) ) ;; r_lst : liste des blocs et "sous-blocs" insérés ;; x_lst : liste des xrefs insérées (setq ss (ssget "_X" '((0 . "INSERT")))) (if ss (progn (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ) (if (vlax-property-available-p obj 'EffectiveName) (setq name (vla-get-EffectiveName obj)) (setq name (vla-get-Name obj)) ) (if (and (= 0 (vla-get-count (vla-item (vla-get-Blocks AcDoc) name)) ) (= :vlax-false (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) name) ) ) ) (vla-delete obj) ;_ Suppression des blocs vides (if (= :vlax-true (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) name) ) ) (if (not (member name x_lst)) (setq x_lst (cons name x_lst)) ) (if (not (member name r_lst)) (setq r_lst (cons name r_lst)) ) ) ) ) ;; Ajout des "sous-blocs" des blocs insérés à r_lst (setq n 0) (if r_lst (while (setq name (nth n r_lst)) (setq bloc (vla-item (vla-get-blocks acDoc) name)) (repeat (setq m (vla-get-count bloc)) (setq ent (vla-item bloc (setq m (1- m)))) (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference") (not (member (vla-get-name ent) r_lst)) ) (setq r_lst (reverse (cons (vla-get-Name ent) (reverse r_lst))) ) ) ) (setq n (1+ n)) ) ) ) ) ;; c_lst liste des définitions de blocs de la collection (setq c_lst nil) (vlax-for b (vla-get-blocks AcDoc) (setq c_lst (cons (vla-get-name b) c_lst)) ) ;; p_lst : liste des blocs à purger, soit les blocs de la collection ... ;; ... moins les blocs "*Model_Space" "*Paper_Space*" et les blocs insérées (setq p_lst (vl-remove-if '(lambda (x) (or (= (substr x 1 1) "*") (member x r_lst) ) ) c_lst ) ) ;; ... moins les xrefs insérées et les blocs qu'elles contiennent (mapcar '(lambda (x) (setq p_lst (vl-remove-if '(lambda (y) (wcmatch y (strcat x "*")) ) p_lst ) ) ) x_lst ) ;; suppression de tous le blocs de p_lst (mapcar '(lambda (x) (vla-delete (vla-item (vla-get-Blocks AcDoc) x)) ) p_lst ) ;; Purge et audit du dessin (vla-PurgeAll AcDoc) (vla-AuditInfo AcDoc :vlax-true) ;; Restauration de l'état des calques (if l_lst (mapcar '(lambda (x) (vla-put-lock x :vlax-true) ) l_lst ) ) (princ) ) [Edité le 13/9/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 merci Gilessa marchemais pour le calque defpoint laisse tombéje vais mettre tout ce qu'il contient dans un autre calquej'aurai du le voir :P https://github.com/Fraiddd
(gile) Posté(e) le 13 septembre 2006 Auteur Posté(e) le 13 septembre 2006 Même si tu enlèves tous les objets qui y sont le calque Defpoints ne pourra pas être purgé (comme le calque 0). J'arrive à le supprimer à chaque ouverture du dessin avec vla-delete mais plus s'il est recréé après avoir créer puis effacer une cote. Je vais esssayer de trouver... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 si si je t'assure que j'ai réussi a le purger puisqu'il n'y a pas de cote sinon comment y intégrer un overkill sans boite de dialogue? cela sera la supermega purge de la mort :D je vais demander cela dans un nouveau sujet [Edité le 13/9/2006 par Fraid] https://github.com/Fraiddd
(gile) Posté(e) le 13 septembre 2006 Auteur Posté(e) le 13 septembre 2006 Tu as raison, au temps pour moi, on ne peut purger Defpoints avec la commande purger mais vla-purgeall le fait, donc la dernière version, telle que ci-dessus, devrait être la bonne dans l'état actuel de nos connaissances ... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 j'ai trouvé un plan ou j'ai l'erreur suivante ; erreur: Erreur Automation Objet référencé ce n'est pas la premiere fois je te l'ai mailer jusqu'a maintenant il suffisait de faire une purge ordinaire avant et cela fonctionnaispas dans celui la apres une recherche sur google cela ressemble a une erreur VBA :casstet: [Edité le 13/9/2006 par Fraid] https://github.com/Fraiddd
(gile) Posté(e) le 13 septembre 2006 Auteur Posté(e) le 13 septembre 2006 apres une recherche sur google cela ressemble a une erreur VBA C'est normal en VisualLISP les fonction ActiveX sont utilisées comme en VBA. Le problème vient du bloc "_OBLIQUE" et de la dernière modification apportée au LISP. Il est considéré comme référencé par AutoCAD et donc non purgeable, d'où pas d'erreur avec la commande purge ou (vla-purgeall). Dans le LISP pour savoir si un bloc est référencé, je fais une sélection sur tout le dessin en filtrant avec le nom de chaque bloc de la collection, si, pour un nom de bloc, le jeu de sélection est vide, le bloc est considéré comme non-référencé (ce qui me semble logique). C'est le cas pour ce bloc "_OBLIQUE", d'où le message d'erreur. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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