• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Mettre à jour l'expression du diesel dans les champs de données

  • Auteur du sujet Auteur du sujet x11start
  • Date de début Date de début

x11start

Guest
dans l'entreprise nous utilisons un nom pour les fichiers des différents clients, défini de cette manière:

mario rouge 24-900.dwg

dans laquelle
- nom du client: peut avoir une longueur variable,
- Année
- Oui. Pas de progression du contrat

pour les différents dessins liés à ce client, j'ai inséré des champs de données avec une expression diesel qui m'extrapole automatiquement l'année et la commission n°:
[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),9),6)

fondamentalement, il me prend le nom du fichier, extrait 6 caractères de la position 9 du bas.

Le problème, c'est que maintenant nous approchons du 1000... qui m'ordonne le résultat : serait "4-1000" au lieu de "24-1000".

J'ai résolu en incluant un si dans l'expression diesel qui devient:
[imath](si[/imath](sous-marin)[imath](Getvar, Dwgname)[/imath](-,[imath](coupé,[/imath](Getvar, dwgname); 7)[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](coupé,[imath](Getvar, dwgname);[/imath](sous-marin)[imath](Getvar, Dwgname)[/imath](-,[imath](coupé,[/imath](getvar, dwgname),9),6)

Je veux dire :

$(si, -> si ...
[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),7),1)"1", -> le 7 crt (pour seulement 1 crt) de la fin du nom du fichier est = "1".
[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),10), -> prendre de la 10ème crt pour 7 crt (comité > à 1000)
[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),9),6) -> Sinon prendre 9° crt pour 6 crt (comité < à 1000)

) - > ferme si


... mon problème est que je devrais remplacer tous ces champs de données dans tous les dessins...

selon vous pouvez créer un lisp ou un script qui peut « trouver » et « remplacer » une expression dans un champ de données ?
 

Pièces jointes

J'ai commencé à partir du programme publié dans le forum "elimina hach from blocks", modifié pour supprimer le texte avec hasextensiondictionary=-1, recherché par exemple pour ajouter un champ avec expression diesel au dwg, fusionné tout, créé le fichier. à vous le changer pour l'adapter à votre besoin.
 

Pièces jointes

Désolé si je n'ai pas répondu tout de suite. En ces jours, je n'ai plus utilisé le PC.

Je vais jeter un coup d'œil et je vous le ferai savoir.

Merci beaucoup !
 
J'ai résolu avec une seule commande qui, en cliquant sur le champ de texte (ou même sur un texte normal), insère la chaîne diesel souhaitée.
J'ai pratiquement fait un petit lis avec seulement un (et très long!) ligne:

(vlax-put(vlax-ename->vla-objet (car (entsel))'textstring"%\\\acdiesel [imath](si[/imath](sous-marin)[imath](Getvar, Dwgname)[/imath](-,[imath](coupé,[/imath](Getvar, dwgname); 7)[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),10),7)[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),9),
(6)

ps. si le texte à varier est à l'intérieur d'un bloc, je n'ai qu'à entrer les blocs de l'éditeur et lancer le lisp à partir de là, pour sélectionner le champ de texte à changer.

Merci de votre aide.
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut