fauxsuisse Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Bonjour tout le monde, J'ai un petit soucis que j'avais déjà posté et d'on à ma donnée une bonne réponse mais je n'arrive plus à mettre la main dessus. Voilà j'ai plusieurs blocs que j'aimerai tourner un quart de tour 90° à partir de leur point d'insertion et ces bloc ne sont pas tous tournés de la même manière, en gros j'aimerai sélectionner un certain nombres de blocs et qu'en une fonction ils tournent tous de 90° tout en gardant leur position dans le dessin, je l'avais déjà mais je sais plus comment :(
patrick.albinet Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Cov edition/blocs/rotationIl suffit ensuite de choisir les blocs qu'on veut faire pivoter
fauxsuisse Posté(e) le 17 juillet 2012 Auteur Posté(e) le 17 juillet 2012 Cov edition/blocs/rotationIl suffit ensuite de choisir les blocs qu'on veut faire pivoter J'ai pas tout compris ta réponse mais il me semble que ce n'est pas ce que je cherche, je ne veux pas modifier l'édition du bloc je veux juste sélectionner par exemple un bloc d'une caméra qui est posé à différent endroit du plan et ces caméras n'ont pas toutes la même rotation mais je voudrai à toute leur donner 10° du plus de ce qu'elles ont, par exemple les caméra positionner à 210° deviennent 220° les 90° deviennent 100° tout en gardant leur position d'insertion d'origine, je l'avais déjà fait avec un lisp mais je ne sais plus de qui était ce lisp
patrick.albinet Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Avec cette fonction ca marche : tu selectionnes les blocs, tu definis l'angle de rotation general et ils tournent tous de cet angle qq soit l'angle de rotation initial. Faut selectionner : angle de rotation relatif puis choisir les blocs qu'on veut tourner.
patrick.albinet Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Pardon, je pensais etre dans le forum COVADIS. Ce que je dit est une fonction COVADIS.
fauxsuisse Posté(e) le 17 juillet 2012 Auteur Posté(e) le 17 juillet 2012 Pardon, je pensais etre dans le forum COVADIS. Ce que je dit est une fonction COVADIS. :D C'est ce que j'avais bien pensé quand j'ai vu que tu as écris covMerci quand même d'avoir pris du temps.
lecrabe Posté(e) le 17 juillet 2012 Posté(e) le 17 juillet 2012 Hello Voici une excellente routine BROT (ecrite par Gilles) qui realise une Rotation "relative" des Blocs selectionnes par rapport a leur rotation d'origine ... lecrabe ;; ;; Rotation de N Bloc(s) d'un angle donne (+/- xx.xx) ;; par rapport a leur point d'insertion par GC ;; Commande au clavier : BROT ;; (vl-load-com) (defun c:brot (/ *error* doc rot ss) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (vla-EndUndoMark doc) (princ) ) (if (and (setq rot (getorient "\nRotation: ")) (ssget '((0 . "INSERT"))) ) (progn (vla-StartUndoMark doc) (vlax-for o (setq ss (vla-get-ActiveSelectionSet doc)) (vl-catch-all-apply '(lambda () (vla-put-Rotation o (+ rot (vla-get-Rotation o))) ) ) ) (vla-delete ss) (vla-EndUndoMark doc) ) ) (princ) ) Autodesk Expert Elite Team
fauxsuisse Posté(e) le 18 juillet 2012 Auteur Posté(e) le 18 juillet 2012 Merci le crabe c'était exactement ce que je cherchais mais je n'arrivais pas à remettre la main dessus. :)
Bred Posté(e) le 18 juillet 2012 Posté(e) le 18 juillet 2012 Salut,Le plus simple aurait été de le faire dans les propriétés, à partir de selecrap. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
ALEX-_-45 Posté(e) le 3 avril 2018 Posté(e) le 3 avril 2018 Bonjour,Cette routine est exactement ce que je cherchais à un détail prêt, je voudrais que les objets restent ou sois resélectionné à la fin de la routine. J’ai essayé quelque truc sans suces il faut dire également que ces un langage que je suis loin de maitriser.Enfin voilà ci qu’elle qu’un a une idée je luis en serai très reconnaissent de la partager. Merci par avance
Jo le projeteur Posté(e) le 20 avril 2022 Posté(e) le 20 avril 2022 Le 17/07/2012 à 14:58, fauxsuisse a dit : Bonjour tout le monde, J'ai un petit soucis que j'avais déjà posté et d'on à ma donnée une bonne réponse mais je n'arrive plus à mettre la main dessus. Voilà j'ai plusieurs blocs que j'aimerai tourner un quart de tour 90° à partir de leur point d'insertion et ces bloc ne sont pas tous tournés de la même manière, en gros j'aimerai sélectionner un certain nombres de blocs et qu'en une fonction ils tournent tous de 90° tout en gardant leur position dans le dessin, je l'avais déjà mais je sais plus comment 😞 Bonjour. C'est un des nombreux lisp de Gilles!!! Le voici BROT.LSP
Jo le projeteur Posté(e) le 20 avril 2022 Posté(e) le 20 avril 2022 à la fin de ta commande tu tapes select, puis P pour previous. ça te sélectionnera à nouveau les éléments que tu aura sélectionné auparavant.
Luna Posté(e) le 20 avril 2022 Posté(e) le 20 avril 2022 Coucou, Le plus simple est de remplacer la ligne (vla-delete ss) par (sssetfirst nil ss) Bisous, Luna
(gile) Posté(e) le 21 avril 2022 Posté(e) le 21 avril 2022 Il y a 21 heures, Luna a dit : Le plus simple est de remplacer la ligne (vla-delete ss) par (sssetfirst nil ss) Eh non !... Dans cette routine, c'est un jeu de sélection 'Visual LISP' (type vla-object) qui est assigné à la variable ss et la fonction AutoLISP sssetfirst réclame un jeu de sélection 'AutoLISP' (type pickset). Par ailleurs, il est important de supprimer un jeu de sélection 'Visual LISP' après utilisation (leur nombre est limité dans la session), d'où le (vla-Delete ss). Une routine équivalente en 'pur AutoLISP' : ;; Rotation de N Bloc(s) d'un angle donne (+/- xx.xx) ;; par rapport a leur point d'insertion par GC ;; Commande au clavier : BROT (defun c:brot (/ rot ss i br) (if (and (setq rot (getorient "\nRotation: ")) (setq ss (ssget '((0 . "INSERT")))) ) (repeat (setq i (sslength ss)) (setq br (ssname ss (setq i (1- i)))) (setpropertyvalue br "Rotation" (+ (getpropertyvalue br "Rotation") rot) ) ) ) (sssetfirst nil ss) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 21 avril 2022 Posté(e) le 21 avril 2022 En effet, j'ai lu un peu trop vite et je n'avais pas remarqué que 'ss était affecté à (vla-get-ActiveSelectionSet) et non à (ssget)... My bad ! Je n'étais pas bien réveillée ^^" Merci pour la correction @(gile) 🙂 Cependant, si ce que j'avais lu était bon, cela aurait aussi pu fonctionner il me semble, nan ? (Bon même si du coup, le jeu de sélection VLISP n'est pas supprimé dans cette version ^^") ;; ;; Rotation de N Bloc(s) d'un angle donne (+/- xx.xx) ;; par rapport a leur point d'insertion par GC ;; Commande au clavier : BROT ;; (vl-load-com) (defun c:brot (/ *error* doc rot ss) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (vla-EndUndoMark doc) (princ) ) (if (and (setq rot (getorient "\nRotation: ")) (setq ss (ssget '((0 . "INSERT")))) ) (progn (vla-StartUndoMark doc) (vlax-for o (vla-get-ActiveSelectionSet doc) (vl-catch-all-apply '(lambda () (vla-put-Rotation o (+ rot (vla-get-Rotation o))) ) ) ) (sssetfirst nil ss) (vla-EndUndoMark doc) ) ) (princ) ) Bisous, Luna
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