x_all Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 Toujours à la recherche du clip perdu, ça fait un petit moment que je cherche à simplifier les commandes échelles et rotation avec référence. Quand on doit faire ça (80% de mes rotation sont suivant ce mode opératoire) j'ai une selection d'objet, j'appelle rotation, je clique 1 point, je tape R, je reclique mon point, puis le point de départ, et le point d'arrivée. J'aimerai appeler RR (pour rotation reférence) cliquer un point puis le départ et l'arrivée, mais je bloque sur le rapel du point cliqué précédemment je partais sur un truc du style: (defun c:rr () (command "rotation" "p" " " "r" )) mais bon... il faudrait récupérer le point et ça doit pas être si simpliste... quelques trucs sur autocad
VDH-Bruno Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 Bonjour, J'aimerai appeler RR (pour rotation reférence) cliquer un point puis le départ et l'arrivée, mais je bloque sur le rapel du point cliqué précédemment Un truc comme ça?(command "rotation" "p" "" pause "r" (getvar 'lastpoint) pause pause) A+ Apprendre => Prendre => Rendre
zebulon_ Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 Bonjour, le dernier point cliqué se récupère avec @. Pas seulement en lisp ou avec des macros, mais aussi quand autocad nous demande de cliquer un point. (defun c:rr () (command "_rotate" (ssget) "" pause "_r" "@" pause pause)) si on veut la dernière sélection plutôt qu'une sélection à faire (defun c:rr () (command "_rotate" "_p" "" pause "_r" "@" pause pause)) Cela peut aussi s'écrire avec des macros AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 Grillé de 5 minutes... Mais bon, ce n'est pas inutile. Le @, c'est quand même plus simple que le (getvar 'lastpoint) :) Les utilisateurs de LT préféreront le @ de toute manièrePar ailleurs, ça ne serait peut être pas inutile de rajouter un "_non" avant le "@" pour ne pas être pollué par un accrochage aux objets (defun c:rr () (command "_rotate" "_p" "" pause "_r" "_non" "@" pause pause)) AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
-Olivier- Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 Hello,Cela n'a pas vraiment sa place dans cette rubrique mais voici une version qui fonctionne dans les 2 sens : (defun c:rr (/ ss) (command "_rotate" (if (or (setq ss (ssget "_I" )) (setq ss (ssget ))) ss) "" pause "_r" "@" pause pause) (princ) ) Dédicace à VDH-Bruno car pour une fois il ne la pas proposée. Olivier
zebulon_ Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 Dans les 2 sens, ça veut dire qu'il y a soit une sélection implicite (des objets sélectionnés avant de lancer la commande) qu'on récupère avec (ssget "_I"), soit il n'y a pas de sélection implicite et il faut sélectionner les objets avec (ssget) C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
x_all Posté(e) le 21 novembre 2014 Auteur Posté(e) le 21 novembre 2014 un peu à la bourre charrette oblige... je n'ai pas réussi à faire marcher les versions de bruno et zebulon, mais celle de d'olivier marche parfaitement. Cela n'a pas vraiment sa place dans cette rubrique pourquoi? c'est pas pour débutant?C'est vrai qu'a la lecture de ton code c'est pas trivial non plus... il y a de quoi facilement se prendre les pieds dans le tapis entre les "@" (j'avais pas percuté) les _ ... ..., chose que je faisais copieusement... en tous cas, merci à tous pour vos réponses et idées, je doute pas que je pourrai adapter cette commande à tout ce que je fait avec référence merci tout plein!!!!! quelques trucs sur autocad
zebulon_ Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 je n'ai pas réussi à faire marcher les versions de bruno et zebulon, mais celle de d'olivier marche parfaitement. Tu t'es mal démerdé car elles sont identiques à quelques détails près. Je pense que le "_non" avant le "@" n'est pas inutile sinon cela risque de tourner autour d'un mauvais point en cas d'accrochage aux objets. Olivier est hors sujet compte tenu de la sélection qui devait être la sélection précédente donc "_p" AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
-Olivier- Posté(e) le 21 novembre 2014 Posté(e) le 21 novembre 2014 @X_all,Les versions de Zebulon fonctionnent parfaitement. As tu bien sélectionné les objets avant de lancer la commande ? @Zebulon,Effectivement j'ai oublié le "_non", j'ai d'ailleur copié sur toi pour le "@". :P Désolé pour le hors sujet, mais faire la sélection en premier me paraissais pas naturel. :D Par compte la commande est moi facile à décripter. Olivier
VDH-Bruno Posté(e) le 24 novembre 2014 Posté(e) le 24 novembre 2014 Bonjour, (defun c:rr (/ ss) (command "_rotate" (if (or (setq ss (ssget "_I" )) (setq ss (ssget ))) ss) "" pause "_r" "@" pause pause) (princ) ) Dédicace à VDH-Bruno car pour une fois il ne la pas proposée. Merci à zebulon_ d'avoir complété la réponse avec l'usage du symbol @, et merci à Olivier pour le clin d'oeil (j'avoue y avoir pensée mais j'étais attendu en réunion et je n'ai pas pris le temps de finasser ma réponse) Pour la sélection implicite personnellement je l'aurais bien vu comme ceci ;) :(cond ((ssget "_I")) ((ssget))) Mais comme souligné par zebulon_, pour coller un peu plus à la demande il est possible d'adapter le principe pour une sélection précédente au lieu d'une sélection implicite..(cond ((ssget "_P")) ((ssget))) A+ Bruno Apprendre => Prendre => Rendre
VDH-Bruno Posté(e) le 24 novembre 2014 Posté(e) le 24 novembre 2014 Re, Pour compléter/pinailler et faire également écho à une discussion que nous avons déjà eu ici...Au sujet de la prise en compte des sélections "grippés", la fonction native lisp (ssgetfirst) est 2 fois plus rapide au benchmark que la sélection implicite (ssget "_I"). En fait l'usage de l'expression (ssget "_I") se justifie lorsque l'on souhaite appliquer un filtre de sélection sur les objets grippés. Donc dans le cas présent pour être "puriste" la sélection implicite pourrait s'établir comme ceci:(cond ((cadr(ssgetfirst))) ((ssget))) A+ BrunoPs: N'ayant pas de réunion cette fois ci, j'ai pris le soin de finasser, désolé ;-) Apprendre => Prendre => Rendre
x_all Posté(e) le 25 novembre 2014 Auteur Posté(e) le 25 novembre 2014 Indépendamment des tous ces pinaillages, dont la lecture m'apprend des choses, je vous remercie encore car je me sers de cette rotation 300 fois par jour :) je me demandais bien d’où sortait ce "_I", ... et même si je benchemarque pas des masse , j'en prend bonne note... quelques trucs sur autocad
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