Aller au contenu

[Résolu] Détacher automatique les Xrefs sur plusieurs fichiers


Messages recommandés

Posté(e)

Salut à tous !

 

J'ai environ 50 fichiers dans un dossier dont beaucoup on des xrefs attachées, et d'autres non.

Je souhaiterai faire un script pour ouvrir les fichiers, détacher toutes les xrefs, et le fermer après l'avoir sauvegardé.

 

J'ai essayé sur SuperAutoScript (SAS) de faire un script

-xref T *

Mais cela ne fonctionne que sur le premier fichier, et ça le ferme sans le sauvegarder, même avec l'option "enregistrer le fichier à la fin du script" coché dans les options.

J'ai essayé en faisant

-xref T * _qsave

mais cela ne fonctionne pas, autoscript plante.

 

Une idée ... ?

 

Merci !

 

PS : Excellente année 2019 à tous !

AutoCAD Map 3D 2025
Covadis 18.3c + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Merci pour vos réponses ULTRA rapides !

 

Alors en effet il y avait un problème dans le cas ou il n'y avait pas de modification sur un fichier.

 

Ceci fonctionne :

-xref T * _qsave -pan 0,0,0 0,1,0 zoom et

(j'ai rajouté un zoom étendu)

 

Cependant, je ne comprend pas pourquoi, mais si _qsave est à la fin ça ne fonctionne pas ...

AutoCAD Map 3D 2025
Covadis 18.3c + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Oui je sais, mais ça ne fonctionne pas.

SAS dit que les fichiers sont bien traités, mais ils ne sont pas enregistrés (oui la case est bien cochée !).

AutoCAD Map 3D 2025
Covadis 18.3c + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

J'utilise AutoCAD MAP 3D 2019 à jour (AutoCAD 2019.1.2).

Pour les fichiers :

https://we.tl/t-engfUl97T3

En gros, si je met des Xrefs dans le deuxième fichier (et rien dans le premier), ça retourne les problèmes cités précédemment.

(de plus sur SAS (en Standalone) la case "Enregistrer le fichier à la fin du script" se décoche toute seule parfois ...)

AutoCAD Map 3D 2025
Covadis 18.3c + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

hello

sinon ya un lisp qui fait bien le boulot... d'ailleurs il détache aussi les images, les pdf.... bref, il met le fichier à nu :

(defun C:Detachall (/			      *error*
	    mip:layer-status-restore  mip:layer-status-save
	    delete-xref-img-underlay  delete-all-dict
	   )
 (defun *error* (msg)
   (mip:layer-status-restore)
   (princ msg)
   (princ)
 ) ;_ end of defun
 (defun mip:layer-status-restore ()
   (foreach item *PD_LAYER_LST*
     (if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
  '(lambda ()
     (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
     (vla-put-freeze
       (car item)
       (cdr (assoc "freeze" (cdr item)))
     ) ;_ end of vla-put-freeze
   ) ;_ end of lambda
) ;_ end of vl-catch-all-apply
     ) ;_ end of if
   ) ;_ end of foreach
   (setq *PD_LAYER_LST* nil)
 ) ;_ end of defun

 (defun mip:layer-status-save ()
   (setq *PD_LAYER_LST* nil)
   (vlax-for item (vla-get-layers
	     (vla-get-activedocument (vlax-get-acad-object))
	   ) ;_ end of vla-get-layers
     (setq *PD_LAYER_LST*
     (cons (list item
		 (cons "freeze" (vla-get-freeze item))
		 (cons "lock" (vla-get-lock item))
	   ) ;_ end of cons
	   *PD_LAYER_LST*
     ) ;_ end of cons
     ) ;_ end of setq
     (vla-put-lock item :vlax-false)
     (if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply
  '(lambda () (vla-put-freeze item :vlax-false))
) ;_ end of vl-catch-all-apply
     ) ;_ end of if
   ) ;_ end of vlax-for
 ) ;_ end of defun

 (defun delete-xref-img-underlay (/ count txt)
   (mip:layer-status-save)
   (vlax-for Blk (vla-get-Blocks
	    (vla-get-activedocument (vlax-get-acad-object))
	  ) ;_ end of vla-get-Blocks
     (if (and (= (vla-get-IsXref Blk) :vlax-false)
       (not (wcmatch (vla-get-name Blk) "*|*"))
  ) ;_ end of and
(progn
  (setq	count 0
	txt   (strcat " Erase Xref and Underlay in "
		      (vla-get-name Blk)
	      ) ;_ end of strcat
  ) ;_ end of setq
  (grtext -1 txt)
  (vlax-for Obj	Blk
    (setq count (1+ count))
    (if	(zerop (rem count 10))
      (grtext -1 (strcat txt " : " (itoa count)))
    ) ;_ end of if
    (if
      (and (vlax-write-enabled-p Obj)
	   (or
	     (and ;_ XREF
	       (= (vla-get-ObjectName obj) "AcDbBlockReference")
	       (vlax-property-available-p Obj "Path")
	     ) ;_ end of and
	     (and ;_ UNDERLAY
	       (wcmatch (vla-get-ObjectName obj) "*Reference")
	       (vlax-property-available-p Obj "UnderlayName")
	     ) ;_ end of and
	     (= (vla-get-ObjectName obj) "AcDbRasterImage") ;_ IMAGE
	   ) ;_ end of or
      ) ;_ end of and
       (VL-CATCH-ALL-APPLY 'vla-Delete (list Obj))
    ) ;_ end of if
  ) ;_ end of vlax-for
) ;_ end of progn
     ) ;_ end of if
   ) ;_ end of vlax-for
   (mip:layer-status-restore)
 ) ;_ end of defun
 (defun delete-all-dict (dict)
;;; dict - dict name (like "ACAD_IMAGE_DICT", "ACAD_PDFDEFINITIONS" ... )
   (vl-catch-all-apply
     '(lambda ()
 (vlax-map-Collection
   (vla-item
     (vla-get-dictionaries
       (vla-get-activedocument (vlax-get-acad-object))
     ) ;_ end of vla-get-dictionaries
     dict ;_ "ACAD_IMAGE_DICT"
   ) ;_ end of vla-Item
   'vla-delete
 ) ;_ end of vlax-map-Collection
      ) ;_ end of lambda
   ) ;_ end of vl-catch-all-apply
 ) ;_ end of defun

 (vl-load-com)
 (delete-xref-img-underlay)
 (command "_-xref" "_d" "*")
 (while (> (getvar "CMDACTIVE") 0) (command))
 (mapcar 'delete-all-dict
  (list	"ACAD_IMAGE_DICT"
	"ACAD_PDFDEFINITIONS"
	"ACAD_DWFDEFINITIONS"
	"ACAD_DGNDEFINITIONS"
  ) ;_ end of list
 ) ;_ end of mapcar
 (princ)
) ;_ end of defun

++

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

Merci pour vos compléments de réponse :)

 

J'ai pu faire ce que je souhaitais grâce à vous !

AutoCAD Map 3D 2025
Covadis 18.3c + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité