Aller au contenu

Fichier de formes SHX


Messages recommandés

Posté(e)

J'ai un plan qui plante souvent en regeneration.

 

Il me demande un fichier de forme SHX : topo.shx.

J'ai un fichier topo.shx mais il me dit que c'est un fichier de police et non un fichier de formes.

 

Qu'est ce qu'un fichier de formes, à quoi cela sert, ou sont'ils gérés ?

Pour mon fichier, comment suprimmer les liens avec ce SHX ?

Posté(e)

Un fichier de formes ou un fichier de police sont construit de même façon.

Seul le début du fichier est différent pour un fichier de police, il contient des information sur la police et sa définition générale.

 

Si le topo.shx ne t'a pas étét fourni avec le fichier dwg, il est possible (coïncidence) que ce ne soit pas le bon fichier.

 

Le fichier formes topo.shx réclamé contient certainement des symboles topographiques: grilles regard, bouche d'égout, lampadire etc...

Il peut aussi être utilsé pour une définition de type de ligne, ex ligne PTT, EDF etc..

 

Le mieux est de réclamer auprès du fournisseur du fichier, le fichier manquant.

 

Si cela n'est plus possible voir la solution suivante chez autodesk

 

http://usa.autodesk.com/adsk/servlet/ps/item?siteID=123112&id=2896848&linkID=2475323

 

Il te faut savoir que tu rique de perdre des représentations peut être importantes dans ton plan.

 

Je ne serais pas surpris de certaine imcompatibilité, surtout de fichier de police shx personnalisée entre les version 2002 et les versions supérieures. A prouver !

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

Posté(e)

Il ne m'est malheureusement pas possible d'avoir le topo.shx d'origine.

J'ai fait ce qui était préconiser par AutoCAD en suivant ton liens mais ... ! Nan, ça ne veux pas, il ne trouve pas de fichiers formes sans liens.....

 

Si vous avez d'autre suggestion, je suis prenneur.

Posté(e)

Salut,

tu as encore deux solutions.

La première est de copier une police shx et de la renommer en toto.shx (ce n’est pas évident que ça marche du premier coup, certaines polices ne passent pas)

La deuxième est d'utiliser le petit lisp qui suit. Il remplace toutes les polices "TOTO" par "NOUV_SHX" (à toi de mettre les bonnes valeurs)

Il suffit ensuite d'utiliser le lisp donné dans le lien de Bonuscad, ou encore de purger le dessin

 

(setq n 0 sel (ssget "x" '((7 . "TOTO"))))
(while (ssname sel n)
 (setq ent (entget (ssname sel n)))
 (setq ent (subst (cons 7 "NOUV_SHX") (assoc 7 ent) ent))
 (entmod ent)
 (entupd (cdr (assoc -1 ent)))
 (setq n (1+ n))
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Pour ma part je n'ai jamais utilisé la solution d'autodesk.

 

Je pense que tu devrais te pencher sur les type de lignes utilisés dans ton dessin. Il est fort possible qu'un ou des type de lignes fassent référence à un fichier de forme SHX spécifique.

 

La routine du lien ne traite peut être pas ce problème.

 

Soit tu réaffecte les objets concernés a un autre type de ligne (utilise les filtres)

Soit tu recrée ton type de ligne

Si tu adopte la 2eme solution je te propose d'utiliser le code suivant, tu pourra modifier alors les paramètre qui clochent, ex le nom de la forme SHX utilisée.

Fonctionne a partir de 2002 et au delà je pense.

(defun c:model_typline ( / 
ent ent_dxf nam_tl def_tl prec m_adir m_abas nam_lin def_lin nbr_lin w_line lg_tiret tp_cpx cod_shx
ss_ent styl_tl file_shx scal_motif rot_motif x_motif y_motif str_motif)
(setvar "cmdecho" 0)
(while (not (setq ent (entsel "\nChoix du TypeLigne modèle: "))))
(setq ent_dxf (entget (car ent)) nam_tl (assoc 6 ent_dxf))
(cond
	((and (cdr nam_tl) (/= (cdr nam_tl) "ByLayer") (/= (cdr nam_tl) "ByBlock"))
		(initget 4)
		(setq
			def_tl (entget (tblobjname "Ltype" (cdr nam_tl)))
			prec (getint (strcat "\nPrécision décimale désirée<" (itoa (getvar "LUPREC")) ">: "))
		)
		(if (not prec) (setq prec (getvar "LUPREC")))
		(setq
			m_adir (getvar "angdir")
			m_abas (getvar "angbase")
			nam_lin (strcat "*" (cdr (assoc 2 def_tl)))
			def_lin (strcat "," (cdr (assoc 3 def_tl)))
			lg_lin (cdr (assoc 40 def_tl))
			nbr_line (cdr (assoc 73 def_tl))
			w_line "\nA"
		)
		(setvar "angdir" 0)
		(setvar "angbase" 0)
(textscr)
(princ (strcat "\n" nam_lin def_lin))
(princ w_line)
		(while (/= (caar def_tl) 49)
			(setq def_tl (cdr def_tl))
		)
		(while def_tl
			(cond
				((eq 49 (caar def_tl))
					(setq lg_tiret (cdar  def_tl))
(princ (strcat "," (rtos lg_tiret 2 prec)))
				)
				((eq 74 (caar def_tl))
					(setq tp_cpx (cdar  def_tl))
				)
				((eq 75 (caar def_tl))
					(setq cod_shx (cdar  def_tl))
(cond
((zerop cod_shx)
(princ (strcat ",[\"" (cdr (assoc 9 def_tl)) "\""))
)
((eq tp_cpx 4)
(princ ",[*")
)
)
				)
				((eq 340 (caar def_tl))
					(setq
						ss_ent (entget (cdr (assoc 340  def_tl)))
						styl_tl (cdr (assoc 2 ss_ent))
						file_shx (cdr (assoc 3 ss_ent))
					)
(if (eq styl_tl "")
(princ (strcat (itoa cod_shx) "," file_shx))
(princ (strcat "," styl_tl))
)
				)
				((eq 46 (caar def_tl))
					(setq scal_motif (cdr (assoc 46 def_tl)))
(princ (strcat ",S=" (rtos scal_motif 2 prec)))
				)
				((eq 50 (caar def_tl))
					(setq rot_motif (cdr (assoc 50 def_tl)))
(princ (strcat ",R=" (angtos rot_motif 0 prec)))
				)
				((eq 44 (caar def_tl))
					(setq x_motif (cdr (assoc 44 def_tl)))
(princ (strcat ",x=" (rtos x_motif 2 prec)))
				)
				((eq 45 (caar def_tl))
					(setq y_motif (cdr (assoc 45 def_tl)))
(princ (strcat ",y=" (rtos y_motif 2 prec) "]"))
				)
				((eq 9 (caar def_tl))
					(setq str_motif (cdr (assoc 9 def_tl)))
				)
			)
			(setq def_tl (cdr def_tl))
		)
		(setvar "angdir" m_adir)
		(setvar "angbase" m_abas)
	)
	(T (princ "\nImpossible de récuperer le type de ligne de l'objet pointé."))
)
(setvar "cmdecho" 1)
(prin1)
)

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

Posté(e)

Merci beaucoup à vous deux de vous pencher sur mon problème !

Mais je ne comprend pas trop ce que vous voulez que je fasse (je n'y connais rien au lisp etc...)

J'ai copié vos lignes de commande je les ai mis dans les fichiers.lsp.

J'ai chargé ces lisp mais aprés, il ne connais pas les commande que j'ai faite.

 

Pour Patrick_35, tu me dis de mettre les bonnes valeurs et là ? je lui donne la valeur d'un shx que je possède, j'en crée un ???

Pour bonuscad, que dois je faire avec ton code ? C'est pour un lisp ou pour autre chose ???

 

Je suis désolée mais je ne me suis jamais penché sur tous cela avant (lisp ...)

 

Autre chose: exist'il un moins de connaitre les fichiers SHX que mon plan requière ? Et si je peux casser cette laison ect....

Posté(e)

Hello,

 

La solution ribbit :

 

- Tu dégèles tout

- Tu copies tout

- Tu ouvres un nouveau dessin

- Tu colles aux mêmes coordonnées

- Tu enregistres

 

Le tour est joué il ne te demande plus rien.

 

 

 

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Merci de ta proposition Serge, mais je ne suis pas autorisé à exporter ce fichier.

 

Réponse à ribbit, j'ai déja essayer de copier, de faire un bloc mais rien à faire ??? je ne comprend pas ???

Posté(e)

Si tu veux vraiment te débarrasser de ces type de lignes

Va dans le menu déroulant "format"

Puis dans "type de ligne..."

Dans la boite de dialogue clique sur le bouton "Charger"

Choisi le fichier "acadisoline" (généralement par défaut)

 

Et la tu compare les type de ligne que tu as dans la 1ere boite avec la seconde (pas facile !)

Ceux qui ne se trouvent pas dans la seconde boite sont succeptible d'être des personnalisée.

Relèvent ces noms

 

Applique un filtre sur tous les objet avec ces noms pour puovoir leur affecter un autre type de ligne.

 

Mais tu peux opter pour l'aide de Serge.

 

Pour Serge

Si c'est un fichier de police (s'il donne suite) je suis interressé par tes conclusions.

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

Posté(e)

Eh bien, si avec tout ce monde le problème n'est pas résolu, c'est à se pendre :D

Pour les valeurs à indiquer dans le lisp, j'ai indiqué TOTO qui est le nom de la police qui t’em....e et NOUV_SHX est le nom de la nouvelle police pour remplacer celle qui est introuvable (donc TOTO) Alors, tu remplaces ces deux noms par les tiens et ça devrait fonctionner. Enfin, ce n’est valable que pour le texte, il est vrai que je n’ai pas pensé aux types de lignes.

 

Et je viens de me rendre compte qu'en renommant mon répertoire fonts et en chargeant un dessin, il ne se passe rien.... Laisse tomber mon lisp. J'aurai pourtant juré qu'en chargeant un dessin, il chargeait aussi les polices, mais bon...

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bruno (bonuscad),

 

Cette formule doit être corrigée mutatis mutandis. L'adresse varie d'un fichier à l'autre. Ici, je l'ai fait avec Romans. La commande debug.exe est à utiliser avec précaution (ne faites pas ceci à la maison, nous sommes des professionnels :-))))

 

 

C:\Répertoire>debug fichier.shx

-e14e

0D33:014E 00.02

-w

Ecriture de 03A90 octets

-q

 

C:\Répertoire>

 

 

Serge

Posté(e)

Bon j'approche de la fin de mon problème.

 

Solution adopté:

- explosion des blocs

- affectation à des types de ligne standard,

- transformation de multilignes en simple lignes,

- affectation du style de police STANDARD à l'ensemble des textes

 

résultat: travail fastidieux mais plus de problème lors du chargement ou de la régénération de fichiers.

 

Par contre, à l'ouverture, il me demande toujours le fichier topo.SHX mais j'annule et c'est tous.

 

Merci à tous de votre aide et si vous connaissez une commande qui permet de savoir ce qui est concerné par le fichier topo.shx dans le fichier ?? (si c'est clair)

 

[Edité le 7/9/2004 par sv_zx9r]

Posté(e)

Réponse à ribbit, j'ai déja essayer de copier, de faire un bloc mais rien à faire ??? je ne comprend pas ???

 

Non non surtout pas de bloc sinon t'embarque tout.

Un simple copier coller.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

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é