sv_zx9r Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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 ?
bonuscad Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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
sv_zx9r Posté(e) le 3 septembre 2004 Auteur Posté(e) le 3 septembre 2004 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.
Patrick_35 Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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 ligneSi 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
sv_zx9r Posté(e) le 3 septembre 2004 Auteur Posté(e) le 3 septembre 2004 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....
Serge Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 sv_zx9r Tu peux toujours me l'envoyer, je peux l'examiner et le convertir via le bon vieux debug.exe. Sinon je peux le décompiler. Pour connaitre mon adresse de courriel, voir http://www.cadnovation.com Serge
ribbit Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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
sv_zx9r Posté(e) le 3 septembre 2004 Auteur Posté(e) le 3 septembre 2004 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 ???
bonuscad Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 Si tu veux vraiment te débarrasser de ces type de lignesVa 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 SergeSi 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
Patrick_35 Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Serge Posté(e) le 3 septembre 2004 Posté(e) le 3 septembre 2004 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-e14e0D33:014E 00.02-wEcriture de 03A90 octets-q C:\Répertoire> Serge
sv_zx9r Posté(e) le 7 septembre 2004 Auteur Posté(e) le 7 septembre 2004 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]
ribbit Posté(e) le 7 septembre 2004 Posté(e) le 7 septembre 2004 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant