Aller au contenu

Rotation texte


Messages recommandés

Bonsoir à tous,

J'essaie de créé une petite programmation qui me permettrai de faire pivoter un texte suivant un certain angle.

(setq texte (entget (car (entsel "choix du texte"))))

Résultat:  

((-1 . <Nom d'entité: 28f974116f0>) (0 . "MTEXT") (330 . <Nom d'entité: 28ff3f02230>) (5 . "93487") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Renseignements cadastraux (N° parcelles - Propriétaires)") (100 . "AcDbMText") (10 -1.82413e+07 -7.18013e+06 0.0) (40 . 120.0) (41 . 0.0) (46 . 0.0) (71 . 7) (72 . 5) (1 . "G175R") (7 . "Roman") (210 0.0 0.0 1.0) (11 -0.882086 0.471089 0.0) (42 . 505.917) (43 . 124.615) (50 . 2.65107) (73 . 1) (44 . 1.0))
Ensuite, j'extrais l'angle du texte: 

(setq ang (cdr (assoc 50 texte)))
2.65107
Pour le faire pivoter de 180° il faut soit ajouter PI 

(setq ang (+ ang PI))

Je substitue le nouvel angle dans texte

(substr (cons 50 ang) (assoc 50 texte) texte)

Et là, je reçois cette erreur
; erreur: type d'argument incorrect: stringp (50 . 5.79266)

D'où vient mon erreur ?

Merci de votre aide.
 

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Ce n'est pas (substr) qui est pour les chaîne de caractères, mais (subst) pour substituer un élément à un autre.

  • Like 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Re-bonjour,

J'ai encore un petit souci, lorsque j'exécute mon petit lisp via la ligne de commande, ça fonction, mais quand tout est assemblé, il me met l'erreur suivante:

Commande: CHT
Sélectionnez des objets: Spécifiez le coin opposé: 3 trouvé(s)

Sélectionnez des objets:
; erreur: fonction incorrecte: <Selection set: dc>

 

Voici mon lisp assemblé:

(defun c:cht()
 ((setq texte (ssget '((0 . "text")))) cpt 0)
 (repeat (sslength texte)
         (setq TexteAmodifier (entget (ssname texte cpt)))
    (entmod (subst (cons 50 (+ pi (cdr (assoc 50 TexteAmodifier)))) (assoc 50 TexteAmodifier ) TexteAmodifier ))
    (setq cpt (1+ cpt))
 )
)

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Sans avoir la possibilité de tester, au premier coup d'œil, je vois un problème de parenthèses essaie de remplacer ceci:

((setq texte (ssget '((0 . "text")))) cpt 0)

par

(setq texte (ssget '((0 . "text"))) cpt 0) 

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité