Netparty Posté(e) le 24 décembre 2021 Posté(e) le 24 décembre 2021 Bonjour à tous J'utilise régulièrement un lisp qui me permet de faire une rotation de 180° sur un attribut choisit mais j'aimerais l'adapter pour qu'en plus de la rotation la justification du texte soit changée en milieu droit cela est-il possible. Ci-joint le code : (defun c:ATTROT180 (/ name) (while (and (setq name (car (nentsel "\nVeuillez cliquer sur un attribut : "))) (= (cdr (assoc 0 (entget name))) "ATTRIB") ) (entmod (subst (cons 50 (+ (cdr (assoc 50 (entget name))) (/ pi 1.0))) (assoc 50 (entget name)) (entget name))) ) (if name (prompt "\nErreur : L'objet sélectionné n'est pas un attribut") (prompt "\nFin de la commande") ) (princ) ) Merci et bonne journée
Luna Posté(e) le 24 décembre 2021 Posté(e) le 24 décembre 2021 Coucou, Normalement il s'agit des codes 72 et 73 qui régissent l'alignement d'un texte donc il te suffit de copier la ligne (entmod ...) et de remplacer le code 50 par les codes 72, puis 73 (dans une 3ème ligne) et de spécifier la valeur souhaitée. Citation 72 Horizontal text justification type (optional, default = 0) integer codes (not bit-coded): 0 = Left 1= Center 2 = Right 3 = Aligned (if vertical alignment = 0) 4 = Middle (if vertical alignment = 0) 5 = Fit (if vertical alignment = 0) See the Group 72 and 73 integer codes table for clarification Citation 73 Vertical text justification type (optional, default = 0): integer codes (not bit-coded): 0 = Baseline 1 = Bottom 2 = Middle 3 = Top See the Group 72 and 73 integer codes table for clarification Citation Group 72 and 73 integer codes Group 73 Group 72 0 1 2 3 4 5 3 (top) TLeft TCenter TRight 2 (middle) MLeft MCenter MRight 1 (bottom) BLeft BCenter BRight 0 (baseline) Left Center Right Aligned Middle Fit If group 72 and/or 73 values are nonzero, then the first alignment point values are ignored and AutoCAD calculates new values based on the second alignment point and the length and height of the text string itself (after applying the text style). If the 72 and 73 values are zero or missing, then the second alignment point is meaningless. Cela donnerait quelque chose du genre : (defun c:ATTROT180 (/ name) (while (and (setq name (car (nentsel "\nVeuillez cliquer sur un attribut : "))) (= (cdr (assoc 0 (entget name))) "ATTRIB") ) (entmod (subst (cons 50 (+ (cdr (assoc 50 (entget name))) (/ pi 1.0))) (assoc 50 (entget name)) (entget name))) (entmod (subst (cons 73 0) (assoc 73 (entget name)) (entget name))) (entmod (subst (cons 72 4) (assoc 72 (entget name)) (entget name))) ) (if name (prompt "\nErreur : L'objet sélectionné n'est pas un attribut") (prompt "\nFin de la commande") ) (princ) ) Bisous, Luna 1
Netparty Posté(e) le 24 décembre 2021 Auteur Posté(e) le 24 décembre 2021 Il y a 4 heures, Luna a dit : Coucou, Normalement il s'agit des codes 72 et 73 qui régissent l'alignement d'un texte donc il te suffit de copier la ligne (entmod ...) et de remplacer le code 50 par les codes 72, puis 73 (dans une 3ème ligne) et de spécifier la valeur souhaitée. Cela donnerait quelque chose du genre : (defun c:ATTROT180 (/ name) (while (and (setq name (car (nentsel "\nVeuillez cliquer sur un attribut : "))) (= (cdr (assoc 0 (entget name))) "ATTRIB") ) (entmod (subst (cons 50 (+ (cdr (assoc 50 (entget name))) (/ pi 1.0))) (assoc 50 (entget name)) (entget name))) (entmod (subst (cons 73 0) (assoc 73 (entget name)) (entget name))) (entmod (subst (cons 72 4) (assoc 72 (entget name)) (entget name))) ) (if name (prompt "\nErreur : L'objet sélectionné n'est pas un attribut") (prompt "\nFin de la commande") ) (princ) ) Bisous, Luna Encore un tout grand merci Luna Petite question est-il possible de ne pas sortir du lisp si je clique à coté de l'attribut? Bonne journée
Luna Posté(e) le 24 décembre 2021 Posté(e) le 24 décembre 2021 (defun c:ATTROT180 (/ infinitySel break name) (defun infinitySel (msg / break g r e) (princ msg) (while (and (not break) (setq g (grread nil 12 2))) (cond ((= 3 (car g)) (setq e (nentselp (cadr g)) r (cond ((null e) nil) ((= (length e) 2) e) (T (list (last (last e)) (cadr g))) ) break r ) ) (T (setq break T)) ) ) r ) (while (and (setq name (car (infinitySel "\nVeuillez cliquer sur un attribut : "))) (= (cdr (assoc 0 (entget name))) "ATTRIB") ) (entmod (subst (cons 50 (+ (cdr (assoc 50 (entget name))) (/ pi 1.0))) (assoc 50 (entget name)) (entget name))) (entmod (subst (cons 73 0) (assoc 73 (entget name)) (entget name))) (entmod (subst (cons 72 4) (assoc 72 (entget name)) (entget name))) ) (if name (prompt "\nErreur : L'objet sélectionné n'est pas un attribut") (prompt "\nFin de la commande") ) (princ) ) 1
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