Iu63 Posté(e) le 13 janvier Posté(e) le 13 janvier 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.
Olivier Eckmann Posté(e) le 13 janvier Posté(e) le 13 janvier (setq ss (ssget "X" (list (cons 0 "VIEWPORT") (cons 410 (getvar "CTAB"))))) Essaie avec ça. Ca permet de ne récupérer que els objet de l'onglet courant.
Iu63 Posté(e) le 13 janvier Auteur Posté(e) le 13 janvier 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
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