willy95 Posté(e) le 5 octobre 2020 Posté(e) le 5 octobre 2020 Bonjour à tous, Afin d'utiliser la commande rotation avec une référence d'angle de départ et une autre référence d'arrivé, j'utilise la commande rotation mais je passe mon temps à cliquer sur R puis P bien trop souvent, alors j'aimerai bien mettre tous ça dans un petit code pour me simplifié cette répétition qui devient insupportable. Mais je ne comprends pas pourquoi la commande "C" n'est donc pas reconnue ! Si quelqu'un peut m'expliquer à résoudre mon problème se serait vraiment sympa. (defun c:rotobj (/ Ang12a Ang12 Ang34a Ang34 p1 p2 p3 p4) (setq SELEC1 (ssget)) (setq p1 (getpoint "\nSaisir le 1er point de l'objet a rotationner : ")) (setq p2 (getpoint "\nSaisir le 2eme point de l'objet a rotationner : ")) (setq Ang12a (angle p1 p2) ) (setq Ang12 (angtos Ang12a 2 4)) (setq p3 (getpoint "\nSaisir le 3eme point -> 1er de la reference de rotation : ")) (setq p4 (getpoint "\nSaisir le 4eme point -> 2eme de la reference de rotation : ")) (setq Ang34a (angle p3 p4) ) (setq Ang34 (angtos Ang34a 2 4)) (command "_rotate" SELEC1 "" p1 "R" !Ang12 "C" !Ang34 ) ;(command "_rotate" SELEC1 "" p1 "R" p1 p2 "" "C" p3 p4 ) )
Tramber Posté(e) le 5 octobre 2020 Posté(e) le 5 octobre 2020 C comme Copier ?Mets-le au début."_rotate" "c" "Ref".... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Aleck_Ultimate Posté(e) le 5 octobre 2020 Posté(e) le 5 octobre 2020 Salut. La commande 3DROTATION (au lieu de ROTATION3D) pourrait t’intéresser, même si tu semble avoir un besoin encore différent que toutes les options implémentées en natif. On en a beaucoup parlés ici : https://cadxp.com/topic/49098-rotation3d-uniquement-selon-le-scg/ Tu peut sauter mes messages les plus longs, ils n'apporterons rien à ta problématique. Cordially. Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux. Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage ! Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;]) Utilisateur d'AutoCAD 2021 sous Windows 10
willy95 Posté(e) le 5 octobre 2020 Auteur Posté(e) le 5 octobre 2020 Merci pour vos premières pistes, mais rien de fonctionne, je ne comprends pas pourquoi :( (command "_rotate" SELEC1 p1 "C" "R" !Ang12 !Ang34 )
Aleck_Ultimate Posté(e) le 5 octobre 2020 Posté(e) le 5 octobre 2020 D'après l'aide AutoCAD (en anglais pour éviter tout problème de traduction ou de noms d'options) : Enter an angle, specify a point, enter c , or enter r. Et désolé pour le poste hors-sujet, je manque un peut de sommeil. J'avais réussit a zapper que tu parlais juste de rotation 2D. EDIT : Et s'il te plais poste ton LISP une fois fonctionnel, il me serait utile. J'ignorais qu'il était possible de passer par R et j'utilisait les commandes de rotation 3D pour faire ce que tu fait. Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux. Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage ! Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;]) Utilisateur d'AutoCAD 2021 sous Windows 10
Luna Posté(e) le 5 octobre 2020 Posté(e) le 5 octobre 2020 Coucou, Dans un premier temps, je remarque que tu utilises le "!" devant le nom de tes variables dans ta fonction (command), ce qui est inutile car tu es dans une fonction :3Si je comprend bien ta demande, tu veux simplement t'éviter de saisir les keyword "R" (pour "Référence") et "C" (pour "Copy"). Cela est un peu étrange étant donné que tu ne t'épargnes qu'une saisie clavier simple à l'instar des points p1, p2, p3 et p4 que tu dois spécifier à chaque fois mais bon ^^" En simplifiant l'écriture (pour s'éviter 150 variables), j'aurais ceci : (defun c:rotobj (/ jsel p1) (if (or (setq jsel (ssget "_I")) (setq jsel (ssget)) ) (command "_ROTATE" jsel "" (setq p1 (getpoint "\nSaisir le point de référence : ")) "C" "R" p1 (getpoint "\nSaisir l'angle de référence : ") (getpoint "\nSpécifier le nouveau point de rotation : " ) ) ) (princ) ) Si cela ne correspond pas à ta demande, alors c'est que je n'ai pas compris la demande :3 Bisous,Luna
willy95 Posté(e) le 5 octobre 2020 Auteur Posté(e) le 5 octobre 2020 Merci Luna pour ta réponse qui me donne de quoi méditer sur les choses étranges que j'intègre dans mes pseudo codes, mais bon j'ai enfin réussi à le faire fonctionner grâce à la réflexion de chacune de vos réponses et principalement à Tramber qui m'avait bien dit de mettre "C" au début. (defun c:rotobj (/ p1 p2 p3 p4) (setq SELEC1 (ssget)) (setq p1 (getpoint "\nSaisir le 1er point de l'objet a rotationner : ")) (setq p2 (getpoint "\nSaisir le 2eme point de l'objet a rotationner : ")) (setq p3 (getpoint "\nSaisir le 3eme point -> 1er de la reference de rotation : ")) (setq p4 (getpoint "\nSaisir le 4eme point -> 2eme de la reference de rotation : ")) (command "_rotate" SELEC1 "" p1 "_R" p1 p2 "_P" p3 p4) )
Maxime063 Posté(e) le 5 octobre 2020 Posté(e) le 5 octobre 2020 Merci Luna pour ta réponse qui me donne de quoi méditer sur les choses étranges que j'intègre dans mes pseudo codes, mais bon j'ai enfin réussi à le faire fonctionner grâce à la réflexion de chacune de vos réponses et principalement à Tramber qui m'avait bien dit de mettre "C" au début. (defun c:rotobj (/ p1 p2 p3 p4) (setq SELEC1 (ssget)) (setq p1 (getpoint "\nSaisir le 1er point de l'objet a rotationner : ")) (setq p2 (getpoint "\nSaisir le 2eme point de l'objet a rotationner : ")) (setq p3 (getpoint "\nSaisir le 3eme point -> 1er de la reference de rotation : ")) (setq p4 (getpoint "\nSaisir le 4eme point -> 2eme de la reference de rotation : ")) (command "_rotate" SELEC1 "" p1 "_R" p1 p2 "_P" p3 p4) ) Hello, Tu peux même te simplifier un clic gratuitement (defun c:rr (/ SELECT1 p1 p2 p3 p4) (setq SELEC1 (ssget)) (setq p1 (getpoint "\nSaisir le 1er point de l'objet a rotationner : ")) (setq p2 (getpoint "\nSaisir le 2eme point de l'objet a rotationner : ")) (setq p3 (getpoint "\nSaisir le 3eme point -> angle d'arrive de la rotation : ")) (command "_rotate" SELEC1 "" p1 "_R" p1 p2 "_P" p1 p3) ) Amicalement
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