Aller au contenu

Comment renommer grand nombre de blocs


philous

Messages recommandés

J'ai un autre problème auquel je sui confronté, c'est renommer un très grands nombres de blocs en 1 seul opération.

En effet, je suis ds des cartes de mon département, et je voudrais par exemple renommer ts les blocs concernant les communes , puis ts ceux cantons etc.... si je les prend 1 par 1 j'en ai pour un moment, car il y en a plusieurs centaines.

Merci d'avance d'une éventuelle réponse.

A+

Phil

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

C'est possible à automatiser si ce que tu veux changer est assimilable à un préfixe, un suffixe ou une partie du nom semblable dans tous les blocs "commune" ou tous les blocs "canton". Sinon, il faut bien à un moment ou à un autre entrer tous les noms...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut,(gile)

 

En fait tu as presque trouvé ce que cherche à faire, je t'explique un peu plus.

Ds mon boulot actuellement je dois faire pas de modif sur des fichiers pour faire des gabarits.

On a donc un fichier département, région, pays, communes, cantons, atd, etc… et ds chacun de ces fichiers il y a un nombre très important de blocs qui porte le même nom d’où problème selon ce que l'on souhaite faire . Tout ces fichiers viennent d'export de Mapinfo donc chaque bloc il y a étiquette etc….

Par exemple ds fichier communes les blocs se nomment ainsi actuellement BLK 1 à 374, je retrouve des blocs BLK x ds ts les autres fichiers. Le bloc BLK 1 par exemple je le trouve ds fichier communes , cantons, département, atd, etc… donc gênant selon ce que l'on souhaite faire.

L'idée serait alors de renommer tous ces blocs ds chaque fichier en 1 seule opération en mettant un préfixe, suffixe, ou partie semblable du nom, comme Com_BLK 1 à la place de BLK 1 (exemple)

Avec la commande RENOMMER on ne peut faire que bloc par bloc d’où un travail important en temps, il faudrait comme tu dis (gile) automatiser ce type d'opération mais comment tu fais , comment tu procèdes pour automatiser tu pourrais m'en dire plus si tu as une idée(gile) vu tes compétences plus étendu que moi sous autocad.

D''avance merci

 

A +

 

Phil.

 

Lien vers le commentaire
Partager sur d’autres sites

Bjr (gile)

 

Bien reçu ta réponse.

Je me suis donc mis au travail ce matin et j'ai copié ds autolisp nouveau fichier ton application change_pref ci-après et je l'ai enregistré sous chnge_pref.lsp.

 

"(defun c:change_pref (/ old new name)

(vl-load-com)

(if (and

(setq old (getstring "\nEntrez le préfixe à changer: "))

(setq new (getstring "\nEntrez le nouveau préfixe: "))

)

(vlax-for b (vla-get-blocks

(vla-get-ActiveDocument (vlax-get-acad-object))

)

(setq name (vla-get-Name b))

(if (wcmatch name (strcat old "*"))

(vla-put-Name b (vl-string-subst new old name))

)

)

)

(princ)

)"

 

Ca marche ss soucis, j'ai donc fait la même chose avec ton application change_suff

 

"(defun c:change_suff (/ old new name)

(vl-load-com)

(if (and

(setq old (getstring "\nEntrez le suffixe à changer: "))

(setq new (getstring "\nEntrez le nouveau suffixe: "))

)

(vlax-for b (vla-get-blocks

(vla-get-ActiveDocument (vlax-get-acad-object))

)

(setq name (vla-get-Name b))

(if (wcmatch name (strcat "*" old))

(vla-put-Name

b

(vl-string-subst

new

old

name

(- (strlen name) (strlen old))

)

)

)

)

)

(princ) "

 

Là problème ça ne fonctionne pas qd j'ai chargé appllication et que je rentre la commande change_suff il me met commande inconnu.donc soucis, pourtant j'ai procédé de la m^me façon.

IL ya donc un truc qui ne fonctionne pas ou quelque chose que j'ai mal fait.

 

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à toutes et tous,

 

(gile), je me permet.

 

philous, c'est normal, tu n'as pas la dernière parenthèse !

 

 (defun c:change_suff (/ old new name)
(vl-load-com)
(if (and
(setq old (getstring "\nEntrez le suffixe à changer: "))
(setq new (getstring "\nEntrez le nouveau suffixe: "))
)
(vlax-for b (vla-get-blocks
(vla-get-ActiveDocument (vlax-get-acad-object))
)
(setq name (vla-get-Name b))
(if (wcmatch name (strcat "*" old))
(vla-put-Name
b
(vl-string-subst
new
old
name
(- (strlen name) (strlen old))
)
)
)
)
)
(princ)
[surligneur] )[/surligneur] 

 

Sinon, tu pouvais laisser les deux lisps sur le même fichier et taper en ligne de commande, soit change_pref , soit change_suff ou encore mettre ces commandes sur un bouton radio si elles te sont vraiment utiles,...

 

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Bjr lili2006,

 

Tt d'abord merci, effectivement j'avais oublié parenthèse.

Intéressant aussi ton idée de mettre les 2 lisps sur un seul fichier, mais ne connaissant rien ds la programmation de lisp comment tu fais pour rajouter une ligne de commande de ce type " ligne de commande, soit change_pref , soit change_suff".

Je te remercie d'avance

 

A +

 

Phil

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

comment tu fais pour rajouter une ligne de commande de ce type " ligne de commande, soit change_pref , soit change_suff".

 

Je ne comprends pas la question.

Si le nom d'une fonction LISP définie par defun commence par c:, ce qui suit c: peut être utilisé comme une commande AutoCAD.

 

Pour plus de précisions vois ce sujet

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

  • 3 ans aprè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 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é