Aller au contenu

[Autocad 2021] Eloge de la lenteur...


GEGEMATIC

Messages recommandés

Salut,

nous sommes régulièrement confrontés à des ralentissements incroyables et malheureusement souvent inexpliqués.

Là, ce coup ci, on en a trouvé un bizarre, mais on a un début d'explication.

Sur une station Zbook toute neuve est plutôt musclée, je constate que dans un dessin, sélectionner un bloc peut prendre jusqu’à 25 secondes !

mais sélectionner un autre objet est instantané !

Certains de nos ralentissement sont liés à des association map/ civil/Covadis, nous l'avons désactivé, et nous n'avons trouvé aucune différence: Covadis n'y est pour rien.

Comme nos portables sont configurés avec mode hors connexion (centre de synchronisation windows), nous avons essayé de débrancher le câble réseau, et là miracle, plus de ralentissement.

On rebranche: Ralentissement immédiat.

Tout notre réseau passe par un sonicwall soho 256 -> 256 est peut être insuffisant pour Autocad 2021 ?

Sur une station fixe, ou le centre mode hors connexion n'est pas utilisé, et qui travaille obligatoirement en ligne, le ralentissement existe aussi, mais il est bien moindre, 1 à 2s, et il n'est sensible que lors du 1er clic sur un type de bloc. Il disparait sur les suivants.

Moralité, le problème vient du travail depuis le réseau, et il est gravement amplifié par l'utilisation du mode hors connexion.

A savoir que nous n'avions pas ce problème avec les 2015, 2016, 2018 et 2020 que nous avons utilisé ces dernières années.

Ce qui est pratique, avec le mode hors connexion, c'est qu'il suffit de passer en mode "travailler hors connexion" pour retrouver de la vitesse, tout en conservant l'accès à Internet, aux e-mails, et à Covadis.

Quelques liens qui en parlent, surtout le 1er qui vient d'Autodesk:

https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/AutoCAD-performs-slow-when-working-on-networked-drawings.html

https://www.reddit.com/r/AutoCAD/comments/d8x54j/network_files_are_slow/

https://forums.augi.com/showthread.php?173125-AutoCAD-extremely-sluggish-when-WiFi-is-enabled

https://www.cadtutor.net/forum/topic/62701-autocad-slow-could-it-be-caused-by-network-speed/

a+
gégé

 

 

 

 

  • Like 1
  • Upvote 2

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Chez nous, après avoir espionné l'activité débile d'Autocad, qui explique le phénomène,

c'est que l'immense Autocad cherche les xref et les images non trouvées inlassablement sur tout les emplacements du Path!

Sans arrêt, pas seulement à l'ouverture du dessin !

Pendant les 23 secondes de latence, c'est 74000 requêtes sur les répertoires du path !

la solution, virer ces xref ? Oui ben essayez pour voir quand ce sont des xref et image imbriquées partout ...

Quand on travaille sur une affaire en collaboration généralisée, avec 10 images de partenaires par cartouche, que toutes vos xref cherchent ces 10 images ...

Infaisable.

comment un tel dysfonctionnement peut perdurer ?

Comment Autodesk ose, en 2023, recommander à ses utilisateurs de travailler avec un copie locale sur le bureau, puis de la recopier, au lieu de corriger ce bug ?

Travailler en local ! en 2023 ! avec un logiciel à 2500€ par an !

les bras m'en tombent.

a+

gégé très énervé.

 

 

  • Upvote 3

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

Tiens, je venais justement sur Cadxp pour un problème de lenteur ...

150 % du même avis que toi GEGEMATIC.

Et même si je ne connaissais pas ce cas précis de bug de lenteur.

Autodesk, comme surement d'autres éditeurs de logiciels, sont les rois du monde.

Ils sont tellement devenus indispensables qu'il n'y a rien à faire. Ou alors il faut peut-être changer d'angle de vue. On est en 2023, mais on travaille comme des mécaniciens des années 1940, où l'idée que je m'en fais : connaître les combines, les astuces, les réglages qui permettent que ton bourrin fonctionne correctement, car sorti d'usine c'est au petit bonheur la chance.

1) Et même avec ça, par exemple, est-ce-qu'on a trouvé une solution pour le bug de lenteur de la fenêtre de propriétés ?

Bug qui date de quelques années seulement et qui mets dans les choux Autocad dès que l'on sélectionne une grande quantité d'objets avec cette fenêtre ouverte.

2) Et le purger r (non inclus dans Purger Tout) ? Je rencontre encore des affaires entières de plusieurs Go de dwg polluées qui pèsent 2,3,4 fois voire plus, leur poids normal.

Quand c'est un fichier de 800 ko qui pourraient faire 200 ko, pas de sujet et encore, on sait bien qu'un fichier dwg ne vient pas tout seul.

Lorsque c'est 80 Go qui pourraient faire 20 Go, ça commence à faire. Et avec des fichiers avec 20, 30 ou 40 xrefs, ça engendre de grosses lourdeurs.

3) Mais ça leur donne du boulot à Autodesk. Comme tant d'autres, j'utilise le 3D depuis 20 ans. Mais pour qu'il soit exploitable par tous, il a fallu créer un nouveau format (le BIM) pour qu'il soit facilement manipulable. Et oui sur Autocad, si tu veux bouger un ensemble de MNT, de solides, etc ... faut pas être pressé.

Bon, ça fait travailler les gens, ça nous occupe. C'est peut-être le principal, l'argent circule.

Tchuss.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Le 03/04/2023 à 13:57, GEGEMATIC a dit :

Chez nous, après avoir espionné l'activité débile d'Autocad, qui explique le phénomène,

c'est que l'immense Autocad cherche les xref et les images non trouvées inlassablement sur tout les emplacements du Path!

Sans arrêt, pas seulement à l'ouverture du dessin !

Pendant les 23 secondes de latence, c'est 74000 requêtes sur les répertoires du path !

la solution, virer ces xref ? Oui ben essayez pour voir quand ce sont des xref et image imbriquées partout ...

Quand on travaille sur une affaire en collaboration généralisée, avec 10 images de partenaires par cartouche, que toutes vos xref cherchent ces 10 images ...

Infaisable.

comment un tel dysfonctionnement peut perdurer ?

Comment Autodesk ose, en 2023, recommander à ses utilisateurs de travailler avec un copie locale sur le bureau, puis de la recopier, au lieu de corriger ce bug ?

Travailler en local ! en 2023 ! avec un logiciel à 2500€ par an !

les bras m'en tombent.

a+

gégé très énervé.

 

 

Hello,

Comment as-tu fait pour "osculter" Autocad pendant les 23 secondes de latence ? Et donc savoir ce qu'il faisait pendant ce temps.

Slts.

Sylvain

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Merci pour vos messages de soutien !

Concernant cette source de lenteur enfin identifiée, la méthode d'investigation est assez lente et pénible, car affiner l'usage du moniteur de ressources consomme beaucoup de ressources !

Et au bout d'un moment le sytème devient tellement lent qu' AutoCAD n'arrive même plus à lire le clavier ...

Donc il faut recommencer à zéro.

Pour l'instant on a vu:

- la recherche continuelle des images et xref non résolues.

- La recherche continuelle de polices non trouvées

- Spécifique à MAP :

  •  la lecture  continuelle des systèmes de coordonnées
  •  la lecture  continuelle de la stylisation FDO

- pour tous les répertoires du PATH : 

Une série de CloseFile, CreateFile  QueryBasicInformationFile 

Et ça tourne en rond, sans arrêt !

Donc si comme chez nous, on a tous les paramètres communs sur le réseau, vous voyez le bordel !

Mais les résultats ne semblent pas toujours reproductibles, et ça je ne comprends pourquoi.

 

A suivre ...

 

 

 

  • Upvote 1

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

il y a 16 minutes, Syl2007 a dit :

Hello,

Comment as-tu fait pour "osculter" Autocad pendant les 23 secondes de latence ? Et donc savoir ce qu'il faisait pendant ce temps.

Slts.

Sylvain

Justement, C'est très difficile ! Mais ça a été rendu possible par le ralentissement général du système, car 23 secondes, c'est grâce à se ralentissement du au monteur, sinon c'est 3/4 secondes.

Il faut filtrer sur AutoCAD.exe, filtrer sur le le réseau, faire un clear, noter l'heure à la seconde près,

lancer sa commande Autocad, noter l'heure de fin, et regarder les evenements qui se sont produits.

 

  • Like 2
  • Upvote 1

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Pour virer ces xref et images non valide, je suis à la recherche de routines en dbx, car le gestionnaire de Xref ne permet que de changer leur chemin.

Moi je veux les virer, si on ne me les a pas données, c'est que j'en ai pas besoin.

j'ai déjà ces éléments là, en dbx :

;;***********************************************************************************
;;§/dbx/Changer toutes les xref d'un dessin de type attaché via dbx /none

(defun c:DbxAllXrefAttached ()

 (setq dbx (pw_open_dwg_dbx (setq dess (getfiled "dwg pour passer en xref de type attaché par dbx" "" "dwg" 0))))
 (setq blocks (vla-get-blocks dbx))
 (vlax-for oB blocks
  (if (= (vla-get-isXref oB) :vlax-true)
   (setpropertyvalue (vlax-vla-object->ename oB) "IsFromOverlayReference" 0)
  )
 )
 ;;(setq dess (strcat (car dess) (cadr dess) "-Attached.dwg"))
 (vla-saveAs Dbx dess)
 ;;(vla-save Dbx);_ca ne marche pas, je ne sais pas pourquoi

 (vlax-release-object Dbx)
)
;;***********************************************************************************
;;§/dbx/Changer toutes les xref d'un dessin de type superposées via dbx /none

(defun c:DbxAllXrefOverlay ()

 (setq dbx (pw_open_dwg_dbx (setq dess (getfiled "dwg pour passer en xref de type attaché par dbx" "" "dwg" 0))))
 (setq blocks (vla-get-blocks dbx))
 (vlax-for oB blocks
  (if (= (vla-get-isXref oB) :vlax-true)
   (setpropertyvalue (vlax-vla-object->ename oB) "IsFromOverlayReference" 1)
  )
 )
 ;;(setq dess (strcat (car dess) (cadr dess) "-Overlay.dwg"))
 (vla-saveAs Dbx dess)
 ;;(vla-save Dbx);_ca ne marche pas, je ne sais pas pourquoi

 (vlax-release-object Dbx)
)
;;***********************************************************************************
;;§/dbx/Ouvrir un fichier dwg externe via objetcDbx/dwg
;;De patrick 35
;;http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=13402#pid
;;(setq Dbx (pw_open_dwg_dbx "c:/test.dwg"))
;;(setq Dbx (pw_open_dwg_dbx (getfiled "dwg pour dbx" "" "dwg" 0)))

(defun pw_open_dwg_dbx (dwg / dbx)
  (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
    (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument"))
    (setq dbx (vlax-create-object
		(strcat	"ObjectDBX.AxDbDocument."
			(substr (getvar "ACADVER") 1 2)
		)
	      )
    )
  )
  (vla-open dbx dwg)
  dbx
)

et d'autres qui ne le sont pas, mais qui seraient très utiles en Dbx:

;********************************************************************************
;§/xref/pour détacher toutes les Xrefs dont le chemin n'est pas valide/none
;;idée originale : Gile

(defun c:detach_nonvalides ()
  (if (not xref-lst)
    (3listes_xref)
  )

  (mapcar '(lambda (x)
	     (setq path (vla-get-Path (vla-item (vla-get-blocks acdoc) x)))
	     (if (not (open path "r"))
	       (vla-detach (vla-item (vla-get-Blocks AcDoc) x))
	     )
	   )
	  xref-lst
  )
)
;****************************************************************************
;§/xref/Détache les images non résolues (pas finit) /none

(defun c:DetachUnresolvedImage ( / l chem lnom)
  (foreach l (pw_list_eimagedef)
   (if (not (findfile (setq chem (cdr (assoc 1 (entget l ))))))
    (progn
      (setq nom (vl-filename-base chem)
	    lnom (cons nom lnom))
;;;     (print chem)
;;;     (prompt  "\nUnresolved: la fonction n'est pas finie !")
     )
    )
  )
  (if lnom
   (progn
    (print (setq lnom (pw_ch_de_lst lnom ",")))
    (command "-image" "_d" lnom)
   )
  )
 )
 
