Aller au contenu

Renommer des calques massivement


G2.toff

Messages recommandés

Bonjour,

 

Je voulais savoir si il existait un autre moyen de renommer massivement des calques autre que la fonction RENOMMER native de Autocad qui est très bien d'ailleurs mais qui ne permet pas de mémoriser des sortes de correspondances automatiques.

 

Il y a sur Covadis les tables de réaffectation de calques qui elle mémorise ces transformations, seulement on est obligé de renommer 1 calque vers 1 calque (et si il y des calques non prévu dans la table ils ne sont pas renommés) alors qu'avec la fonction Renommer on à la possibilité de renommer plusieurs calques avec l'options * entre autres.

 

Donc ce qu'il manque à la fonction Covadis c'est de pouvoir renommer tous les calques commençants par "xxx" et à la fonction d'autocad de pouvoir sauvegarder des transformations types (ou récurrentes).

 

Quelqu'un aurait-il une idée, via un lisp par exemple, qui permettrait de paramétrer une liste de calques commençants par ("par" ou autres options équivalentes aux options de la fonction native du style XXX* etc..) liste qui pourrait contenir plusieurs possibilité pour renommer des groupes de calques.

 

Par exemple :

 

ZZZ_PROJET1 renommer en JJJ_projet1 (ou JJJ_ZZZ_PROJET1)

ZZZ_PROJET2 renommer en JJJ_projet1 (ou JJJ_ZZZ_PROJET2)

HHH_PROJET6 renommer en MMM_projet6 (ou MMM_ZZZ_PROJET6)

etc....etc....

 

Si quelqu'un à une idée ....

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Sans lisp et avec la commande renommer, tu peux faire ce que tu souhaites avec la solution de Didier.

Il y a aussi le convertisseur de calque qui peut aussi t'être utile et enregistrer un fichier standard.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

En fait je ne connaissais pas le convertisseur de calques....mais c'est très proche de la réaffectation des calques de Covadis.

 

Peut on éditer le fichier DWS qui contient les conversions ou pas et si oui peut on mettre des * ou autre options pour la sélection multiple.

 

En fait avec ces méthodes (si je le comprends bien et si je les utilise bien) on peut juste convertir un calque connu en un autre calque. Voici mon problème concrètement. En fait dans ma société, on génère des calques qui commencent par certaines lettres puis après l'utilisateur écrit ce qu'il veut. Le but c'est d'avoir des préfixes communs pour pouvoir classer les calques et après le préfixe le gars il précise ce qu'il veut.

 

Exemple de calques pour un réseau d'eau :

AEP1

AEP2

AEP3

AEP3_ROBINETS

AEP3_CONDUITES

AEP2_TEXTES

AEP3_FKUHSKJDSKJVBD

AEP_K?MQ?LKD?CLK

 

On peut voir que le préfixe est toujours le même donc AEP mais que l'utilisateur peu écrire tout et n'importe quoi après, et il peut aussi créer un nombre indéfini de calques, sauf qu'il doit respecter les préfixes.

 

Donc mon intérêt serait de pouvoir soit changer le préfixe soit en rajouter un devant quelque soit le nombre de calques et le texte après le préfixe. C'est pour cela que RENOMMER est bien sauf que l'on ne peut pas sauvegarder un paramétrage pour tous les dessins et tous les préfixes existants mais connus (car le nombre de préfixe n'est pas variable, il existe une liste et on ne peut pas en créer d'autres).

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

G2.toff : est-ce que tu as suivi le lien que propose Steven ?

Si oui : je ne comprends plus rien au fait que tu redemande des explications sur ce qui est solutionné par le lien

Si non : je réexplique car je ne pense pas être hors sujet.

 

Dans ton exemple de noms calques si tu veux changer tout ce qui est préfixé par AEP en AEP1 :

renommer

AEP*

AEP1* et c'est fini

 

Si tu n'as pas de préfixe mais sur tu veux en rajouter un à tous les calques

renommer

*

AEP* et c'est fini

 

Si je suis hors sujet sois plus précis, merci

 

Tu peux aussi faire des recherches car le titre du message marqué comme résolu est identique au tien...

 

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je sais que je n'aurais jamais pu être prof car je ne sais pas expliquer les choses....

 

Pour info, DIDIER, je "teste" et "visite" toujours les conseils prodigués par les utilisateurs du forum et même des autres forum, en espérant que ce soit la solution à mes questions.

 

En fait je connais très bien les fonctions RENOMMER et REAFFECTATION des calques Covadis (en tout cas je le pense).

 

Mon problème se résume je pense en 1 seul mot : AUTOMATISATION.

 

En fait je travaille dans un bureau d'études VRD et reçois assez souvent (plusieurs fois par semaine) des fichiers d'archi ou de géomètres. Je compile les 2 et y rajoute mes calques (mes plans). Depuis 16 ans on a créé des icones qui permettent de faire apparaitre ou disparaitre certains calques des archis, des géomètres et de nous (un peu comme des présentations mais dans l'espaces objet par exemple en appuyant sur l'icone AEP cela fait apparaitre le fond de plan masse de l'archi, le fond de plan du géomètre et mes calques AEP). Pour cela je dois retravailler à ma sauce les fichiers des autres, donc les tables de réaffectation et la fonction renommer je maitrise (ou plutôt je pense maitriser..(rires forts)).

 

Avant (après les mammouths quand même)les géomètres avaient environ 100 calques dans leur bibliothèque et les archi un peu plus dans les 200....j'avais donc établi des tables (de réaffectation) pour renommer calque par calque avec des nouveaux noms. l'avantage de ces tables c'est qu'elles sont enregistrées et dés que t'ouvre un nouveau fichier tu la charge et c'était fini.

 

Aujourd'hui il y a moins de limites en nombre de caractères dans les calques et en nombre de calques, donc les logiciels évoluants, certains géomètres se retrouvent avec des bibli de 300 calques voir plus et pareils pour les archis.

 

Donc quand je reçois un fichier je le passe à la table, et ce qu'il reste de calque c'est avec la fonction RENOMMER qui est bien car elle possède des options comme * qui permettent de cibler plusieurs calques, mais on ne peut pas les mémoriser (enregistrer)pour les ré-utiliser sur un autre fichiers. Parfois, voir assez souven l'archi va retoucher son plan et nous le renvoyer 1,2 voir plusieurs fois, et donc on se tape les tables et le RENOMMER plusieurs fois et à chaque fois les renommer sont à95% les mêmes.

 

Un exemple de fichier géomètre:

 

Avant les calques étaient : FAS,FAS1, FAS3 TOPOJIS, TOPOALT, TOPOCOD...

Aujourd'hui : FAS,FAS1, FAS3 FAS1-3,FAS1-7, FAS3-3 , TOPOJIS, TOPOALT, TOPOCOD, 18022015_FAS, 18022015_TOPOJIS, 18022015_TOPOALT, 18022015_TOPOCOD, FAS-a ne pas consider, TOPOJIS_caché, TOPOALT_erreurs, TOPOCOD_voisin....

 

Ils rajoutent des commentaires ou des dates quand il complètent un levé, et forcément les dates d'un fichier à l'autre varient, sauf qu'il y a toujours des points communs (exemple ci-dessus TOPOJIS, FAS,...).

 

Avec réaffectation tu peux toujours en rajouter sauf que les dates changent toujours donc tu n'arrètes pas et avec renommer vu que l'on ne peux pas mémoriser et bien tous les jours tu te rettappes FAS1* renommer en XX etc...

 

Aujourd'hui par exemple les archis tu reçois un fichier avec 100 calques qui contiennent le mot CLOISONS, ce qu'il y a écrit avant ou après on s'en fiche (on va tout mettre dans BATI) donc RENOMMER va bien sauf que le lendemain quand tu reçois un autre plan modifié t'as les crocs et 4 jours après encore plus, d'ailleurs les lettres R,E,N,O,M je sais très bien ou elle sont sur le clavier ! (rires forts).

 

J'espère avoir été plus clair, ce qui n'est pas gagné !

 

En fait si les tables de réaffectation des calques de Covadis pouvaient intégrer les option */# (y'en a d'autres) que l'on a avec la fonction RENOMMER)... ce serait la solution JE PENSE!

 

Le convertisseur je connaissais pas et c'est pas mal pour un fichier comme renommer, le seul HIC c'est que lorsque tu tape un filtre de calque par exemple AEP* il comprend mais dans la fenêtre du bas au lieu de t'écrire le filtre AEP* il te met la liste des calque correspondant au AEP*, donc AEP1,AEP2,AEP3...du coup ça revient au même que la réaffectation de covadis....

Merci de m'avoir lu...

Toff.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je vais encore passer pour un ronchon mais j'en ai pas grand chose à faire n'ayant rien à prouver à personne.

Tu répètes ton premier message sans expliquer plus avant.

OK pour l'automatisation, mais on ne peux automatiser que des choses avec une norme, ne serait-ce qu'un squelette de norme.

 

Donc je vais me permettre de te demander des exemples concrets de ce que tu veux automatiser, par exemple :

  • je veux que tous les calques contenant le mot "topo" gardent leur nom mais en rajoutant le préfixe "GEOM_"
  • je veux que tous les calques contenant le mot "réseau" gardent leur nom mais en rajoutant le préfixe "RES_"
  • et ainsi de suite...

Je vais regarder ce que je peux faire pour toi et pour automatiser puisque c'est le mot d'ordre.

 

Amicalement

 

ps: pour ce qui est des calques bien trop nombreux chez les géomètres c'est parce que ces derniers sont pervertis par le système informatique et utilisent sans précautions les levés codés, les pauvres gens...

 

Lien vers le commentaire
Partager sur d’autres sites

Non non, ya pas de ronchon, enfin je pense pas, ya surtout des choses pas évidentes pour moi à expliquer visiblement !

 

Non, en plus je respecte beaucoup les gens et encore plus ceux qui arrivent à faire certaines choses comme on peut trouver sur ce type de forum, et d'ailleurs c'est pourquoi je me permets de leur demander de l'aide.........

 

J'ai du tout "développer" au niveau d'autocad dans la société et en partie grace à une personne qui bossait chez Géomédia et que je respecte énormément (qui est sur CADXP d'ailleurs mais que je préserve de mes multiples idées, il en a assez souffeur pendant des années....(rires forts)), voilà aussi pourquoi je respecte ceux qui répondent !!!!

 

Après j'essaye d'être bref dans mes demandes, ce qui n'a pas l'air d'être la bonne solution ... mais des exemples j'en ai des centaines. Dans mes écris je n'en précise que certains car je pense (là je m'avance un peu) pouvoir une fois le squelette réalisé le compléter avec de vrais cas que je rencontre tous les jours, et comme je dis si ça marche pour 3 cas ça devrait marcher pour 100000.

 

Si tu me sors un "script" du style "CLOISON"=BATI et "arbre"=VEGET, ben je pense pouvoir le compléter avec des 100aines d'autres conversions....j'ai bien dis je pense !!!!

 

Dans ta phrase "Donc je vais me permettre de te demander des exemples concrets de ce que tu veux automatiser, par exemple :

•je veux que tous les calques contenant le mot "topo" gardent leur nom mais en rajoutant le préfixe "GEOM_"

•je veux que tous les calques contenant le mot "réseau" gardent leur nom mais en rajoutant le préfixe "RES_"

•et ainsi de suite..."

c'est tout à fait ce que je cherche.

 

Tu me demandes une norme, moi j'ai moins officiel j'ai juste la liste des calques dont je maitrise l'apparition sur mes fichiers retravaillés, dont en voici des exemples :

 

1-tous les calques contenant les mots "CLOISONS" sont renommés dans un calque "BATI"

2-tous les calques contenant le mots "ISOLANT" dans le calque "BATI"

3-tous les calques contenant le mot "ARBRES" dans le calque "VEGET"

4-tous les calques du dessin du géomètre je rajoute un préfixe "GEO_"

5-tous les calques du dessin de l'archi je rajoute un préfixe "ARCHI_"

 

Je prends cet exemple sur 3 mots "filtres" ou 2 types de fichiers (un de l'archi l'autre du géomètre), qui sur la commande RENOMMER sont très faciles à traités, ça prend 20 secondes. Sauf que dans le réel j'en ai parfois 50 des RENOMMER à faire....d'ou le besoin de sauvegarder un fichier de conversion, ou un lisp contenant un maximum de conversions (parce qu'il y en aura toujours à faire manuellement, j'en suis sur).

 

Sauf que ces manip je doit les faire à chaque nouveau fichier que je reçoit, et malheureusement à chaque fois ils me rajoutent des calques, ou pas ...

 

Je pense donc que quand tu me dis que tu vas regarder ce que tu peux faire, je pense que tu as pigé mon soucis, soucis qui n'est pas que le mien quand tu regardes les forums sur autocad....

 

En tout cas je te remercie de t'occuper de mon problème...moi non plus n'est rien à prouver à personne quelque part car ça fait 16 ans que je bosse dans ma société, mon seul soucis en temps qu'ancien et responsable info c'est de permettre à mes collègues d'éviter les taches récurrentes lourdes, longues, pénibles qui m'ont cassé les "bips" pendants ces dernières années et par conséquent de leur permettre de passer plus de temps aux tâches intéressantes !!! Je ne supporte plus d'entendre un collègue me dire "putain...j'ai passé 3 heures à retravailler le plan du géomètre..ça me bouffe, toff tu n'aurais pas une solution ?".....Ben non ! (parfois je réponds oui quand même !)

 

Aujourd'hui je revois l'intégralité de nos blocs, calques, gestion de fichiers et autres documents types afin de ne plus les voir s'emmer... sur certaines taches et j'y arrive en partie.

Mais là ou je suis impuissant c'est sur "l'automatisation" de certaines taches, certaines j'y arrive, mais la plupart j'ai mes limites...dans un autre sujet, dans le même style que les calques je demande la substitution massive de blocs, j'ai des réponses intéressantes mais pas trop adaptable à ma situation, mais je les teste !

 

bref...encore merci de me lire et si tu y jette un œil je t'en remerci mais j'espère que ce ne sera pas long car je n'ai pas non plus envie de te faire perdre trop de temps !

 

Amicalement

Toff.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Ce que tu demandes n'est pas automatisable, du moins tel que tu l'expliques car il y a une grosse partie d'intelligence pour comprendre que cloison deviendra bâti et que feuillus deviendra veget, par contre je te propose de faire une liste des calques et de l'injecter dans Excel

Mettre cette liste en colonne F puis de remplir les colonnes de cette façon :

A1- (tiret ou signe moins)

B1 renommer

C1 espace

D1 calque

E1 espace

F1 l'ancien nom du calque

G1 espace

H1 le nouveau nom du calque

I1 espace

J1 =CONCATENER(A1;B1;C1;D1;E1;F1;G1;H1;I1)

maintenant tu peux tirer tes lignes vers le bas

sélectionner la colonne J et Ctrl+C

Ouvrir un éditeur de texte et coller dans un fichier vierge que tu sauvegardes avec l'extension .SCR

 

Dans AutoCAD, lancer la commande script, chercher le fichier créé et cliquer sur ouvrir.

voila...

 

Si tu es satisfait de ce genre de manipulation qui est sauvegardable on peut l'automatiser sans doute mais pas autant que tu le souhaitais originellement

 

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

Merci...

 

Je vais tester cela, je pense demain ou mardi.

 

Comme j'écrivais précédemment c'est fort possible que ce ne soit pas réalisable, c'est pour cela que je pose la question.

 

C'est justement là ou je suis impuissant, c'est que lorsque je vois une fonction qui le fait (renommer) mais qui ne s'enregistre pas et une qui ne le fait pas assez bien mais qui s'enregistre...ben je pose la question si un mixe est possible !

 

Je vais tenter avec ta solution qui ne m'est pas totalement étrangère, puisque j'utilise excel pour la création multiple de calques, couleur, type ligne mais je ne pensais pas au renommage !

 

Merci et bonne soirée.

 

Amicalement

Toff.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

J'ai testé ta solution, malheureusement comme tu m'avais prévenu j'arrive au même résultat qu'avec la réaffectation des calques de Covadis.

 

En fait ces solution ne reconnaissent pas l'*, par exemple, comme options de recherche permettant de sélectionner un groupe de calques commençant par le même préfixe comme AEP* pour tous les renommer RESEAU_AEP*, mais comme un caractère à l'identique d'une lettre.

 

Merci quand même, je vais continuer mes recherches, je sais pas ou, car c'est vraiment un travail pénible lorsque t'es amené à le faire plusieurs fois par semaine voir même par jour parfois.

 

Je laisse le sujet ouvert quand même on sait jamais....

 

Amicalement.

 

Toff.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je perds le fil de la discussion, je ne comprends qu'en très faible partie ton souci.

Je me demande si tu connais bien les options des caractères génériques (sans te manquer de respect)

il y a * (étoile) ? (point d'interrogation) # (dièse) entre autre et en jouant avec tu fais des miracles.

 

Puisque tu connais le préfixe et que c'est lui qu'il faut changer pour créer un nouveau préfixe

la syntaxe devient dans la commande renommer :

*AEP*

Reseau*

 

Sinon puisque tu dis que le sujet est récurrent, tu pourrais établir un classeur Excel avec deux colonnes ancien nom et nouveau nom et au fur à mesure de tes expériences le compléter comme entrant pour une commande écrite en lisp pour le coup qui te ferait un renommer en listant ce qu'il y a dans ce classeur.

construction > bati

cloison > bati

appentis > bati et compléter à chaque nouvelle trouvaille dans un fichier reçu.

 

On pourrait faire des tests si le calque existe déjà et s'il n'existe pas le renommer

 

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

Je maitrise les *?#, ça c'est sur !

 

La fonction RENOMMER d'autocad je la maitrise, ça c'est sur !

 

Les tables de réaffectation des calques de Covadis je maitrise, ça aussi c'est sur !

 

Sans te manquer de respect non plus, connais-tu les tables de réaffectations des calque de Covadis (fichier .rpl) ?

 

Si oui, si tu ouvres un fichier .rpl, tu verras que chaque calque connu doit être renommer !

 

exemple de fichier RPL (assez ancien mais qui marche encore, si ce n'est que les calques renommés ne sont plus d'actualité):

 

EFF_AXES,EFFAXES,1,CONTINUOUS

FA1,COMPG_BAT,1,CONTINUOUS

FA2,COMPG_PUIT,7,Continuous

FAS,COMPG_BATI_H,1,CONTINUOUS

FAT,COMPG_BAT_T,1,CONTINUOUS

FB1,COMPG_RTE_EAC,7,CONTINUOUS

FB1-3D,3DG_RTE_EAC,7,CONTINUOUS

FB2,COMPG_RTE_SVG,7,CONTINUOUS

FB3,COMPG_OUVART,7,CONTINUOUS

FB4,COMPG_RTE_BORDU,7,CONTINUOUS

FBS,COMPG_RTE_SGHZ,7,CONTINUOUS

FBT,COMPG_RTE_T,7,CONTINUOUS

FC1,COMPG_VFER,7,CONTINUOUS

FCS,COMPG_VFER_S,7,CONTINUOUS

FCT,COMPG_VFER_T,7,CONTINUOUS

FD1,COMPG_LMT_CADA,7,CONTINUOUS

FD2,COMPG_LMTCONS,6,CONTINUOUS

FDS,COMPG_LMT_CADA_S,7,CONTINUOUS

FDT,COMPG_LMT_CADA_T,7,CONTINUOUS

FE1,COMPG_HYD_LMT_O,4,POINTILLE2

FE1-3D,3DG_HYD_LMT_O,4,POINTILLE2

FE2,COMPG_HYD_RIVIE,4,POINTILLE2

FE3,COMPG_HYD_BASSIN,4,POINTILLE2

FES,COMPG_HYD_S,4,CONTINUOUS

FET,COMPG_HYD_T,4,CONTINUOUS

FF1,EFFG_DES_CARR,5,CONTINUOUS

FFS,EFFG_DES_SYMB,5,CONTINUOUS

FFT,EFFG_DES_CARR_T,5,CONTINUOUS

FG1,COMPG_RLF_CNM,41,CONTINUOUS

FG2,COMPG_RLF_CN,31,CONTINUOUS

FG3,TOPG_PNT,130,CONTINUOUS

FG3-A,TOPG_PNT_BAT,7,CONTINUOUS

FG3-B,TOPG_PNT_RTE,7,CONTINUOUS

FG3-C,TOPG_PNT_VFER,7,CONTINUOUS

FG3-E,TOPG_PNT_CRSEAU,7,CONTINUOUS

FG3-H,TOPG_PNT_LMT,7,CONTINUOUS

FG3-I,TOPG_PNT_VGT,7,CONTINUOUS

FG3-J,TOPG_PNT_MBURB,7,CONTINUOUS

FG3-K,TOPG_PNT_TEL,7,CONTINUOUS

FG3-L,TOPG_PNT_ASSAI,7,CONTINUOUS

FG3-M,TOPG_PNT_AEP,7,CONTINUOUS

FG3-N,TOPG_PNT_EP,7,CONTINUOUS

FG3-O,TOPG_PNT_EDF,7,CONTINUOUS

FG3-OA,TOPG_PNT_OUVART,7,CONTINUOUS

FG3-P,TOPG_PNT_GDF,7,CONTINUOUS

FG3-Q,TOPG_PNT_RESDIV,7,CONTINUOUS

FG3-S,TOPG_PNT_DIV,7,CONTINUOUS

FG3N,TOPG_MAT,7,Continuous

FG3P,EFFG_PNT_3D,2,Continuous

FG3R,TOPG_PNT_2D,7,Continuous

FG3Z,TOPG_ALT,7,Continuous

FG4,COMPG_RLF_TALFOS,7,CONTINUOUS

FG4-1,COMPG_RLF_HTALUS,7,BARBE

FG4-2,COMPG_RLF_BTALUS,7,BAS_TALUS

FG4-3,COMPG_RLF_AFOSSE,7,AXE_FOSSE

FG4-4,COMPG_RLF_GTALUS,7,BARBE

FG4-A1,COMPG_RLF_FOSTR,33,BARBE

FG4-A2,COMPG_RLF_FOSBT,45,CONTINUOUS

 

 

Tous les calques avant la virgule sont des calques possibles d'être présent sur le fichier reçu que l'on renomme pour l'utiliser à notre sauce (les couleurs de calques et type de lignes aujourd'hui je m'en fiche qu'ils restent comme l'original !

 

Comme tu peux voir sur les dernières lignes on a rajouté des caractères après FG4 car les géomètres les avaient rajoutés sur leur fichiers. Sauf que des rajouts, plus ça va plus on en rajoute, or je me demandais si on pouvais créer un filtre (même principe que la fonction renommer) pour choper tous les calques commençant par FG4 (renommer = FG4*) pour les renommer cash COMPG_RLF ou COMPG_FG4* ou COMPG_RLF_*....sur Covadis (fichier rpl) la réponse est non !

 

Actuellement sur Covadis cela : FG4*,COMPG_RLF_*,45,CONTINUOUS[/b] n'est pas reconnu et avec le script excel visiblement non plus.

 

Ce fichier RPL, sur autocad (avec Covadis) tu vas sur le menu COVAEDITION puis CALQUES puis REAFFECTATION DE CALQUE puis tu sélectionnes ton fichier RPL et c'est fini (durée 10 secondes maxi). Avec ton fichier excel c'est pareil en passant par CHARGER UN SCRIPT de autocad.

 

Si j'ai posté ce sujet sur LISP, c'est parce que je me suis dit que peut être un lisp intégrant toutes les conversions serait possible d'intégrer des filtres comme *?#.

 

Voilà, je ne peux être plus clair, désolé !

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

  • 5 ans après...

Coucou,

Le but est-il de remplacer une même chaîne de caractères présente dans tous les calques par une nouvelle et même chaîne de caractères ?
Si c'est le cas, alors essaye ceci :

(defun c:RNL (/ vla-collection->list layer pattern)
  (defun vla-collection->list (doc col flag / lst item i)
    (if (null (vl-catch-all-error-p (setq i 0 col (vl-catch-all-apply 'vlax-get (list (if doc doc (vla-get-activedocument (vlax-get-acad-object))) col)))))
      (vlax-for item col
        (setq lst (cons  (cons
              (if (vlax-property-available-p item 'Name)
                (vla-get-name item)
                (strcat "Unnamed_" (itoa (setq i (1+ i))))
              )
              (cond
                ((= flag 0)
                  (vlax-vla-object->ename item)
                )
                (t
                  item
                )
              )
            )
            lst
            )
        )
      )
    )
    (reverse lst)
  )
  (if $str$
    (if (= "" (setq pattern (getstring T (strcat "\nSpécifier la chaîne à remplacer <" $str$ "> : "))))
      (setq pattern $str$)
    )
    (setq pattern (getstring T "\nSpécifier la chaîne à remplacer : "))
  )
  (setq $str$ (getstring T "\nSpécifier la chaîne de remplacement : "))
  (mapcar
    '(lambda (x / layer name)
      (setq
        layer (cdr x)
        name (car x)
      )
      (if (wcmatch name (strcat "*" pattern "*"))
        (entmod (subst (cons 2 (vl-string-subst $str$ pattern name)) (assoc 2 (entget layer)) (entget layer)))
      )
     )
    (vla-collection->list nil 'layers 0)
  )
  (princ)
)

Sinon, alors c'est plus complexe et il faudrait peut-être regarder du côté du Convertisseur de calques ? (Outils > Normes CAO > Convertisseur de calques)

Bisous,
Luna

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

Tu peux nous donner un avant et un après ? 
"06-04-RTE-PROJET-COORDONNEES_AAAAA-GGGGG" devient quoi ? "06-04-RTE-PROJET-COORDONNEES_AUTO-CAD" ?
Est-ce que la partie "AAAAA-GGGGG" aura au final le même nom ou des noms différents ?
T'as beaucoup de calques à gérer ou seulement ceux qu'on voit dans ton post ?

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

AAAAA-GGGGG doit être remplacé par d'autre nom qui n'ont pas forcement le meme nombre de caractère et qui peuvent avoir des caractères spéciaux.....
Exemple: 06-04-RTE-PROJET-COORDONNEES-AAAAA-GGGGG  -->  06-04-RTE-PROJET-COORDONNEES-MARSEILLE-PARIS
                06-04-RTE-PROJET-COORDONNEES-AAAAA-GGGGG  -->  06-04-RTE-PROJET-COORDONNEES-SAINT_DENIS-TROULOULOUTE_LES_OIES

 

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 14 heures, JPhil a dit :

Tu peux nous donner un avant et un après ? 
"06-04-RTE-PROJET-COORDONNEES_AAAAA-GGGGG" devient quoi ? "06-04-RTE-PROJET-COORDONNEES_AUTO-CAD" ?
Est-ce que la partie "AAAAA-GGGGG" aura au final le même nom ou des noms différents ?
T'as beaucoup de calques à gérer ou seulement ceux qu'on voit dans ton post ?

AAAAA-GGGGG doit être remplacé par d'autre nom qui n'ont pas forcement le meme nombre de caractère et qui peuvent avoir des caractères spéciaux.....
Exemple: 06-04-RTE-PROJET-COORDONNEES-AAAAA-GGGGG  -->  06-04-RTE-PROJET-COORDONNEES-MARSEILLE-PARIS
                06-04-RTE-PROJET-COORDONNEES-AAAAA-GGGGG  -->  06-04-RTE-PROJET-COORDONNEES-SAINT_DENIS-TROULOULOUTE_LES_OIES

Lien vers le commentaire
Partager sur d’autres sites

Il y a 14 heures, Luna a dit :

Coucou,

Le but est-il de remplacer une même chaîne de caractères présente dans tous les calques par une nouvelle et même chaîne de caractères ?
Si c'est le cas, alors essaye ceci :

(defun c:RNL (/ vla-collection->list layer pattern)
  (defun vla-collection->list (doc col flag / lst item i)
    (if (null (vl-catch-all-error-p (setq i 0 col (vl-catch-all-apply 'vlax-get (list (if doc doc (vla-get-activedocument (vlax-get-acad-object))) col)))))
      (vlax-for item col
        (setq lst (cons  (cons
              (if (vlax-property-available-p item 'Name)
                (vla-get-name item)
                (strcat "Unnamed_" (itoa (setq i (1+ i))))
              )
              (cond
                ((= flag 0)
                  (vlax-vla-object->ename item)
                )
                (t
                  item
                )
              )
            )
            lst
            )
        )
      )
    )
    (reverse lst)
  )
  (if $str$
    (if (= "" (setq pattern (getstring T (strcat "\nSpécifier la chaîne à remplacer <" $str$ "> : "))))
      (setq pattern $str$)
    )
    (setq pattern (getstring T "\nSpécifier la chaîne à remplacer : "))
  )
  (setq $str$ (getstring T "\nSpécifier la chaîne de remplacement : "))
  (mapcar
    '(lambda (x / layer name)
      (setq
        layer (cdr x)
        name (car x)
      )
      (if (wcmatch name (strcat "*" pattern "*"))
        (entmod (subst (cons 2 (vl-string-subst $str$ pattern name)) (assoc 2 (entget layer)) (entget layer)))
      )
     )
    (vla-collection->list nil 'layers 0)
  )
  (princ)
)

Sinon, alors c'est plus complexe et il faudrait peut-être regarder du côté du Convertisseur de calques ? (Outils > Normes CAO > Convertisseur de calques)

Bisous,
Luna

JE viens de tester et ça marche!!!!
Merci Infiniment Luna

 

Lien vers le commentaire
Partager sur d’autres sites

@stefD,

Il y a 3 heures, stefD a dit :

JE viens de tester et ça marche!!!!
Merci Infiniment Luna

Comment cela peut-il solutionner ton problème ?! Mon programme permet uniquement de remplacer les chaînes de caractères similaires, par une autre chaîne de caractères unique (donc commune à tout le monde !). Or toi tu veux remplacer les chaînes de caractères similaires, par différentes chaînes de caractères pour chaque calque.

Personnellement je ne vois pas vraiment comment faire cela en programmation car le programme ne peux pas prendre une décision à ta place. D'autant plus que je ne vois pas comment tu peux avoir plusieurs calques portant strictement le même nom pour le moment...

Il y a 3 heures, stefD a dit :

AAAAA-GGGGG doit être remplacé par d'autre nom qui n'ont pas forcement le meme nombre de caractère et qui peuvent avoir des caractères spéciaux.....
Exemple: 06-04-RTE-PROJET-COORDONNEES-AAAAA-GGGGG  -->  06-04-RTE-PROJET-COORDONNEES-MARSEILLE-PARIS
                06-04-RTE-PROJET-COORDONNEES-AAAAA-GGGGG  -->  06-04-RTE-PROJET-COORDONNEES-SAINT_DENIS-TROULOULOUTE_LES_OIES

Donc essaye plutôt de regarder du côté du convertisseur de calques comme je disais précédemment car c'est un travail qui nécessite une intervention utilisateur pour chaque référence de calque. Pourquoi avoir créé une chaîne de caractère commune si tu savais que tu devrais les remplacer par des chaînes de caractères différentes ? J'ai du mal à comprendre la démarche..

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

@Luna,
J'imagine qu'il n'est pas l'auteur des noms de calques.
Par contre si le but était de remplacer "AAAAA-GGGGG" par "", là ton programme est top.
Ou alors il remplace tous les calques portant la mention "AAAAA-GGGGG" par le nom d'une ville, et peut ainsi regrouper tous ces fichiers (séparés) dans un seul et même fichier avec la possibilité de gérer/geler en fonction de telle ou telle ville.

C'est ça @stefD ?

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

Bonjour à tous,

@Luna@JPhil

La demande de StepD venait de moi, donc je vais vous répondre.
AAAAA-BBBBB doit être renommer mais toujours par une chaine de caractères uniques.
En revanche, on peut avoir AAAAA-CCCCC puis BBBBB-DDDDD... 

En tout cas merci, le lisp répond parfaitement à notre problème.

Seb

Autocad MAP2019 - Covadis V17.1i

Lien vers le commentaire
Partager sur d’autres sites

Ah bon bah parfait dans ce cas @ssalle et @stefD !

C'est en effet un peu plus clair avec les bonnes explications 😉
Du coup s'il y a éventuellement besoin de modifier la valeur par défaut, il n'y a pas de soucis, il suffit de demander ce que vous souhaiteriez. Actuellement la nouvelle valeur spécifiée est une variable globale et est utilisée comme valeur par défaut pour la fois suivante (dans le cas où l'on a modifié une chaîne mais finalement on s'est trompé, on peut reprendre la nouvelle sans devoir la retaper).

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

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é