CADxp: Rotation des TEXTs/MTEXTs a l'Horizontale suivant le Point de Vue 3D ? - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Rotation des TEXTs/MTEXTs a l'Horizontale suivant le Point de Vue 3D ?

#1 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7033
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 10 janvier 2017 - 22:13

Hello

J'etais persuade d'avoir la bonne routine MAIS a priori je ne l'ai pas !

Donc dans l'onglet Objet ou dans une Fenetre / FMULT des Presentations ...

- Selection AutoCAD classique, on ne retient que les TEXTs / MTEXTs

- Rotation des TEXTs / MTEXTs (depuis le point d'insertion de chaque TEXT/MTEXT)
afin qu'ils soient a l'horizontale par rapport au point de vue 3D courant ...

****** Autre solution possible ******
Question: si j'utilise le Mode ANNOTATIF et l'option "Faire correspondre l'orientation du texte a la Presentation / Match orientation to Layout" !! MAIS qu'en fait je ne fais pas d'ANNOTATIF (Hauteur du Style = ZERO et Echelle Annotative = 1:1) , est ce jouable ??

Merci d'avance, Bonne Annee et LA SANTE, Bye, lecrabe
Autodesk Expert Elite Team
0

#2 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10563
  • Inscrit(e) : 02-septembre 05

Posté 10 janvier 2017 - 22:52

Salut,

(defun c:AlignToView (/ vd ss i txt pos)
  (setq vd (trans '(0 0 1) 2 0 T))
  (if (setq ss (ssget '((0 . "*TEXT"))))
    (repeat (setq i (sslength ss))
      (setq txt (ssname ss (setq i (1- i)))
            pos (getpropertyvalue txt "Position")
      )
      (setpropertyvalue txt "Normal" vd)
      (setpropertyvalue txt "Rotation" 0)
      (setpropertyvalue txt "Position" pos)
    )
  )
  (princ)
)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#3 L'utilisateur est hors-ligne   zebulon_ 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1270
  • Inscrit(e) : 02-mai 03
  • LocationSchnersheim

Posté 10 janvier 2017 - 22:58

Bonsoir,
j'ai essayé de faire quelque chose qui intègre les cotes, les textes, les mtexts et les mleaders

(vl-load-com)

(defun c:rotdim (/ s ANG)
  (setq ANG (getvar "VIEWTWIST"))
  (if (ssget '((0 . "DIMENSION,MULTILEADER,TEXT,MTEXT")))
    (progn
      (vlax-for o (setq s (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
        (cond
          ((= (vla-get-objectname o) "AcDbMLeader") (vla-put-textrotation o 0))
          ((= (vla-get-objectname o) "AcDbMText") (vla-put-rotation o 0))
          (T (vla-put-rotation o ANG))
        )
      )
      (vla-delete s)
    )
  )
  (princ)
)


Selon le type d'objet, il faut mettre la propriété "rotation" soit à 0, soit à l'angle donné par viewtwist

Amicalement
Vincent
C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
0

#4 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7033
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 10 janvier 2017 - 23:06

Hello

MERCI les Pros

1) J'ai teste (sous AutoCAD MAP 2017 x64) la routine de Gilles: PARFAIT !
Il me suffit de multiplier (copier) les textes (sur de multiples calques)
suivant les Points de vue et d'utiliser "subtilement" la routine de Gilles ...

2) Je n'ai pas encore teste la routine de zebulon_ mais ...
DESOLE il ne se passe rien sur mes TEXTs / MTEXTs alors que la routine de Gilles est OK !
Bien entendu je suis dans le SCG et les Tests ont ete realises dans l'OBJET et dans une Presentation ... Aucun msg d'erreur ...
Pourtant j'ai des valeurs non nuls sur : (getvar "VIEWTWIST")

3) SVP quel serait l'inconvenient d'utiliser la propriete de rotation automatique du Mode ANNOTATIF
comme je l'expliquais dans mon sujet ???

Bye, lecrabe
Autodesk Expert Elite Team
0

#5 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7033
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 10 janvier 2017 - 23:16

Hello

1) Tous les tests ont ete realises (avec des Textes "simples") sous AutoCAD MAP 2017 x64 et dans le SCG !

2) Tiens maintenant avec la routine de Gilles , j'ai le probleme suvant :

Commande: ALIGNTOVIEW
Sélectionner des objets: Spécifiez le coin opposé: 8 trouvé(s)
Sélectionner des objets:

Erreur: Demande ADS erronée
Impossible d'appeler (command) à partir de *error* sans appeler préalablement (*push-error-using-command*).
Il est recommandé de convertir les appels (command) en (command-s).
Commande:

CURIEUX car ZERO utilisation de "command" !?

2) Je sors complet d'AutoCAD MAP 2017, je relance ET CA MARCHE !

Bye, lecrabe

*** PS1: Tests refais avec un "simple" AutoCAD 2015 x64 et la routine de Gilles est toujours OK
et malheureusement pour celle de zebulon_ , rien ne se passe !

*** PS2: AH AH PROBLEME avec les MTEXTs (avec la routine de Gilles) car la propriete de rotation ne semble pas la meme que pour les Textes SIMPLES !? ... Traitement DIFFERENT pour les entites MTEXT ??
---> ; erreur: Demande ADS erronée

Je sens bien un truc lie a ce sujet :
http://cadxp.com/top...938#entry248938
Autodesk Expert Elite Team
0

#6 L'utilisateur est hors-ligne   zebulon_ 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1270
  • Inscrit(e) : 02-mai 03
  • LocationSchnersheim

Posté 11 janvier 2017 - 11:20

Bonjour,

sans doute parce que je n'utilise que dans un cas particulier
https://www.dropbox..../avant.JPG?dl=0
https://www.dropbox..../apres.JPG?dl=0

amicalement
Vincent
C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
0

#7 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10563
  • Inscrit(e) : 02-septembre 05

Posté 11 janvier 2017 - 11:57

Salut,

je suis allé un peu vite en besogne...

Les textes multiligne provoquent en effet une erreur mais c'est à cause de la propriété "Position".

Une nouvelle version qui semble fonctionner avec les textes simples et textes multilignes quels que soient la justification, le SCU courant, etc.

(defun c:AlignToView (/ vd ss i txt elst pos)
  (setq vd (trans '(0 0 1) 2 0 T))
  (if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
    (repeat (setq i (sslength ss))
      (setq txt (ssname ss (setq i (1- i))))
          (setpropertyvalue txt "Normal" vd)
      (if (= (cdr (assoc 0 (entget txt))) "MTEXT")
          (setpropertyvalue txt "Rotation" (- (angle '(0 0 0) (getvar 'ucsxdir))))
        (if (= 0 (getpropertyValue txt "Justify"))
          (progn
            (setq pos (getpropertyvalue txt "Position"))
            (setpropertyvalue txt "Rotation" 0)
            (setpropertyvalue txt "Position" pos)
          )
          (progn
            (setq pos (getpropertyvalue txt "AlignmentPoint"))
            (setpropertyvalue txt "Rotation" 0)
            (setpropertyvalue txt "AlignmentPoint" pos)
          )
        )
      )
    )
  )
  (princ)
)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)