;;********************************************************************************
;§/xref/Pour récupérer les "noms" (vla-get-name) des Xrefs dans 3 listes/none
;;;xref-lst : les noms de toutes les Xrefs du dessin
;;;xref-lst1 : les noms des Xrefs "parents" (pouvant en contenir d'autres) avec la listes des xrefs filles (contenues par)
;;;xref-lst2 : les noms des Xrefs imbriquées dans les Xrefs de xref-lst1 ou dans celles de xref-lst2
;;;(imbrication double ou triple ou plus...), les Xrefs les plus "profondément imbriquées" se trouvant en fin de liste.
;;idée originale par giles
;;post original:
;;http://cadxp.com/topic/10043-detacher-xrefs-imbriques-et-ref-croisees/

;; AcDoc : pointeur vers le document actif
;; ss : sélection de tous les blocs et Xrefs insérés sur les calques dévérouillés

;;le 27 11 2018: Ne semble plus marcher avec les références imbriquées

(defun 3listes_xref ()
  (setq	AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
	ss    (ssget "_X" '((0 . "INSERT")))
  )

  ;; On parcourt le jeu de sélection pour constituer une liste (xref-lst)
  ;; avec seulement les noms des Xrefs

  (if ss
    (progn
      (repeat (setq n (sslength ss))
	(setq
	  obj (vlax-ename->vla-object (ssname ss (setq n (1- n))))
	)
	(if
	  (and
	    (not (member (vla-get-name obj) xref-lst)) ;_ éviter les doublons
	    (= :vlax-true ;_ uniquement les Xrefs
	       (vla-get-isXref
		 (vla-item (vla-get-Blocks AcDoc) (vla-get-Name obj))
	       )
	    )
	  )
	   (setq xref-lst
		  (cons
		    (vla-get-name obj)
		    xref-lst
		  )
	   )
	)
      )
;;;      (setq xref-lst1 xref-lst ;_ on conserve dans xref-lst1 les xref "parents"
;;;	    n_lst 0
;;;      )
      (setq xref-lst1 nil)
      (setq n_lst 0)

      ;; On parcourt la liste xref-lst et pour chaque Xref, on cherche si
      ;; dans ces composants il y a une (ou des) Xref. Si ces le cas,
      ;; elles sont rajoutées en fin de liste et seront traitées à leur tour.

      (while (setq name (nth n_lst xref-lst))
	(setq bloc (vla-item (vla-get-blocks acDoc) name))
	(repeat	(setq n (vla-get-count bloc)) ;_ nombre de composant du bloc (Xref)
	  (setq ent (vla-item bloc (setq n (1- n))))
	  (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference") ;_ si le composant est un bloc
;;;		   (not (member (vla-get-name ent) xref-lst)) ;_ s'il n'est pas déjà dans la liste
		   (= :vlax-true ;_ si c'est une Xref
		      (vla-get-isXref
			(vla-item (vla-get-Blocks AcDoc)
				  (vla-get-Name ent)
			)
		      )
		   )
	      ) ;_#and
	    (progn
	      (if (not (member (vla-get-name ent) xref-lst)) ;_ s'il n'est pas déjà dans la liste

		(setq
		  xref-lst (reverse (cons (vla-get-Name ent)
					  (reverse xref-lst)
				    )
			   ) ;_ la Xref est ajoutée en fin de liste
		)
	      )
	      ;;dans tous les cas, cette référence conient d'autre référence:
	      (if (setq tmp (assoc name xref-lst1)) ;_ s'il est déjà dans la liste des références parentes
		(setq
		  xref-lst1 (subst (append tmp (list (vla-get-Name ent))) tmp (cons name xref-lst1)) 
		)
		(setq
		  xref-lst1 (reverse (cons (list  name (vla-get-Name ent)) (reverse xref-lst1))) ;_ la Xref est ajoutée en fin de liste
		)
	      )
	    )

	  ) ;_#if
	)

	(setq n_lst (1+ n_lst))
      )
    )
    
  )


  ;; Constitution de xref-lst2 : xref-lst moins les éléments parents contenus dans xref-lst1
  
  (setq	xref-lst2
	 (vl-remove-if '(lambda (x) (member x (mapcar 'car xref-lst1))) xref-lst)
  )
  (prompt "\nXref du dessin:")
  (mapcar 'print xref-lst)
  (prompt "\nXref parentes du dessin est leurs sous xref:")
  (foreach l xref-lst1
    (prompt (strcat "\nParent : " (car l)))
    (prompt "\n		Fils :	 " )
    (foreach ll (cdr l)
      (prompt (strcat "\n		 	 " ll))
      )
    )
  (princ)
)


;***********************************************************************
;;§/listes/regroupe des listes d'association par code d'association/ none
;;ex :(regroup_assoc '((a 2)(a 3)(b 1)(a 4)(b 2))) -> '((A 2 3 4) (B 1 2))
;;ne marche que pour une profondeur à 2 niveaux
;;implémenté pour les paires pointées


(defun pw_regroup_assoc ( lassoc / res l tmp nl cd pairpoint)
  (foreach l lassoc
    (setq pairpoint (pw_estpairpoint l))
    ;;si déja répertorié
    (if (setq tmp (assoc (setq cd (car l)) res))
      (progn
	(if pairpoint
	 (setq nl (append tmp (list (cdr l))))
	 (setq nl (append tmp (list (cadr l))))
	)
	(setq res (subst nl tmp res))
      )
      (if pairpoint
	(setq res (cons (list (car l)(cdr l)) res))
	(setq res (cons l res))
      )
     )
    )
  (reverse res)
)
; *****************************************************************************
;§/dxf/ retourne une liste classée des ename d'IMAGEDEF présentes dans le dessin /none

(defun pw_list_eimagedef (  / tmp )
 (setq tmp (dictsearch (namedobjdict) "ACAD_IMAGE_DICT"))
 (cdr (assoc 350 (pw_regroup_assoc tmp)))
 
)

; ****************************************************************************
;;§/xref/liste les fichiers avec répertoire des xrefs non résolues du dessin/none
;;;(pw_listUnResolvedXref) -> ("E:\\ACLSP\\dwg14\\SIAV\\DCE\\calque_covadis.dwg")
;;;Drapeaux par type de bloc (valeurs binaires pouvant être combinées) :
;;;0 = indique qu'aucun des drapeaux suivants ne s'applique
;;;1 = bloc anonyme généré par hachure, cotation associative, d'autres opérations internes ou une application
;;;2 = ce bloc a des définitions d'attribut non constantes (ce bit n'est pas défini dans le cas contraire ou si le bloc n'a aucune définition d'attribut)
;;;4 = ce bloc est une référence externe (xréf)
;;;8 = ce bloc est un recouvrement de référence externe : ce qui veut dire superposé (sinon attaché bit = 0)
;;;16 = ce bloc a des dépendances externes : j'ai fait le test, ce bit n'est pas activé quand il devrait l'être en théorie
;;;32 = référence externe résolue ou dépendant d'une référence externe (bit ignoré à la saisie):ne permet pas de différencier une reference déchargée d'une introuvable
;;;64 = cette définition est une référence externe référencée (bit ignoré à la saisie)
 
(defun pw_listUnResolvedXref ( / XrefInfo CurrBlock XrefInfo Rewind Flags)
  (setq temp nil)					
  (setq XrefInfo (list))
  (setq Rewind t)
  (while (setq CurrBlock (tblnext "block" Rewind))
    (setq Rewind nil)
    (setq Flags (cdr (assoc 70 CurrBlock)))
    ;;(print  (cdr (assoc 2 CurrBlock)))(princ  " ")(princ  flags)
    ;;(eq 4 (logand 4 (cdr (assoc 70 d))))
    (if (and	(pw_multimember '(4  ) (pw_l_flag flags));_ that means that this block is a REFERENCED xref
		(not (eq 32 (logand 32 flags))));_introuvable ou déchargée
      (if (=  "TEXT" (cdr (assoc 0 (entget (cdr (assoc -2 CurrBlock))))));_text pour unresolved, ENDBLK pour unloaded
      (progn
	(setq temp (cons CurrBlock temp))
	
	(setq NewXref
	      (cdr (assoc 1 CurrBlock))	
	)				
	(setq XrefInfo (cons NewXref XrefInfo))
      );_progn
      )
    )					
  )					
  XrefInfo
)				

; ****************************************************************************
;;§/xref/liste le nom des xrefs non résolues du dessin/none
;;;(pw_listUnResolvedXref) -> ("E:\\ACLSP\\dwg14\\SIAV\\DCE\\calque_covadis.dwg")
;;;Drapeaux par type de bloc (valeurs binaires pouvant être combinées) :
;;;0 = indique qu'aucun des drapeaux suivants ne s'applique
;;;1 = bloc anonyme généré par hachure, cotation associative, d'autres opérations internes ou une application
;;;2 = ce bloc a des définitions d'attribut non constantes (ce bit n'est pas défini dans le cas contraire ou si le bloc n'a aucune définition d'attribut)
;;;4 = ce bloc est une référence externe (xréf)
;;;8 = ce bloc est un recouvrement de référence externe : ce qui veut dire superposé (sinon attaché bit = 0)
;;;16 = ce bloc a des dépendances externes : j'ai fait le test, ce bit n'est pas activé quand il devrait l'être en théorie
;;;32 = référence externe résolue ou dépendant d'une référence externe (bit ignoré à la saisie):ne permet pas de différencier une reference déchargée d'une introuvable
;;;64 = cette définition est une référence externe référencée (bit ignoré à la saisie)
 
(defun pw_listUnResolvedXrefName ( / XrefInfo CurrBlock XrefInfo Rewind Flags)
  (setq temp nil)					
  (setq XrefInfo (list))
  (setq Rewind t)
  (while (setq CurrBlock (tblnext "block" Rewind))
    (setq Rewind nil)
    (setq Flags (cdr (assoc 70 CurrBlock)))
    ;;(print  (cdr (assoc 2 CurrBlock)))(princ  " ")(princ  flags)
    ;;(eq 4 (logand 4 (cdr (assoc 70 d))))
    (if (and	(pw_multimember '(4  ) (pw_l_flag flags));_ that means that this block is a REFERENCED xref
		(not (eq 32 (logand 32 flags))));_introuvable ou déchargée
      (if (=  "TEXT" (cdr (assoc 0 (entget (cdr (assoc -2 CurrBlock))))));_text pour unresolved, ENDBLK pour unloaded
      (progn
	(setq temp (cons CurrBlock temp))
	
	(setq NewXref
	      (cdr (assoc 2 CurrBlock))	
	)				
	(setq XrefInfo (cons NewXref XrefInfo))
      );_progn
      )
    )					
  )					
  XrefInfo
)	

 

  • Like 1

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

;;********************************************************************************
;§/blocs/crée un Script de purge et de suppression de dwg des xref du dessin /none

(defun c:script_purge_xref ( / f) ;/ fech fin 
  (setvar "cmdecho" 1)
  (setvar "highlight" 1)
  


   ;;(setq dir (PW_PICK_DIRECTORY  "Répertoire racine pour nettoyage de dessins" "e:\\"))
  
  
  (setq	lst-f 
  (PW_LISTRESOLVEDXREF)
	
	)

;;;(if (not gc-GetFolderDlg)
;;;    (command "_netload"
;;;	     (strcat aclsp-chem "DotNet/LispExtension/LispExtension.dll")
;;;    )
;;;  )
;;; (pw_bydefault "gc-chem" (pw_unslashit aclsp-chem))
;;;
;;;  (setq	lst-f (gc-getfiledlg
;;;		"Sélectionnez les fichiers  à traiter :"
;;;		gc-chem
;;;		"Fichier dwg (*.dwg)|*.dwg"
;;;		t
;;;	      )
;;;  )

  ;;(setq gc-chem (vl-filename-directory (car lst-f)))
  (setq gc-chem (getvar "dwgprefix"))
  ;(setq ldwg (vl-directory-files chem "*.dwg"))
     
  (setq g (open  (strcat gc-chem "redefdwg.scr") "w"))
   (foreach dxf lst-f
	(setq nblc (vl-filename-base dxf))
        (setq res (strcat gc-chem "\\" nblc ".dwg"))

	(write-line "_open" g)
	(write-line (pw_fab_chaine dxf) g);_pour les noms de fichier avec espace
	;;(write-line "(c:NA_DELETE_ALL_TABLE)" g)
        (write-line "_layer" g)
        (write-line "_set" g)	
        (write-line "0" g)	
        (write-line "" g)	
	(write-line "_purge" g)
        (write-line "_all" g)	
        (write-line "*" g)	
        (write-line "_no" g)
        (write-line "_zoom" g)	
        (write-line "_e" g)
;;;	(write-line "_zoom" g)
;;;	(write-line "_extent" g)
        (write-line "-image _detach *" g)
	(write-line "_qsave" g)
        (write-line "" g)
        (write-line "" g)
	(write-line "_close" g)	
      
    
  )
  (close g)
)

 

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Citation

Stp, tu fais comment un script ?

Il y a plein de façons différentes d'utiliser les script.

Gege t'en a montrée une.

Je vais essayé de faire un peu plus simple.

Tu crée un fichier texte que tu va appeler dtxref.scr

tu colle ceci dedans.

-xref
t
*
_qsave

Tu crée un fichier texte que tu va appeler dtxref.bat

cd C:\Data

for /f "delims=" %%f IN ('dir /b "*.dwg"') do "C:\\Program Files\\Autodesk\\AutoCAD 2015\\accoreconsole.exe" /i "%%f" /s dtxref.scr

Tu remplace la version autocad par la tienne.

et c:\Data par le chemin de ton dossier qui contient tes dwg.

.tu colle tes 2 fichiers dans ce dossier.

tu double clique sur le .bat 

et c'est parti

si tu veux traiter les sous-dossier il faut rajouter /s aprés dir

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

et si la console t'enerve, voici une fonction qui te lance le .bat comme il faut

 

; ANSI-Windows 1252
; Autolisp, Visual Lisp
;|
    run.lsp 1.0

    Using Windows command lines with Autolisp.

    (run file)
    
    Argument: file, String, name or full path .bat.
    
    Return: T or String, error message
    

    Tested on Windows 10 and Autocad 2015.
    
    first post : https://cadxp.com/topic/49596-lancer-un-bat-sans-la-fen%C3%AAtre-noire/
    No copyright: (!) 2021 by Frédéric Coulon.
    No license: Do with it what you want.
|;
;Dependencies
(vl-load-com)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun run (file / objWS ret)
    (setq ret T)
    ; Check the existence of the file. 
    (if (findfile file) 
        ; Check the raising of an exception.
        (if (vl-catch-all-error-p 
                (vl-catch-all-apply 'vlax-invoke-method 
                    (list
                        ; Creation of the object "WScript.Shell".
                        (setq objWS (vlax-get-or-create-object "WScript.Shell"))
                         "Run"           ; String, command line to execute.
                          file           ; String, file .bat
                          0              ; Int, 0 to 10, 0 -> Hides the window and activates another window.
                          :vlax-true     ; Boolean, Waits for the end before carrying out the continuation.
                    )
                )
            )   
            (setq ret "Invalid file")
            ; Release the object "WScript.Shell".
            (vlax-release-object objWS)
        )
      (setq ret "File not found")
    )
    ret
)

 

Lien vers le commentaire
Partager sur d’autres sites

Avec ton script,

je devrais pouvoir utiliser les commandes de Gile:

;;https://cadxp.com/topic/10147-super-purge/#elControls_51491_menu
;;https://cadxp.com/topic/19793-super-purge/#elControls_105516_menu

