dfbiagio Posté(e) le 15 mai 2024 Posté(e) le 15 mai 2024 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.
bonuscad Posté(e) le 15 mai 2024 Posté(e) le 15 mai 2024 Bonsoir, Ce n'est pas (substr) qui est pour les chaîne de caractères, mais (subst) pour substituer un élément à un autre. 1 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dfbiagio Posté(e) le 16 mai 2024 Auteur Posté(e) le 16 mai 2024 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
VDH-Bruno Posté(e) le 16 mai 2024 Posté(e) le 16 mai 2024 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
dfbiagio Posté(e) le 16 mai 2024 Auteur Posté(e) le 16 mai 2024 Effectivement, c'est bien ça. Un tout grand merci. Bonne journée
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