Aller au contenu

Selectionner le centre des fenetres (viewport) d'une page de présentation (layout)


Messages recommandés

Posté(e)

Bonjour,

Je cherche à Obtenir le centre des fenetres (viewport) d'une page de présentation (layout) en utilisant lisp. Le problème étant que cela me selectionne le centre de chaque fenetres mais pour l'ensemble de mes presentations (layout) alors que moi je souhaiterai uniquement le centre des fenetres du layout ACTIF soit celui sur lequel je suis, celui qui est selectionné. Voici mon lisp :

 


(defun c:CentersOfAllViewports ()
  (vl-load-com)  ; Charger la bibliothèque COM pour interagir avec AutoCAD
 
  ;; Sélectionner tous les viewports dans l'espace de présentation
  (setq ss (ssget "X" '((0 . "VIEWPORT"))))  ; Sélectionner tous les viewports

  (if ss
    (progn
      (setq i 0)  ; Initialiser un compteur pour les viewports
      (setq num (sslength ss))  ; Récupérer le nombre total de viewports
      (princ (strcat "\nNombre de viewports trouvés : " (itoa num)))  ; Afficher le nombre de viewports

      ;; Parcourir tous les viewports
      (while (< i num)
        (setq obj (ssname ss i))  ; Récupérer l'objet viewport à l'index i
        (setq vlaObj (vlax-ename->vla-object obj))  ; Convertir en objet VLA

        ;; Obtenir les coordonnées des coins du viewport
        (setq pt1 (vlax-get vlaObj 'Center))  ; Récupérer les coordonnées du centre directement

        ;; Afficher les coordonnées du centre de ce viewport
        (princ (strcat "\nCentre du viewport " (itoa (1+ i)) " : X = " (rtos (car pt1) 2 2) ", Y = " (rtos (cadr pt1) 2 2)))
        
        (setq i (1+ i))  ; Passer au viewport suivant
      )
    )
    (princ "\nAucun viewport trouvé.")
  )
  (princ)  ; Terminer proprement la fonction
)




et voici ce que autocad me renvoie : Nombre de viewports trouvés dans le layout 05 (4) : 18
Centre du viewport 1 : X = -77.12, Y = 141.92
Centre du viewport 2 : X = 42.59, Y = 171.05
Centre du viewport 3 : X = -77.12, Y = 141.92
Centre du viewport 4 : X = -12.53, Y = 69.92
Centre du viewport 5 : X = -77.12, Y = 141.92
Centre du viewport 6 : X = 41.18, Y = 64.59
Centre du viewport 7 : X = 25.38, Y = 141.92
Centre du viewport 8 : X = -179.62, Y = 141.92
Centre du viewport 9 : X = 34.88, Y = 82.78
Centre du viewport 10 : X = -77.12, Y = 141.92
Centre du viewport 11 : X = -11.61, Y = 116.53
Centre du viewport 12 : X = -77.12, Y = 141.92
Centre du viewport 13 : X = 20.74, Y = 147.38
Centre du viewport 14 : X = 30.62, Y = 66.45
Centre du viewport 15 : X = 28.00, Y = 209.95
Centre du viewport 16 : X = -177.00, Y = 209.95
Centre du viewport 17 : X = -7.96, Y = 198.22
Centre du viewport 18 : X = 14.50, Y = 129.11

Sachant que cela n'est pas cohérant car dans le layout 05 (4) j'ai uniquement 3 viewports

Merci d'avance.

Posté(e)

Merci beaucoup pour ta réponse Olivier, cela fonctionne cependant, il m'ajoute toujours un centre d'une fenetre(qui n'existe pas) qui est en dehors de ma page de presentation (layout) je ne comprends pas pourquoi. Mais c'est déjà bien mieux merci !

Voici ce qui me renvoie :

Commande: CENTERSOFALLVIEWPORTS
Nombre de viewports trouvés : 3 (Alors que j'en ai que 2 ici)
Centre du viewport 1 : X = 25.38, Y = 141.92
Centre du viewport 2 : X = -179.62, Y = 141.92
Centre du viewport 3 : X = 344.50, Y = 229.49

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é