Problème de détection de commande avec alias

Problème de détection de commande avec alias

Anonymous
Non applicable
969 Visites
11 Réponses
Message 1 sur 12

Problème de détection de commande avec alias

Anonymous
Non applicable

Bonjour, 

 

Je me suis récemment plongé dans l'univers des commandes d'autocad afin d'en créer et de personnaliser au mieux mon interface.

Je vais essayer d'être le plus clair possible !

 

Je travail sous autocad map 3D 2012

J'ai créé une nouvelle commande (servant au nettoyage d'un dessin, c à d contrôle, purge, etc...), je lui ai affecté en guise de nom d'affichage de la commande "NETTOYAGE".

Si je place cette commande dans les raccourcis clavier et que je lui affecte comme touches (par exemple) "MAJ + N" et que par la suite je la teste, elle marche parfaitement bien.

J'ai donc voulu essayer de lui attribuer un alias. J'ai ouvert le fichier pgp dédié aux alias de commandes, et j'ai donc écrit une ligne sous cette forme :

[mon alias],*[nom d'affichage de ma commande] => NET,*NETTOYAGE

J'ai écrit cette ligne en dessous de la rubrique "Alias de commande définis par l'utilisateur", j'ai enregistré.

 

J'ai réinitialisé le fichier pgp (commande REINIT), et quand je tape "NET", il m'affiche bien l'alias avec le nom de la commande (soit "NET (NETTOYAGE)") mais quand je tape sur entrée, il me dit que la commande est inconnue.

 

J'avoue ne pas voir ce qu'il me manque ou ce que j'ai fait de faux pour que ça marche.

J'espère avoir été clair dans mes explications !

 

D'avance merci !

 

Baptiste

0 J'aime
Solutions acceptées (1)
970 Visites
11 Réponses
Replies (11)
Message 2 sur 12

Anonymous
Non applicable

Bonjour bapt.r,

 

Désolé de te décevoir, regarde ici.

 

Olivier

0 J'aime
Message 3 sur 12

Anonymous
Non applicable

Et zut, c'est ce que je redoutais !

Merci beaucoup pour ta réponse rapide, je regarderai un peu comment marche les lisp, mais bon, déjà que je pige pas tout sur autocad (j'ai moins d'1 an d'expérience...) je vais me contenter du bon vieu MAJ+N dans un premier temps 😉

 

Baptiste

0 J'aime
Message 4 sur 12

Anonymous
Non applicable

Tu peux toujours poster ta macro pour une traduction rapide.

Si tu as réussi à faire la macro, il n' y a pas de raison que tu n'arrive pas à faire la même chose en lisp.

 

Olivier

0 J'aime
Message 5 sur 12

Anonymous
Non applicable

En fait c'est une macro que j'ai trouvé sur internet, et que j'ai très légèrement modifié.

J'ai compris les principes de bases (style les ; pour entrée, le ^c^c etc...) mais je n'ai pas encore les connaissances en terme de langage.

 

La voici : ^c^c-calque;ac;*;;^c^c-calque;d;*;;^C^C_laythw;^c^c-PURGER;to;;n;^C^C-scalelistedit;Redefinir;oui;Quitter;^C^Ccontrole;o;^c^cz;et;^c^c

 

Merci encore de prendre le temps de m'aider 🙂

0 J'aime
Message 6 sur 12

Anonymous
Non applicable

bapt.r,

 

Voici la version lisp.

 

(defun c:nettoyage ()
  (command "-calque" "AC" "*" "")
  (command "calque" "d" "*" "")
  (command "_laythw")
  (command "-purger" "to" "" "n")
  (command "-scalelistedit" "redefinir" "oui")
  (command "controle" "o")
  (command "cz" "et")
  (princ)
  )

 

Je n'ai pas pu tester jusqu'au bout car la commande cz est déjà défini chez moi.

 

Essaye sur un fichier test. Si problème, poste ce qui affiché en ligne de commande (toutes les lignes depuis le lancement de la commande)

 

Olivier

0 J'aime
Message 7 sur 12

Anonymous
Non applicable

Voici une version un peu plus longue pour masquer les actions en ligne de commande.

La commande ne s'appelle plus NETTOYAGE mais NET pour que tu puisse l'appeler plus facilement.

 

(defun c:net (/ *error* echo)
  (defun *error* (errmsg)
    (setvar "cmdecho" echo)
    (princ errmsg)
    )
  (setq echo (getvar 'cmdecho))
  (setvar "cmdecho" 0)
  (command "-calque" "AC" "*" "")
  (command "calque" "d" "*" "")
  (command "_laythw")
  (command "-purger" "to" "" "n")
  (command "-scalelistedit" "redefinir" "oui")
  (command "controle" "o")
  (command "cz" "et")
  
  (setvar "cmdecho" echo)
  (princ)
  )

 Pour le chargement, regarde ici.

 

Olivier

0 J'aime
Message 8 sur 12

Anonymous
Non applicable

C'est super sympa, merci !

Je n'ai malheureusement pas le temps de regarder tout ça dans le détail aujourd'hui, mais je te dirai rapidement ce que ça donne !

 

Baptiste

0 J'aime
Message 9 sur 12

Anonymous
Non applicable

La commande marche, enfin je l'ai très légèrement modifiée parce que telle que tu me l'as mis elle bloque au niveau de la liste des échelles :

quand il arrive sur la commande scalelist, il me laisse le choix entre redéfinir, ajouter, supprimer, ou quitter. Et ça bloque à ce niveau là : si je quitte, ça ne contrôle pas, si je supprime ou que je redéfinie, ça n'avance pas le processus. 

 

Du coup, vu que cette étape est peut être celle qui m'importe le moins dans la démarche que je souhaite faire, je l'ai virée. Si jamais tu connais le problème je reste cependant preneur !

Sinon, la commande cz était inconnue, j'ai du mettre "zoom" et là ça marche niquel !

 

Encore merci !

 

Baptiste.

0 J'aime
Message 10 sur 12

Anonymous
Non applicable
Solution acceptée

Chez moi ta macro plantais au niveau de scaleedit.

 

Donc essaye avec ça :

 

(defun c:net (/ *error* echo)
  (defun *error* (errmsg)
    (setvar "cmdecho" echo)
    (princ errmsg)
    )
  (setq echo (getvar 'cmdecho))
  (setvar "cmdecho" 0)
  (command "-calque" "AC" "*" "")
  (command "calque" "d" "*" "")
  (command "_laythw")
  (command "-purger" "to" "" "n")
  (command "-scalelistedit" "redefinir" "oui" "quitter")
  (command "controle" "o")
  (command "zoom" "et")
  
  (setvar "cmdecho" echo)
  (princ)
  )

 

Olivier

 

PS : Si la réponse te conviens, accepte le message comme réponse à ton problème, cela simplifira les prochaine recherche.

J'accepte aussi le kudos. Smiley clignant de l'œil

 

 

Message 11 sur 12

Anonymous
Non applicable

Yep ça marche bien, merci beaucoup !

 

Merci pour le point éthymologique de kudos, me coucherai encore moins bête ce soir haha !

 

Tant qu'à abuser de tes connaissances, aurais tu quelques liens bien sympthiques permettant d'en apprendre plus sur la création des lisp ? Car même si j'ai compris la démarche, je ne sais quasi rien de la conception, et surtout des nombreuses variables, commandes en tout genre qu'on peut utiliser pour se simplifier la tache. j'ai déjà trouvé quelques liens ou je peux piocher des informations ci et là, mais pas de "tutoriel" vraiment complet. Bon j'avoue j'y ai pas passé beaucoup de temps non plus o:-)

 

Cordialement,

 

Baptiste

0 J'aime
Message 12 sur 12

Anonymous
Non applicable

Sur ce forum tu ne trouveras pas grand chose en français.

 

En revanche tu peux regarder ces différents lien.

 

https://app.box.com/s/f986ua2wp3abncurrd45

 

http://cadxp.com/topic/14323-charger-un-lisp/

 

http://cadxp.com/topic/16797-lediteur-visual-lisp/

 

http://cadxp.com/topic/28642-arguments-et-variables/

 

Olivier

PS : Merci pour le kudos

0 J'aime