Aller au contenu

Messages recommandés

Posté(e)

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.
 

Posté(e)

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

Posté(e)

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

Posté(e)

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

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é