Aller au contenu

Écrire des angles à la volée sur une vue en orientation.


Messages recommandés

Posté(e)

Bonjour à tous,

Ce programme permet d'écrire des angles à la volée sur une vue en orientation en désignant tout d'abord le centre de la vue (1 seule fois) puis en désignant les différents angles.

Ce programme a été écrit par un Cadxipien dont je ne me rappelle pas le nom, en tous cas, merci à lui.

J'ai tenté de le modifier pour pouvoir écrire en MTEXT plutôt qu'en TEXT, mais je n'y arrive pas.

Merci pour votre aide.

(defun c:y (/ *error* space cen pt ang ht just rot text)
  (vl-load-com)
  (or *acdoc*
      (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
  )
  (defun *error* (msg)
    (and msg
         (/= msg "Fonction annulée")
         (prompt (strcat "\nErreur : " msg))
    )
    (vla-EndUndoMark *acdoc*)
    (princ)
  )
  (if (setq cen (getpoint "\nCentre de la cotation: "))
    (progn
      (vla-StartUndoMark *acdoc*)
      (setq space (vla-get-Block (vla-get-ActiveLayout *acdoc*)))
      (while (setq pt (getpoint cen "\nExtémité de l'angle: "))
        (setq pt (trans pt 1 0)
              cen (trans cen 1 0)
              ang (angle cen pt)
              ht (getvar 'textsize))
        (cond
          ((equal ang (* pi 0.5) 1e-9)
           (setq just acAlignmentBottomCenter
                 rot  0.0
           )
          )
          ((equal ang (* pi 1.5) 1e-9)
           (setq just acAlignmentTopCenter
                 rot  0.0
           )
          )
          ((< (* pi 0.5) ang (* pi 1.5))
           (setq just acAlignmentMiddleRight
                 rot  (+ pi ang)
           )
          )
          (T
           (setq just acAlignmentMiddleLeft
                 rot  ang
           )
          )
        )
        ;;(vla-AddLine space (vlax-3d-point cen) (vlax-3d-point pt))
        (setq text (vla-AddText space (strcat (angtos (- (* 0.5 pi) ang)) "°") (vlax-3d-point pt) ht))
        (vla-put-Rotation text rot)
        (vla-put-Alignment text just)
        (vla-put-TextAlignmentPoint text (vlax-3d-point pt))
      )
    )
  )
  (*error* nil)
)

 

Posté(e)

Salut,

Je pense avoir commis ce LISP.

Pour un texte multiligne à la place d'un texte simple (pourtant beaucoup plus léger) :

(defun c:y (/ *error* space cen pt ang just rot text)
  (vl-load-com)
  (or *acdoc*
      (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
  )
  (defun *error* (msg)
    (and msg
         (/= msg "Fonction annulée")
         (prompt (strcat "\nErreur : " msg))
    )
    (vla-EndUndoMark *acdoc*)
    (princ)
  )
  (if (setq cen (getpoint "\nCentre de la cotation: "))
    (progn
      (vla-StartUndoMark *acdoc*)
      (setq space (vla-get-Block (vla-get-ActiveLayout *acdoc*)))
      (while (setq pt (getpoint cen "\nExtémité de l'angle: "))
        (setq pt (trans pt 1 0)
              cen (trans cen 1 0)
              ang (angle cen pt)
	      )
        (cond
          ((equal ang (* pi 0.5) 1e-9)
           (setq just acAttachmentPointBottomCenter
                 rot  0.0
           )
          )
          ((equal ang (* pi 1.5) 1e-9)
           (setq just acAttachmentPointTopCenter
                 rot  0.0
           )
          )
          ((< (* pi 0.5) ang (* pi 1.5))
           (setq just acAttachmentPointMiddleRight
                 rot  (+ pi ang)
           )
          )
          (T
           (setq just acAttachmentPointMiddleLeft
                 rot  ang
           )
          )
        )
	;;(vla-AddLine space (vlax-3d-point cen) (vlax-3d-point pt))
	(setq text (vla-AddMText space (vlax-3d-point pt) 0.0 (strcat (angtos (- (* 0.5 pi) ang)) "°")))
        (vla-put-Rotation text rot)
        (vla-put-AttachmentPoint text just)
	(vla-put-InsertionPoint text (vlax-3d-point pt))
      )
    )
  )
  (*error* nil)
)

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour (gile),

Merci d'avoir commis le LISP de départ et cette modification.

Juste une question :

Dans la première version

ht (getvar 'textsize))

que l'on ne retrouve pas dans la deuxième version.

Pourtant, lorsque l'on modifie sa hauteur, celle-ci est bien prise en compte ?

 

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é