bonuscad Posté(e) le 30 avril 2004 Posté(e) le 30 avril 2004 Pour les anciennes versions d'autocad, des lisp avaient été développer pour recréer par exemple la commande "RACCORD" qui stockaient les rayons précédemment saisis dans un MNU pour pouvoir les rappeler à tout moment.L'idée etait bonne mais necessitait l'emploi d'un MNU. (un peu lourd)Je vous propose la même démarche en utilisant les menus contextuels.Le code suivant crée une commande MYOFFSET identique à DECALER mais stoke les valeur dans le menu contextuel (paramétré à 10 valeurs, peut être changé)Vous pouvez envisager la même chose pour la commande RACCORD ou CHAMFREIN. (defun c:myoffset ( / mess_offset key_offset tmp_str ) (if (or (not (wcmatch (getvar "USERS5") "Par/*")) (zerop (strlen (getvar "USERS5")))) (progn (setvar "USERI5" 0) (setvar "USERS5" "Par" )) ) (setq mess_offset (getvar "USERS5")) (initget 6 "Par _Through") (setq key_offset (getdist (strcat "\nSpécifiez la distance de décalage ou [" mess_offset "]<" (if (> (getvar "OFFSETDIST") 0) (rtos (getvar "OFFSETDIST")) "Par" ) ">:" ) ) ) (if (null key_offset) (setq key_offset (getvar "OFFSETDIST"))) (cond ((and (/= key_offset -1.0) (/= key_offset "Through")) (if (or (not (wcmatch (getvar "USERS5") (strcat "*/" (rtos key_offset 2 4) "/*"))) (not (wcmatch (getvar "USERS5") (strcat "*/" (rtos key_offset 2 4) "*"))) ) (progn (setvar "USERS5" (strcat (getvar "USERS5") "/" (rtos key_offset 2 4))) (setvar "USERI5" (1+ (getvar "USERI5"))) (cond ((> (getvar "USERI5") 10) (setvar "USERI5" 10) (setq tmp_str (substr (getvar "USERS5") 5)) (while (/= (substr tmp_str 1 1) "/") (setq tmp_str (substr tmp_str 2)) ) (setvar "USERS5" (strcat "Par" tmp_str)) ) ) ) ) (command "_.offset" key_offset) ) (T (command "_.offset" "_Through") ) ) (prin1)) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 30 avril 2004 Posté(e) le 30 avril 2004 Super :thumbup: Juste une chose, mais comme je vois que tu traites des chaines, ca risque d'être compliqué,... ..., n'as-tu pas pensé à ceux qui préfère le clavier au menu contextuel avec un raccourci clavier, du type index de 0 à 9 ? Sinon, super, of course. Tu peux expliquer un peu le concept de "USERI5" et "USERS5" et de WCMATCH, dans ce cas, steup. ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Pako Posté(e) le 30 avril 2004 Posté(e) le 30 avril 2004 Je ne vois pas trop bien comment ce la peut-être utile à l'utilisateur : Command:MYOFFSETSpécifiez la distance de décalage ou [Par/5/10/67/7/8/9/11/11/1/33.6179]<33.6179>:10 Il y pas grand chose de différent que le commande original OFFSET, sauf qu'on peut voir les anciennes distances....mais comment ? A+ l'ACADien ! http://img124.exs.cx/img124/7999/start.gif
LFA Posté(e) le 1 mai 2004 Posté(e) le 1 mai 2004 Salut a tousquestion idote, tu vois ou les anciennes distance tester sur autocad RIENtester sur Intellidesk RIEN a+ FAITE COMME, DONNER DES SOUS Laurent Falla Venez visiter mon site, c' est gratuit :) http://www.lfaconsulting.com'>
LFA Posté(e) le 1 mai 2004 Posté(e) le 1 mai 2004 Salut a tousquestion idiote, tu vois ou les anciennes distances tester sur autocad RIENtester sur Intellidesk RIEN a+ FAITE COMME, DONNER DES SOUS Laurent Falla Venez visiter mon site, c' est gratuit :) http://www.lfaconsulting.com'>
Pako Posté(e) le 1 mai 2004 Posté(e) le 1 mai 2004 FAITE COMME, DONNER DES SOUS ça pourrait être un bonne idée pour aider la communauté ! l'ACADien ! http://img124.exs.cx/img124/7999/start.gif
bonuscad Posté(e) le 5 mai 2004 Auteur Posté(e) le 5 mai 2004 Cette routine n'apporte pas grand chose. Je voulais juste monter un emploi un peu particulier des menus contextuesl ("clik droit" pour ceux qui n'ont rien pu observer). Elle peut être utile pour ceux qui font des contructions avec "DECALER" de façon répétitive en employant souvant les mêmes paramètres, par ex: un coup on décale avec 4.5 puis 7.125 puis 10.3337 et de nouveau avec 4.5 (que l'on rappelle avec click droit et qu'on sélectionne dans la liste). Cette liste est parametrée avec 10 éléments (peut être changée), pour cela j'utilise la variable USERI5 (valeur entière) pour stocker le nombre d'élément concaténé dans la variable chaine.Je stocke les paramètre rentrés à l'aide de la variable USERS5 (valeur chaîne caractère) que je concatène au fur et à mesure. Pour m'assurer que le paramètre saisie ne figure 2 fois ou plus dans la chaine de caractères, car il est inutile de stocker plusieur fois le même paramètre, j'utilise la fonction (wcmatch) pour vérifier que cette chaine n'existe pas déjà.L'emploi et similaire au joker de sélection de fichier dans l'explorateur:* = n'importe quel caractère dans la chaine? = n'importe quel caractère à la position n dans la chaineet d'autre comme # @ . ~ (voir l'aide de wcmatch) NB: l'emploi des variables USER?? aurait put être remplacé par des variables non déclarées en global ou local:(defun C:XX ( / var1 var2 ....)) var1 et var2 déclarées, donc mise à nil à la fin de l'execution (non conservée)(defun C:XX ( / )) aucune variable déclarée, la valeur des variables utilisée sera conservée à la fin de l'execution. Voila pour ceux qui n'aurait pas compris la démarche. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Messages recommandé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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant