Aller au contenu

Macro commande Copier et autres infos (Résolu)


Messages recommandés

Invité austin57
Posté(e)

Bonjour à tous,

 

Après avoir passé pas mal de temps à parcourir les forums de CadXP, je me décide enfin à poster mon premier message.

 

Grâce à vous,je viens de découvrir les joies des macro-commandes et de diesel. Toutefois, vous vous doutez que c'est loin d'être simple.

 

Aujourd'hui, j'ai une question sur laquelle je bloque. Je souhaite faire un bouton qui copie un objet puis reprend cette copie pour en faire une autre avec le même incrément.

 

Exemple.

 

J'ai un trait A. Je sélectionne l'objet, je définis un point de base pour le déplacement et un incrément, par exemple 50 suivant X. Cela crée un trait B. Si je tape "entrée" je veux que ce trait B soit copié de la même façon. C'est à dire, crée un trait C à 50 suivant X du trait B et ainsi de suite, un trait D à 50 suivant X du trait C....

 

Pour l'instant, j'utilise cette macro -reseau;\;R;1;\;\; mais cela m'oblige à connaître à l'avance le nombre d'entité que je souhaite, ce qui n'est pas toujours évident dans les cas que je rencontre. Et en plus, je suis limité à l'horizontal ou à la verticale (deux boutons différents)

 

Autre question sans rapport, j'ai crée une macro pour tracer 2 droites perpendiculaire à un point donné.

^C^C_xline;h;\; (setq x (getvar "LASTPOINT"));^C^C_xline;v;!x;;

Si cela fonctionne mais lorsque je rappelle la dernière commande en appuyant sur "Entrée", il ne semble vouloir refaire que la dernière partie ^C^C_xline;v;!x;; Je suis donc obligé de re-cliquer sur le bouton pour relancer correctement la fonction. Une idée pour corriger le problème?

 

Merci d'avance pour toutes vos réponses.

 

[Edité le 17/1/2011 par austin57]

Posté(e)

Bonjour,

 

 

Pour ta 1ère question, pas évident avec une simple macro...

 

La macro suivante fonctionne :

*^C^C_copy;_l;;d;\;;

Mais il faut que l'objet à copier soit le dernier créé dans le dessin, et il faut entrer les valeurs de déplacement X,Y ou distance

 

 

Sinon on peut créer deux macros :

Une à utiliser à la place de la commande copier standard...

^C^Cselect;q;\id;\scu;@;;_copy;p;;d;\scu;p

Et une autre pour répéter la copie...

*^C^C_copy;_l;;d;;r^Z

qui se répète tant qu'on appuie sur Entrée.

Posté(e)

Pour ta 2e question, ce qui se passe est normal : un appui sur Entrée ou Espace répète la dernière commande sans aucune option (la commande Droite dans ton cas), pas la dernière macro.

 

 

Tu peux faire une macro qui se répète automatiquement :

*^C^C_xline;h;\;;v;@;;

Le LISP que tu as mis dans ta macro n'est pas indispensable.

 

 

Sinon, comme tu utilises déjà du LISP dans tes macros, autant créer carrément une nouvelle commande avec LISP, que tu pourras alors répéter avec Entrée comme n'importe quelle commande standard :

^C^C(cond ((null C:croix) (defun c:croix()(setq a (getpoint "Choix du point:"))(command "_xline" "h" a "")(command "_xline" "v" a "")(princ)))) croix

Invité austin57
Posté(e)

Merci pour votre réponse; cela fait exactement ce que je souhaitais.

 

Toutefois, j'ai remarqué une chose avec les lisp. Lorsque j'execute un lisp, celui-ci fait l'action. Mais moi, j'aimerai qu'il boucle tant que je n'ai pas quitté la commande explicitement avec la touche échap ou entrée. (léquivalent du *C^C^, j'ai essayé de l'ajouter, mais ça ne fonctionne pas et l'instruction REPEAT non plus, peut-être l'ai-je mal utilisé.)

 

Encore merci pour ces dernières précisions.

 

Cordialement,

Posté(e)

Bonsoir,

 

Avec (repeat) il faut connaîte à l'avance le nombre de fois qu'on veut répéter les actions.

C'est plutôt (while) qu'il faut utiliser :

 

^C^C(cond ((null C:croix) (defun c:croix()(while(setq a (getpoint "Choix du point:"))(command "_xline" "h" a "")(command "_xline" "v" a "")(princ)))));croix

Invité austin57
Posté(e)

Bonjour,

 

Aprés essai, c'est exactement le fonctionnement que je souhaitais. Bluffant. Un grand merci à toi Bryce. Et meilleurs voeux pour l'année 2011 :)

 

A bientôt sur les forums.

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é