j'essaye et je vous dit

 

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

salut Fraid,

c'est un zéro pointé !

rien ne marche, même en ayant revu considérablement à la baisse mes ambitions:

Difficile de résumer tout ce qui ne marche pas, puisque rien ne marche, mais à chaque fois différemment.

1) Exactement selon ton procédé:

J'ai un répertoire avec 2 dessins, et les 2 fichiers nécessaires:

"X:\Users\Gerald\Documents\$accoreconsole\spurgec.scr"
"X:\Users\Gerald\Documents\$accoreconsole\spurgec.bat"

dans spurgec.scr:

(print "script")

On ne peut pas faire plus simple !

 

dans spurgec.bat

cd "X:\Users\Gerald\Documents\$accoreconsole"
for /f "delims=" %%f IN ('dir /s /b "*.dwg"') do "C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "%%f"  /s spurgec.scr

je lance spurgec.bat:
 

X:\Users\Gerald\Documents\$accoreconsole>cd "X:\Users\Gerald\Documents\$accoreconsole"

X:\Users\Gerald\Documents\$accoreconsole>for /F "delims=" %f IN ('dir /s /b "*.dwg"') do "C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "%f"  /s spurgec.scr

X:\Users\Gerald\Documents\$accoreconsole>"C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "X:\Users\Gerald\Documents\$accoreconsole\72010.01-PG G0701 Rev D-Bassin_Vue en plan.dwg"  /s spurgec.scr
Redirect stdout (file: C:\Users\Gerald\AppData\Local\Temp\accc189722).
AcCoreConsole: StdOutConsoleMode: processed-output: enabled,auto
AutoCAD Core Engine Console - Copyright 2020 Autodesk, Inc.  All rights reserved. (R.163.0.0)

Execution Path:
C:\Program Files\Autodesk\AutoCAD 2021\accoreconsole.exe

Version Number: R.163.0.0 (UNICODE)
Chargement de Base AEC...
Chargement des DLL de Modeler.
Résolu Xréf "Xref-Topo_Reveston-Sud": .\Xref-Topo_Reveston-Sud.dwg
[FORMES_CG06.SHX] n'a pas pu être localisé. rimer
"Xref-Topo_Reveston-Sud" chargé: X:\Users\Gerald\Documents\$accoreconsole\Xref-Topo_Reveston-Sud.dwg
Le fichier de référence "Xref-Topo_Reveston-Sud" a peut-être été modifié depuis le dernier enregistrement du dessin hôte.
Résolu Xréf "Xref - VEP tunnel de la Mescla et Reveston_A": Xref - VEP tunnel de la Mescla et Reveston_A.dwg
"Xref - VEP tunnel de la Mescla et Reveston_A.dwg" introuvable.
Résolu Xréf "LZ3_Export Recolement MESCLA": LZ3_Export Recolement MESCLA.dwg
"LZ3_Export Recolement MESCLA.dwg" introuvable.
Régénération du modèle.
**** Variable système modifiée ****
1 des variables système gérées a été modifiée par rapport à la valeur préférée. Utilisez la commande MONITEURVARSYS pour afficher les modifications.
Commande:
Commande:
"spurgec.scr": Impossible de trouver le fichier.
Commande:
Commande:
Commande inconnue "EXTERNALREFERENCES".  Appuyez sur F1 pour obtenir de l'aide.
Commande:
Commande: *Annuler*
Commande:
Commande: *Annuler*
Commande: _.quit

X:\Users\Gerald\Documents\$accoreconsole>"C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "X:\Users\Gerald\Documents\$accoreconsole\Xref-Topo_Reveston-Sud.dwg"  /s spurgec.scr
Redirect stdout (file: C:\Users\Gerald\AppData\Local\Temp\accc149562).
AcCoreConsole: StdOutConsoleMode: processed-output: enabled,auto
AutoCAD Core Engine Console - Copyright 2020 Autodesk, Inc.  All rights reserved. (R.163.0.0)

Execution Path:
C:\Program Files\Autodesk\AutoCAD 2021\accoreconsole.exe

Version Number: R.163.0.0 (UNICODE)
Chargement de Base AEC...
Régénération du modèle. xte peut ne pas s'imprimer
**** Variable système modifiée ****
1 des variables système gérées a été modifiée par rapport à la valeur préférée. Utilisez la commande MONITEURVARSYS pour afficher les modifications.
Commande:
Commande:
"spurgec.scr": Impossible de trouver le fichier.
Commande:
Commande:
Commande inconnue "EXTERNALREFERENCES".  Appuyez sur F1 pour obtenir de l'aide.
Commande:
Commande: *Annuler*
Commande:
Commande: *Annuler*
Commande: _.quit

2) Selon ce que j'avais prévu au début :

Script et bat dans un répertoire du path, "e:\aclsp\ini\"

"E:\ACLSP\INI\spurgeb.bat"
"E:\ACLSP\INI\spurgeb.scr"

dans spurgeb.bat:

for /f "delims=" %%f IN ('dir /b "*.dwg"') do "C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "%%f" /s "e:\aclsp\ini\spurgeb.scr" /p "Map Covadis"

Bien noter que dans ce cas, un profil est spécifié.

dans spurgeb.scr:

(print "script")

Toujours aussi simple !

je lance:

PS X:\Users\Gerald\Documents\$accoreconsole> spurgeb

X:\Users\Gerald\Documents\$accoreconsole>for /F "delims=" %f IN ('dir /b "*.dwg"') do "C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "%f" /s "e:\aclsp\ini\spurge.scr" /p "Map Covadis"

X:\Users\Gerald\Documents\$accoreconsole>"C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "72010.01-PG G0701 Rev D-Bassin_Vue en plan.dwg" /s "e:\aclsp\ini\spurge.scr" /p "Map Covadis"
Redirect stdout (file: C:\Users\Gerald\AppData\Local\Temp\accc149682).
AcCoreConsole: StdOutConsoleMode: processed-output: enabled,auto
AutoCAD Core Engine Console - Copyright 2020 Autodesk, Inc.  All rights reserved. (R.163.0.0)

Execution Path:
C:\Program Files\Autodesk\AutoCAD 2021\accoreconsole.exe

Version Number: R.163.0.0 (UNICODE)
Chargement de Base AEC...
Chargement des DLL de Modeler.
Résolu Xréf "Xref-Topo_Reveston-Sud": .\Xref-Topo_Reveston-Sud.dwg
[FORMES_CG06.SHX] n'a pas pu être localisé. rimer
"Xref-Topo_Reveston-Sud" chargé: X:\Users\Gerald\Documents\$accoreconsole\Xref-Topo_Reveston-Sud.dwg
Le fichier de référence "Xref-Topo_Reveston-Sud" a peut-être été modifié depuis le dernier enregistrement du dessin hôte.
Résolu Xréf "Xref - VEP tunnel de la Mescla et Reveston_A": Xref - VEP tunnel de la Mescla et Reveston_A.dwg
"Xref - VEP tunnel de la Mescla et Reveston_A.dwg" introuvable.
Résolu Xréf "LZ3_Export Recolement MESCLA": LZ3_Export Recolement MESCLA.dwg
"LZ3_Export Recolement MESCLA.dwg" introuvable.
Régénération du modèle.
**** Variable système modifiée ****
1 des variables système gérées a été modifiée par rapport à la valeur préférée. Utilisez la commande MONITEURVARSYS pour afficher les modifications.
Commande:
Commande: Chargement du fichier annulé: e:\aclsp\ini\spurge.scr
Commande:
Commande:
Commande inconnue "EXTERNALREFERENCES".  Appuyez sur F1 pour obtenir de l'aide.
Commande:
Commande: *Annuler*
Commande:
Commande: *Annuler*
Commande: _.quit

X:\Users\Gerald\Documents\$accoreconsole>"C:\\Program Files\\Autodesk\\AutoCAD 2021\\accoreconsole.exe" /i "Xref-Topo_Reveston-Sud.dwg" /s "e:\aclsp\ini\spurge.scr" /p "Map Covadis"
Redirect stdout (file: C:\Users\Gerald\AppData\Local\Temp\accc288682).
AcCoreConsole: StdOutConsoleMode: processed-output: enabled,auto
AutoCAD Core Engine Console - Copyright 2020 Autodesk, Inc.  All rights reserved. (R.163.0.0)

Execution Path:
C:\Program Files\Autodesk\AutoCAD 2021\accoreconsole.exe

Version Number: R.163.0.0 (UNICODE)
Chargement de Base AEC...
Régénération du modèle. xte peut ne pas s'imprimer
**** Variable système modifiée ****
1 des variables système gérées a été modifiée par rapport à la valeur préférée. Utilisez la commande MONITEURVARSYS pour afficher les modifications.
Commande:
Commande: Chargement du fichier annulé: e:\aclsp\ini\spurge.scr
Commande:
Commande:
Commande inconnue "EXTERNALREFERENCES".  Appuyez sur F1 pour obtenir de l'aide.
Commande:
Commande: *Annuler*
Commande:
Commande: *Annuler*
Commande: _.quit
PS X:\Users\Gerald\Documents\$accoreconsole>

La on remarque le: chargement de script annulé !

je suis effondré, parceque j'ai tout misé sur cette solution, et je n'arrive même pas à faire marcher un cas super simple.

J'aurais du tester avant.

a+

Gégé

 

 

 

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

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é