-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Peut-être, que j'enfonce un porte ouverte, mais je suis tellement content de ma découverte, que j'ai envie de la partager. Bruno Toniutti m'avais fait remarqué ici qu'en utilisant (vlax-get objet 'coordinates) il était retourné une liste de coordonnées plus directement exploitable en LISP que le variant retourné par (vla-get-coordinates objet). Je viens de découvrir qu'il en est de même avec (vlax-invoke ...), attention, pas (vlax-invoke-method ...) qui retourne aussi un variant. Par exmple : (setq liste_objets (vlax-invoke bloc 'explode)) retourne directement la liste des objets composant bloc, que jusque là, j'obtenais en faisant : (setq liste_objets (vlax-safearray->list (vlax-variant-value (vla-explode bloc) ) ) ) Et aussi, (vlax-invoke ...) accepte comme argument une liste là où (vla- ...) et (vlax-invoke-method ...) demandent un variant : (vlax-invoke ModSpace 'addRegion liste_objets) fonctionne comme : (vla-addRegion ModSpace (vlax-make-variant (vlax-SafeArray-fill (vlax-make-SafeArray vlax-vbObject (cons 0 (- (length liste_objets) 1)) ) liste_objets ) ) ) En espérant que cela puisse être aussi profitable à d'autres. [Edité le 15/6/2006 par (gile)]
-
Salut, À tout hasard, dans les options, onglet "Préférences utilisateurs", la case "Raccourci Windows" est elle cochée ?
-
J'ai un petit peu amélioré le LISP ci-dessus, ajout de commentaires et réparation d'une erreur dans l'union des régions créées à partir des composants d'un bloc. Toutefois, çà ne fonctionne pas si les entités qui composent le(s) contour(s) du bloc ne sont pas jointives par leurs extrémités (de même avec la commande _region). http://img512.imageshack.us/img512/4849/inters5wi.png http://img45.imageshack.us/img45/5420/inters24oh.png [Edité le 15/6/2006 par (gile)]
-
Je crois que tu confonds, TEXTSIZE, c'est la hauteur par défaut, celle qui est proposée quand la hauteur de texte est défine à 0 dans le style de texte. Doublé par Tramber ;) [Edité le 14/6/2006 par (gile)]
-
C'est tout simplement parcequ'on ne peut pas mettre de hauteur de texte à 0 unités.
-
Salut Je ne connais rien en VBA, mais je pense que pour accéder aux propriétés d'une xref il faut la retrouver dans la collection de blocs du dessin dans une boucle avec ActiveDocument, Item, Blocks, Name et la propriété, eventuellement IsXref puis récupérer les propriétés de l'objet bloc/xref. en VisualLISP, on fait comme çà.
-
Salut Banzai, la commande _interfere d'AutoCAD ne fonctionne qu'avec des solides 3D,et dans le cas qui nous préoccupe ici il s'agit de blocs 2D.
-
Si le repérage polaire est actif (code binaire 8 d'autosnap) le mode ortho est inactif et vice-versa. Sinon, Bonuscad à fait une super routine pour voir les variables systèmes qui ont changé après une action, stavar, je crois ... ;)
-
Salut, Eh non ! 128 autorise toute entrée comme mot-clé (keyword) et interprète "ENTER" comme une chaine vide "", ce 128 prend donc le dessus sur 1 si ces deux bits sont spécifiés ensemble. Pour empécher que l'utilisateur fass "ENTER" c'est juste (initget 1) Sinon pour les histoires de getangle, getorient, aunits, angbase ... tu peux voir ce sujet.
-
Salut, J'ai essayé mais il semble qu'il y ait un problème avec les cercles et les ellipses http://img104.imageshack.us/img104/1486/perp17ib.png Je pense que c'est parceque la tangente est calculée au point de séléction de l'entité : et pas par rapport au point de départ. ou alors j'ai encore rien compris :P PS : quand on force la valeur de ORTHOMODE il peut être bien d'enregistrer avant la valeur de AUTOSNAP pour la restaurer après la restauration de celle d'orthomode (pour ceux qui, comme moi, travaillent avec le repérage polaire). PPS : Je crois bien qu'encore une fois j'ai compris de travers. Il s'agissait d' "Elever une perpendiculaire au point :", le point étant sur l'objet, non ? [Edité le 14/6/2006 par (gile)]
-
Traduction de VBA en Lisp ( ou de superficie à contenance) ?
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, Un exemle avec substr, l'argument peut être une chaine de caractère du type : "123456 m2" ou "123456m2" ou "123456" ou un nombre (les décimales des réels sont tronquées (fix)) 123456 ou 123456.25 (defun surf2aire (surf / len) ;; si l'argument est un nombre, il est transformé en chaine (if (numberp surf) (setq surf (itoa (fix surf))) ) ;; suppression des caractères " m2" à la fin de la chaine (setq surf (vl-string-right-trim " m2" surf)) ;; longueur de la chaine (setq len (strlen surf)) ;; nouvelle chaine en fonction de la longueur (cond (( (strcat (substr surf 1 (- len 4)) "ha " (substr surf (- len 3) 2) "a " (substr surf (- len 1) 2) "ca " ) ) (( (strcat (substr surf 1 (- len 2)) "a " (substr surf (- len 1) 2) "ca " ) ) (( (strcat "0a " surf "ca ") ) (T (strcat "0a 0" surf "ca ")) ) ) -
Comme il s'agit de suggestions et que çà m'amusait j'ai un peu plus abouti la routine donnée ci-dessus. L'utilisateur choisit la couleur pour les interférences, des sélectionner certains blocs à l'écran ou tous (Enter, clic droit). Si plusieurs régions sont génèrées par la décomposition du bloc elles sont unies en une seule. ;;; INTERFERE_BLOC -Gilles Chanteau- 17/06/06 ;;; Crée une région de la couleur choisie sur les interférences des blocs sélectionnés ;; Création de la région d'intersection entre deux blocs (defun inters_reg (lst / ModSp) (setq ModSp (vla-get-ModelSpace AcDoc)) ;; Transforme la liste (bloc1 bloc2) ;; en liste ((composants1 . region1) (composants2 . region2)) (setq lst (mapcar '(lambda (x / ent reg) ;; création de la (ou des) région(s) (setq ent (vla-explode x) ;_ composants du bloc reg (vl-catch-all-apply 'vla-addRegion (list ModSp ent) ) ) (if (vl-catch-all-error-p reg) (cons ent "err") (progn (setq reg (vlax-safearray->list ;_ liste des régions créées (vlax-variant-value reg ) ) ) ;; union des régions (while (cadr reg) (vla-boolean (car reg) acUnion (cadr reg) ) (setq reg (cons (car reg) (cddr reg))) ) ;; paire pointée (composants . region) (cons ent (car reg)) ) ) ) lst ) ) ;; suppression des composants des blocs décomposés (mapcar '(lambda (x) (mapcar 'vla-delete (vlax-safearray->list (vlax-variant-value x) ) ) ) (mapcar 'car lst) ) ;; intersection des deux régions et mise en couleur (cond ((and (/= (cdar lst) "err") (/= (cdadr lst) "err")) (vla-boolean (cdar lst) acIntersection (cdadr lst)) (vla-put-color (cdar lst) col) ) ;; suppression des régions "solitaires" ((/= (cdar lst) "err") (vla-delete (cdar lst))) ((/= (cdadr lst) "err") (vla-delete (cdadr lst))) ) ) ;; Fonction principale (defun c:interfere_bloc (/ AcDoc col ss lst n) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-StartUndoMark AcDoc) ;; Choix de la couleur (prompt "\nSélectionnez la couleur pour les interférences.") (while (not (setq col (acad_colordlg (cond ((= (getvar "CECOLOR") "BYLAYER") 256) ((= (getvar "CECOLOR") "BYBLOCK") 0) (T (getvar "CECOLOR")) ) ) ) ) ) ;; Sélection des blocs (prompt "\nSélectionnez les blocs à traiter ou : ") (if (not (setq ss (ssget '((0 . "INSERT"))))) (setq ss (ssget "_X" '((0 . "INSERT")))) ) ;; liste des blocs sélectionnés (if ss (repeat (setq n (sslength ss)) (setq lst (cons (vlax-ename->vla-object (ssname ss (setq n (1- n)))) lst ) ) ) ) ;; Boucle pour rechercher les intersections entre chacun des blocs ;; et chaque bloc placé après lui dans la liste (while (cadr lst) (repeat (setq n (1- (length lst))) (inters_reg (list (car lst) (nth n lst))) (setq n (1- n)) ) (setq lst (cdr lst)) ) (vla-EndUndoMark AcDoc) (princ) )[Edité le 15/6/2006 par (gile)] [Edité le 17/6/2006 par (gile)]
-
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
-
Un LISP qui semble marcher. Il crée une région (rouge, mais on peut changer) aux intersections de tous les blocs insérés dans le dessin (on peut aussi ajouter des filtres pour les blocs) (defun inters_reg (bloc1 bloc2 / ModSp reg1 reg2 ent1 ent2) (setq ModSp (vla-get-ModelSpace AcDoc)) (setq reg1 (car (vlax-safearray->list (vlax-variant-value (vla-addRegion ModSp (setq ent1 (vla-explode bloc1)) ) ) ) ) ) (mapcar 'vla-delete (vlax-safearray->list (vlax-variant-value ent1) ) ) (setq reg2 (car (vlax-safearray->list (vlax-variant-value (vla-addRegion ModSp (setq ent2 (vla-explode bloc2)) ) ) ) ) ) (mapcar 'vla-delete (vlax-safearray->list (vlax-variant-value ent2) ) ) (vla-boolean reg2 acIntersection reg1) (vla-put-color (vlax-ename->vla-object (entlast)) 1) ) (defun c:inters_bloc (/ AcDoc ss lst n) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-StartUndoMark AcDoc) (setq ss (ssget "_X" '((0 . "INSERT")))) (if ss (repeat (setq n (sslength ss)) (setq lst (cons (vlax-ename->vla-object (ssname ss (setq n (1- n)))) lst ) ) ) ) (while (cadr lst) (repeat (setq n (1- (length lst))) (inters_reg (car lst) (nth n lst)) (setq n (1- n)) ) (setq lst (cdr lst)) ) (princ) )
-
Une petite idée avec le booléennes, à faire au fur et à mesure de l'insertion (premier et deuxième puis deuxième et troisième ...) Je la donne en vlisp : Transformer les blocs en régions (il faut qu'ils ne soient composés que de lignes, arcs circulaires ou elliptiques, lwpolylignes, splines) : (setq reg1 (car (vlax-safearray->list (vlax-variant-value (vla-addRegion (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) (vla-explode bloc1) ) ) ) ) ) (setq reg2 (car (vlax-safearray->list (vlax-variant-value (vla-addRegion (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) (vla-explode bloc2) ) ) ) ) ) Et on récupère l'intersection, si elle existe, par la booléenne intersection : (vla-boolean reg1 acIntersection reg2)
-
Et non, les points retournés par IntersectWith correspondent à l'intersection des "bounding box" des blocs, pas à l'intersection des entités qi les composent. C'était et non, pour gile, mais c'est et oui, pour nazemrap qui m'a coiffé au poteau ;) [Edité le 13/6/2006 par (gile)]
-
En Vlisp (vlax-safearray>list (vlax-variant-value (vla-IntersectWith bloc1 bloc2 acExtendNone))) retourne la liste des coordonnées des entre les deux objets points d'intersection. Je crois qu'en VBA c'est IntersectWith Method. À partir une liste de tous les blocs insérés, je ferais une boucle pour tester le premier de la liste successivement avec tous les autres, marquerais les points d'intersection, puis le supprimerais de la liste et recommencerais avec le suivant, et anisi de suite jusquà la fin de la liste. C'est peut-être un peu "lispien" cette façon de faire avec les listes, je ne connais pas le VBA.
-
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:
-
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)
-
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
-
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)]
-
Je suis en train de m'apercevoir que la gestion en programmation des blocs, xrefs, rasters et toutes leurs possibles imbrications n'est pas une chose "simple", ou alors, c'est que je m'y prends mal. Je modifie raster_purge, les images insérées dans des blocs ne sont plus purgées même s'il n'y a pas de référence de l'image dans le dessin. Pour l'autre erreur, je ne vois pas, si tu pouvais me décrire un peu les circonstances, voir si elle intervient dans raster_purge, xref_purge ou uniquement dans spurge. Je pense ouvrir un nouveau fil, celui-ci devient trop long ... [Edité le 13/6/2006 par (gile)]
-
Encore une faille détectée (et réparée, j'espère) la présence de blocs anonymes dans les xrefs À partir de maintenant, le vais mettre des numéros de versions afin qu'on puisse se retrouver dans ce dédale de corrections Celle-ci sera la version 1.0 (même si c'est loin d'être la première !)
-
J'ai (encore) corrigé SPURGE, les xrefs et rasters non référencés sont purgés avant de lancer la boucle qui purge tout tant qu'il reste des définitions des "sous-blocs" des blocs imbriqués purgés. Il me semble que c'est cette partie du code qui posait problème avec les xrefs et les blocs éventuellement contenus dans ces xrefs. Merci encore aux testeurs pour leur patience.
-
Merci, À cause d'une confusion, ce long fil a débouché sur 2 types de routines, un qui, il me semblait, t'intéressait : purge_xref et purge_raster qui détachent les xrefs ou les images raster introuvables (dont le chemin n'est plus valide L'autre qui voulait répondre à la demande de Fraid : xref_purge et raster_purge qui purgent les xrefs ou les images non référencées (dont plus aucune référence n'est insérée dans le dessin mais qui subsistent dans les collection ou dictionnaire), ce sont ces deux dernières qui sont appelées automatiquement dans spurge Je reconnais que les noms des routines prètent à confusion, mais je ne comprends pas tout aux test que tu as fait. Je verrai çà demain au calme. Merci encore.
