Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Je'ai souvent à insérer un bloc contenant un code de 3 ou 4 chiffres (exemples: J1-1. J1-2,... P6-1, P6-2,...).

 

Pour me faciliter la tâche, j'ai divisé le code en 2 attributs (P1- et 1). À partir de ces 2 attributs, je veux créer une macro qui me permettra de définir le P1- pour toutes les autres insertions suivantes et d'incrémenter l'autre attribut de 1 (à partir de 1).

 

Pour l'instant, j'ai seulement trouvé la partie de macro qui sert à incrémenter:

*^C^Cattdia;0;-inserer;codetest;\;;;$M=$(getvar,useri1);;modifvar;useri1;$(+,$(getvar,useri1),1);attdia;1;

 

J'ai aussi une macro qui me sert à réinitialiser l'incrémentation à 1.

^C^Cmodifvar;useri1;$(!=,$(getvar,useri1),1);1;

 

Mais le tout n'est pas très au point!

 

Donc ma question:

Comment stocker du texte comme $(getvar,useri1)???

ou

Pouriez-vous m'indiquer un tutorial très détaillé sur le Diesel ....?

 

Merci

La seule que je sais, c'est qu'on en sait jamais assez. :)

Trisha

 

Posté(e)

Salut Trisha

 

Tu as quel version d'AutoCAD?

Car dans les express il y a "tcount"

 

bonne soirée

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut,

 

Comment stocker du texte comme $(getvar,useri1)???

 

avec USERS1

 

les variables userI1 à userI5 servent à stocker des nombres entiers (Integer)

 

les variables userR1 à userR5 servent à stocker des nombres réels (Real)

 

les variables userS1 à userS5 servent à stocker des chaines de caractère (String)

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

Posté(e)

J'utilise la version LT 2004

 

Dans l'aide, ils ne parlent que de USERI et de USERR.

Quand j'incorpore USERS dans ma macro, je recoit un message d'erreur:

"Variable inconnue. Tapez MODIFVAR ? pour la liste des variables."

 

Je pense que USERS n'existe pas dans LT 2004.

 

:( Est-il possible de le remplacer?

:mad: C'est vraiement pas évident de programmer dans LT!

 

Merci de votre aide!

 

Trisha

La seule que je sais, c'est qu'on en sait jamais assez. :)

Trisha

 

Posté(e)

Je pense que USERS n'existe pas dans LT 2004.

 

En effet USERS n'existe pas, mais USERS1, USERS2, USERS3, USERS4 et USERS5 ... EXISTENT!

 

Par contre USERI de 1 à 5 et USERR de 1 à 5 n'existent pas sous LT, pourquoi? Parce que je pense quel le diesel n'interprète que les chaines et que seules les variables UserS (String de 1 à 5) fournissent de tel valeurs.

 

Donc utilise dans tes macros, une des variables (ou plusieurs) UserS (1-5)

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

Posté(e)

Je confirme dans les versions LT, curieusement pas de USERS1 à 5 :P

 

Par contre on peut initialiser toute sorte de variables "PERSO" à l'aide de :

 

SETENV pour créer une variable

GETENV pour lire une variable

 

Il semblerait qu' AutoCAD stocke ces variables dans la base de registre ! ce qui fait que la variable reste toujours active et conserve sa dernière valeur !

 

On peut aussi utiliser la variable MODEMACRO pour stocker des valeurs ! Cette variable est systématiquement réinitialisée à la fin d'une session.

 

ATTENTION GETENV et SETENV n'existe que dans les versions LT !!! :exclam: ce qui rend incompatible ces macros avec des versions complètes :mad:

 

Je conseille aussi d'activer la variable MACROTRACE pour suivre les MACROS contenant du DIESEL et détecter plus facilement les erreurs ! ;)

 

Christian

 

