Aller au contenu

Edition des chemins des xref


Messages recommandés

Posté(e)

Bonjour,

 

Je travaille sur un fichier qui fait appel à 30 xref (des images). Leur chemin d'accès est enregistré correctement après sauvegarde du fichier.

J'ai modifié l'emplacement du fichier et le chemin des xref n'est donc plus valable !

 

Question :

existe-t-il un moyen simple pour éditer en une seule manip (ou 2 ou 3, je ne suis pas avare en clics !) les 30 chemins des xref au lieu de se les faire 1 par 1 ?

 

NB : je ne veux pas copier les xref dans le répertoire du nouveau fichier pour éviter de dupliquer les images qui surchargeraient le réseau

 

Merci

 

Thierry

Posté(e)

Salut thiery!

 

C'est bizarre, mais normalement les chemins des xrefs sont des chemins complets?!

Dans ton fichier de départ (où ca marche) il faut que tes xrefs (si tu clic dessus) ont un chemin du genre "lecteur:\chemin\fichier" si ce n'est pas le cas, alors c'est normal que tu perdes le lien.

Tu dois alors avoir un truc du genre ..\chemin\fichier.

 

Je vais voir si je trouve un truc pour ca.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut,

 

Réponse 1 : les chemins sont effectivement complets mais comme l'emplacement du fichier sur le réseau a changé, Autocad ne semble pas retrouver le chemin, c'est bizzare :-(

 

Réponse 2 : la fonction e-transmit copie tous les fichiers nécessaires (fichier dwg + xref) dans un répertoire unique. C'est le moyen le + simple pour Autocad de trouver les xref. Je connais cette possibilité depuis longtemps mais comme je l'ai précisé je ne veux pas dupliquer les xref pour ne pas surcharger mon réseau (j'ai pas envie de copier 30 MO à chaque fois que j'enregistre un dwg sous un nom différent et sous un autre répertoire :mad: )

 

A mon avis la solution est dans l'édition d'un fichier texte dans lequel est stocké l'ensemble des chemin des xref, mais je ne connais pas assez les fichiers de config d'Autocad pour savoir lequel éditer (ce serait facile et rapide en utilisant une fonction rechercher/remplacer dans un éditeur de texte : on modifie les chemins des xref, on enregistre et les chemins des xref dans le dwg sont valides).

 

A suivre...

 

[Edité le 10/7/2007 par thieryycg45]

Posté(e)

J'ai modifié l'emplacement du fichier et le chemin des xref n'est donc plus valable !

 

Là, je ne comprends pas, si le chemin des xrefs était correct et bien enregistré, et que ceux-ci n'ont pas bouger de leur dossier d'origine, il ne devrait y avoir aucun problème même si le fichier accueillant les xrefs a bougé de dossier.

 

Le problème ce pose généralement dans l'autre sens: quand les xrefs sont déplacés vers un autre dossier.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Le problème ce pose généralement dans l'autre sens: quand les xrefs sont déplacés vers un autre dossier

J'ai fais un "enregistrer sous" et j'ai enregistré le dwg dans un autre répertoire du réseau.

Ta remarque est effectivement la première qui vient à l'esprit mais j'ai aussi le soucis en modifiant le nom et l'emplacement du dwg.

Posté(e)

Nos réponses ce sont croisées.

 

Donc j'ai bien compris, c'est le fichier accueillant les xrefs qui est passé d'un dossier situé sur le réseau à un dossier situé par exemple sur ta machine.

 

Les chemins réseau sont de forme UNC ou un lecteur virtuel a été associé au chemin du réseau?

 

J'ai fais un lisp pour redéfinir le chemin des xrefs depuis un chemin absolu vers une position relative, bien qu'il ne réponde pas à ta demande, cela peut être un point de départ pour réécrire tes chemins.

 

 
(defun c:rxref ( / cmd bl ch rc tot)
(setq
	cmd (getvar "cmdecho")
	tot 0
	ch (getvar "dwgprefix")
	bl (tblnext "block" t)
)
(setvar "cmdecho" 0)
(command "_.undo" "_group")
(princ "\nTravail en cours...")(princ)
(while bl
	(if (= (logand (cdr (assoc 70 bl)) 4) 4)
		(progn
			(setq rc (cdr (assoc 1 bl)))
			(while (and (not (zerop (strlen rc))) (/= (substr rc (strlen rc) 1) "\\"))
				(setq rc (substr rc 1 (1- (strlen rc))))
			)
			(if (/= rc "")
				(progn
					(setq ch (vl-string-subst ch rc (cdr (assoc 1 bl))))
					(if (findfile ch)
						(progn
							(command "_.xref" "_path" (cdr (assoc 2 bl)) (vl-string-left-trim (getvar "dwgprefix") ch))
							(setq tot (1+ tot))
						)
					)
				)
			)
		)
	)
	(setq bl (tblnext "block"))
)
(command "_.undo" "_end")
(setvar "cmdecho" cmd)
(princ (strcat "\nModification de " (itoa tot) " chemin(s)"))
(princ)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Re-salut!

 

Pour tester s'il y a des xrefs dans un dessin, j'utilise un lisp qui parcourt la table des "block":

(tblnext "BLOCK" param[t ou nil] )

 

Si un des bloc possède dans son code (1 . "chaine de caractères") cela veut dire que c'est un xref et "chaine de caractères" correspond au chemin. Il suffit de faire un lisp qui parcourt la table des blocs et remplace "chaine de caractères" par "nouvelle chaine de caractères".

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Les chemins réseau sont de forme UNC ou un lecteur virtuel a été associé au chemin du réseau

:casstet: Ca veut dire quoi "UNC" ?

Là où je travaille, le réseau est constitué de plusieurs serveurs séparés donc les chemins sont absolus

 

J'ai fais un lisp

Comment utilise-t-on un lisp sous autocad ?

Posté(e)

Pour utiliser un lisp il suffit de cliquer sur le fichier lisp, et de le glisser sur ton autocad ouvert.

Après, si dans le lisp il y a une exécution automatique ca part tout seul, sinon il faut taper le nom de la fonction ex de bonuscad: rxref ou (c:rxref)

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Et la commande REDIR des express tools?

Ca permet de modifier un tronçon de chemin en utilisant une * pour la fin pour toutes les refs ou seulement les images par exemple..

Formateur Autocad - Revit - Sketchup - Photoshop

Posté(e)

Ca veut dire quoi "UNC" ?

extrait depuis wikipedia

En informatique Universal Naming Convention ou Uniform Naming Convention abrégé UNC est une convention sur une manière de définir l'adresse d'une ressource sur un réseau, mise en œuvre par Microsoft Windows.

 

Plutôt que de spécifier une lettre de lecteur et un chemin d'accès, un nom UNC utilise la syntaxe "\\serveur\partage\chemin\nom_fichier" .

 

Pour en revenir au lisp le re-voici avec une modif

 

(defun c:rxref ( / cmd bl ch rc nw_ch tot)
(setq
	cmd (getvar "cmdecho")
	tot 0
;		ch (getvar "dwgprefix")
	ch "\\\\serveur\\partage\\chemin\\"
	bl (tblnext "block" t)
)
(setvar "cmdecho" 0)
(command "_.undo" "_group")
(princ "\nTravail en cours...")(princ)
(while bl
	(if (= (logand (cdr (assoc 70 bl)) 4) 4)
		(progn
			(setq rc (cdr (assoc 1 bl)))
			(while (and (not (zerop (strlen rc))) (/= (substr rc (strlen rc) 1) "\\"))
				(setq rc (substr rc 1 (1- (strlen rc))))
			)
			(if (/= rc "")
				(progn
					
					(setq nw_ch (vl-string-subst ch rc (cdr (assoc 1 bl))))
					(if (findfile nw_ch)
						(progn
							(command "_.xref" "_path" (cdr (assoc 2 bl)) (vl-string-left-trim (getvar "dwgprefix") nw_ch))
							(setq tot (1+ tot))
						)
					)
				)
			)
		)
	)
	(setq bl (tblnext "block"))
)
(command "_.undo" "_end")
(setvar "cmdecho" cmd)
(princ (strcat "\nModification de " (itoa tot) " chemin(s)"))
(princ)
)

 

il faut juste que tu adapte la ligne suivante (qui reprend l'exemple de wikipedia)

ch "\\\\serveur\\partage\\chemin\\"

en mettant le chemin de ton réseau. (penser à bien doubler les anti-slash")

 

Donc une fois que tu a fais cette modif dans le bloc-note ou tu auras copié-collé le code que je t'ai fourni.

Pour tester si ca fonctionne tu peux faire simplement un copier-coller du bloc-note (avec ta modif) directement en ligne de commande d'autocad.

 

Tu devrais avoir un retour C:RXREF si tu as bien valider aprés la dernière parenthèse du copier-coller.

RXREF et donc une nouvelle commande autocad que tu devra taper au clavier.

 

Si cela fonctionne, enregistre le fichier avec une extension LSP pour pouvoir t'en reservir plus tard. Cherche sur le forum, il y a un tuto pour charger des lisps (lsp)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjout tout le monde,

 

Ben moi j'utilise la fonction "redefine Path" des express tools (dans Files). Il suffit alors de saisir l'ancien puis le nouveau chemin pour toutes les références (à condition qu'elles soient toutes dans le même répertoire biensur !) et çà marche très bien.

 

Bon courage.

C'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillants ...

avant d'avoir l'air idiots.

Posté(e)

Comme la dit Pieroka REDIR est peut être la solution la plus simple (équivalent a ma proposition)

 

Par contre je ne sais pas si cela fonctionne avec des chemins UNC, pas testé...

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

[RESOLU]

 

J'ai trouvé la réponse à mon problème et je pense que cela sera utile pour tous les utilisateur d'Autocad :D :

 

La réponse se trouve tout simplement dans l'aide d'Autocad, je cite la page explicative sur les xref, aller au paragraphe " Changement de chemins de référence dans plusieurs dessins (Avancé)"

 

"Lorsque vous déplacez des fichiers de dessin ou les fichiers externes auxquels ils font référence, y compris d'autres fichiers de dessin, les polices du texte, les images et les configuration de traçage, les chemins de référence qui sont enregistrés dans le dessin doivent être mis à jour. Le Gestionnaire des références d'Autodesk dresse la liste des fichiers référencés dans les dessins sélectionnés et propose des outils pour modifier les chemins de référence enregistrés, sans qu'il soit nécessaire d'ouvrir chaque fichier de dessin. Vous pouvez également utiliser le gestionnaire de références pour identifier et résoudre les références posant problème.

 

Le gestionnaire de références est une application autonome qui dispose de son propre système d'aide. Vous pouvez y accéder depuis le menu Démarrer (Windows) » (Tous les) Programmes » Autodesk » AutoCAD » Gestionnaire des références Si vous travaillez en réseau, cette application peut ne pas être installée sur votre ordinateur. (...)"

 

J'ai fait le test, cela fonctionne très bien. Le seul bémol est que cela enregistre dans le dernier format autocad, soit 2007 dans mon cas. Or dans les options, j'ai spécifié que j'enregistrais systématiquement au format autocad 2004 pour résoudre les soucis de compatibilité avec certains prestataires extérieurs. La solution est de rouvrir le dwg et de l'enregistrer de nouveau pour retrouver un format 2004.

 

A noter : par défaut les xref ne sont pas rechargées à la réouverture du dwg dont les chemins d'accès ont été modifiés. Il faut donc les recharger.

 

Le gestionnaire de références existe depuis la version 2004 (vérifié auprès d'un collègue qui a une version antérieure à la mienne).

 

Merci pour vos contributions ultra réactives

 

[Edité le 10/7/2007 par thieryycg45]

 

[Edité le 10/7/2007 par thieryycg45]

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é