[Edité le 15/5/2007 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Je confirme dans les versions LT, curieusement pas de USERS1 à 5

 

Donc c'est totalement l'inverse de ce que j'ai énoncé :(

J' étais persuadé du contraire, merci de ta confirmation en tout cas

 

Je vais essayer de le retenir pour les prochaines fois :P , j'ai rarement travaillé avec des LT... malgré que j'ai créé quelques macros à la demande d'utilisateurs.

 

NB: SETENV et GETENV existent par contre sous le format lisp en version pleine (setenv) (getenv), bien sur cela change la syntaxe de la macro, mais elle peut être adapté pour une version pleine.

 

[Edité le 15/5/2007 par bonuscad]

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

Posté(e)

Salut!

 

:casstet: Bon, selon ce que j'ai lu, vos 2 premières réponses semblent contradictoires...

MAIS, j'ai réalisé (après quelques essaies) que vous avez tous les 2 raison!

 

Selon mes observation, j'ai conclu que USERI1... et USERR1... n'existent que s'ils sont utilisés avec GETVAR. USERS1... n'est valide que s'il est utilisé avec GETENV.

 

Donc l'un de vous a fait sa constatation avec GETVAR et l'autre avec GETENV. Vous avec tous 2 PARTIELLEMENT raison.

 

Ça reste encore à vérifier mais c'est ce que j'ai compris du principe.

 

:) J'ai donc réussi à terminer ma macro en créant 2 boutons:

 

un bouton de "RESET" qui me permet de choisir ma 1iere valeur (USERS) et de rétablir la 2ieme (USERI) à 1:

^C^Cmodifvar;useri1;$(!=,$(getvar,useri1),1);1;setenv;users1;

 

Le 2ieme bouton associe la valeur USERS à un attribut et incrémente à chaque fois la valeur USERI de l'autre attribut, le tout en boucle:

*^C^Cattdia;0;-inserer;codetest;\;;;$M=$(getvar,useri1);$(getenv,users1);modifvar;useri1;$(+,$(getvar,useri1),1);attdia;1;

 

Je l'ai montré à mon collègue de travail qui a soulevé un point TRÈS intéressant (et très utile pour notre travail aussi):

 

Comment incrémenter alphabétiquement de A à Z,, en continuant avec des minuscules et des double majuscules (AA, BB, CC) lorsqu'il y a plus de 26 incrémentations par code à entrer ???

 

J'ai peut-être mon idée là-dessus (en utilisant les codes ASCII) mais je serais intéressée à entendre votre opinion.

 

Merci pour votre aide.

:) C'est toujours un plaisir de collaborer avec vous!

 

Trisha

 

 

[Edité le 15/5/2007 par Trisha]

La seule que je sais, c'est qu'on en sait jamais assez. :)

Trisha

 

Posté(e)

voici une idée de MACRO qui permettrai d'accéder à des lettres ou tout autres caractères :

 

^C^Csetenv;ALPHABET;"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,";_-text;\;;$m=$(index, [surligneur] 5[/surligneur],$(getenv,ALPHABET));

 

Ici l'exemple affichera un texte correspondant au 6e caractère de la liste dont les éléments sont séparés par une virgule. ( 0 = 1er élément )

 

qu'en dis-tu ?

 

Christian

 

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

AH ! j'oubliai, tu n'es pas obligé de passer par la commande MODIFVAR pour accéder à tes variables systèmes.

 

Depuis la version 14 (je crois) toutes les variables systèmes sont considérées comme une COMMANDE.

 

ça réduit la longueur de ta MACRO et ça la rend plus lisible... ;)

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Merci beaucoup!

 

J'ai bien apprécié la variable ALPHABET.

 

Voici le résultat de la macro incrémentielle alphbétique:

*^C^Csetenv;ALPHABET;A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,AA,BB,CC,DD,EE,FF,GG,HH,II,JJ,HH,KK,LL,MM,NN,OO,PP,QQ,RR,SS,TT,UU,VV,WW,XX,YY,ZZ;attdia;0;-inserer;codetest;\;;;$M=$(index,$(getvar,useri1),$(getenv,ALPHABET));$(getenv,users1);modifvar;useri1;$M=$(+,$(getvar,useri1),1);attdia;1;

 

J'ai dû supprimer les guillemets dans la variable ALPHABET car la première valeur s'affichait "A

 

J'ai bien sûr créé une commande pour rétablir la valeur de useri1 à 0, un peu comme la commande que j'utilise pour rétablir mon incrémentation numérique (qui lui, doit être rétabli à la valeur 1):

 

^C^Cmodifvar;useri1;$(!=,$(getvar,useri1),0);0;setenv;users1;

 

 

 

 

 

 

La seule que je sais, c'est qu'on en sait jamais assez. :)

Trisha

 

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é