VDH-Bruno Posté(e) le 29 août 2012 Partager Posté(e) le 29 août 2012 Bonjour, Une petite question en passant, comment en lisp feriez-vous pour récupérer les coordonnées (coin inférieur gauche et coin supérieur droit) de l’affichage actif sous AutoCAD ? Je n’ai pas trouvé de solution direct (variable système), j’ai pondu quelque chose avec SCREENSIZE VIEWCTR et VIEWSIZ.. J’aurais bien comparé avec vos solutions au cas où il y aurait un moyen plus direct, au passage j’ai bien regardé du côté des variables système VSMIN et VSMAX mais je ne suis même pas sûr d’avoir compris ce qu’était « les coins de l'écran virtuel de la fenêtre courante » Mon code : ;; VDH-Bruno ;; ------------------------------------------------------------------------------ ;; retourne une liste de coordonnées 3D dans le SCU représentant respectivement: ;; - le coin inférieur gauche de l'affichage actif ;; - le coin supérieur droit de l'affichage actif ;; ------------------------------------------------------------------------------ ;; Pour mémoire: ;; Variable SCREENSIZE ;; Stocke la taille de la fenêtre courante, en pixels (X et Y). ;; Variable VIEWCTR ;; Stocke le centre de la vue (coordonnées SCU) dans la fenêtre courante. ;; Variable VIEWSIZE ;; Hauteur de la vue affichée, mesurée en unités de dessin. ;; ------------------------------------------------------------------------------ ;; Exemple: ;; (coorAff) --> ((-3.6746 -3.19579 10.0) (3238.26 2595.22 10.0)) (defun coorAff ( / VIEWCTR VIEWSIZE SCREENSIZE) (mapcar 'set '(VIEWCTR VIEWSIZE SCREENSIZE) (mapcar 'getvar '(VIEWCTR VIEWSIZE SCREENSIZE))) ((lambda (dimxy) (list (mapcar '- VIEWCTR dimxy) (mapcar '+ VIEWCTR dimxy))) (list (* VIEWSIZE (/ (car SCREENSIZE) (cadr SCREENSIZE) 2.)) (/ VIEWSIZE 2) 0.0) ) ) A+ (Edit du 30/08/2012: Modifié code passage des arguments en variables localisées) Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 29 août 2012 Partager Posté(e) le 29 août 2012 Pas d'autre moyen je crois.Tout comme EXTMAX et EXTMIN, il doit s'gir de l'encombrement des objets. Sinon c'est pas clair non plus pour moi, ces VSMIN et MAX.... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 29 août 2012 Partager Posté(e) le 29 août 2012 Bonjour, Je ne vois pas trop ce que tu cherche à faire exactement, mais il me semble que tu te complique un peu. Pour moi les variables Viewsize et viewctr sont suffisantes. un exemple pour récuperer une vue d'un plan à l'autre. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Sauver la vue (defun c:SVU nil (vl-registry-write "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewSize" (rtos (getvar "viewsize")) ) (vl-registry-write "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewCtr" (lst2str (trans (getvar "viewctr") 1 0) ";") ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Restaurer la vue (defun c:RVU nil (vl-cmdf "_zoom" "_c" (trans (mapcar 'atof (str2lst (vl-registry-read "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewCtr") ";")) 0 1) (atof (vl-registry-read "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewSize")) ) (princ) ) https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 29 août 2012 Partager Posté(e) le 29 août 2012 Si je ne me trompe...D'après ce que j'ai compris VSMIN et VSMAX sont les limites qu'Autocad est capable de gérer à l'affichage sans provoquer de régénération de celui-ci. EXTMIN et EXTMAX sont les limites calculés par Autocad pour obtenir toutes les entités graphique à l'écran lors d'un zoom étendu, cela rejoint Tramber.Pour un zoom total, je crois bien que celui est géré par LIMMIN et LIMMAX. Passer par les variables que tu as citées sont en effet (à ma connaissance) le seul moyen. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 29 août 2012 Auteur Partager Posté(e) le 29 août 2012 Tramber et BonusCAD,Merci du retour et de la confirmation, c’est la trace du zoom dynamique qui m’avait laissé croire qu’il y avait peut-être des variables qui m’avait échappé.. Pour VSMIN et VSMAX j'étais encore loin de me douter.. Fraid, merci pour les codesJe ne vois pas trop ce que tu cherche à faire exactement,Ho tout un tas de truc comme par exemple, dessiner un cadre représentant ce qu’il y a l’affichage écran. (apply 'command (cons "_rectang" (coorAff)))Ou faire une sélection par capture sur ce qui est présent à l’affichage dans la vue active.(sssetfirst nil (apply 'ssget (cons "_C" (coorAff)))) A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 29 août 2012 Partager Posté(e) le 29 août 2012 Pour VSMIN et VSMAX j'étais encore loin de me douter.. Moi aussi, très intéressant, ainsi le logiciel le sait ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 5 septembre 2012 Auteur Partager Posté(e) le 5 septembre 2012 Bonjour, Pour le fun et le partage une variante (pas forcément plus performante) au code proposé précédemment, mais différente pour ceux que cela intéresse.. (en exploitant une fois de plus les valeurs limites d’AutoCAD). _$ (mapcar 'cadr (cdr (last (ssnamex (ssget "_C" '(-1e99 -1e99) '(1e99 1e99)))))) ((-32.2888 5793.86 0.0) (6455.64 5793.86 0.0) (6455.64 1750.41 0.0) (-32.2888 1750.41 0.0)) _$ Renvoie la liste des 4 sommets définissant la vue active.Nota : Il faut tout de même un objet à sélectionner dans la vue active pour ne pas se voir retourner nil. Au besoin pensez préalablement à en créer un. Sinon au passage j’ai encore quelques soucis avec certaines variables, actuellement le plus criant concerne VIEWTWIST qui si j’en crois l’aide retourne un réel représentant l'angle de basculement de vue pour la fenêtre courante. Sauf que quelque chose doit m’échapper lorsque j’essaye de faire parler cette valeur "supposé angulaire" sur ma calculatrice, je n’arrive pas à la faire coïncider avec quelque chose qui me parle.. A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 5 septembre 2012 Partager Posté(e) le 5 septembre 2012 Bonjour, Pour la variable VIEWTWIST, celle-ci est en corrélation avec la commande VUEDYN (_DVIEW) et l'option "Basculer" ("_Twist"), l'aide ne t'en dira guère plus... Personnellement je me suis servi rarement de cette variable sauf pour faire basculer une vue dans une fenêtre depuis l'espace papier (passer de portrait à paysage par exemple) un peu à la façon de MVSetup après avoir mis beaucoup d'option. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
vincentp010 Posté(e) le 5 septembre 2012 Partager Posté(e) le 5 septembre 2012 Salut, j'ai ce vieux bout de code tout moche qui me donne les 4 coins dans le scu général(setq screen (getvar "screensize")) (setq ratio (/ (car screen) (cadr screen))) (setq cen (getvar "viewctr")) (setq cen (trans cen 1 0)) (setq angle_rad (getvar "viewtwist")) (setq angle_rad (- (* 2 pi) angle_rad)) (setq h (getvar "viewsize")) (setq w (* h ratio)) (setq bottomLeft (polar (polar cen (+ angle_rad pi) (/ w 2)) (- angle_rad (/ pi 2)) (/ h 2))) (setq bottomRight (polar (polar cen angle_rad (/ w 2)) (- angle_rad (/ pi 2)) (/ h 2))) (setq upperRight (polar (polar cen angle_rad (/ w 2)) (+ angle_rad (/ pi 2)) (/ h 2))) (setq upperLeft (polar (polar cen (+ angle_rad pi) (/ w 2)) (+ angle_rad (/ pi 2)) (/ h 2))) Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 7 septembre 2012 Auteur Partager Posté(e) le 7 septembre 2012 Bonjour, bonuscad, merci du retour et de l'explication "étymologique" du _DVIEW option _Twist en VIEWTwist, pour la petite histoire je me suis intéressé à cette variable, un peu dans le même contexte que tu décris cas des basculements ou rotation de vue dans une fenêtre de l’espace papier avec la commande VUEDYN (_DVIEW) ou REPERE (_PLAN). Vincentp010, rassure toi à mes yeux le beau code et celui qui fonctionne après et accessoirement seulement je parle plus volontiers de style dans code de type procédural, impératif, fonctionnel, plutôt que d'un code moche ou pas moche qui est totalement subjectif.. ;) Sinon après vérification la définition que tu donnes (-(* 2 pi) (getvar "viewtwist")) pour le calcul de l’angle me semble correcte (même si il m'avait semblé l’avoir vérifié), en tout cas c’est ce que je recherchais et je t’en remercie. A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 8 janvier 2013 Partager Posté(e) le 8 janvier 2013 HELLO bonne année, voeux, santé comme le bout de code ma servieje fais suite ceux qui on ecrit se code le reconnaitront, pas dure pour ce début d'année mise a jour espace objet espace papier ;;;;;;;;;;;;;; ;; copie la vue d une fenetre a l autre : espace objet ;;;;;;;;;;;;;; (defun c:cvu nil (getpoint "\nCLIQUER DANS LA FENETRE DE BASE :") (vl-registry-write "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewSize" (rtos (getvar "viewsize"))) (vl-registry-write "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewCtr" (lst2str (trans (getvar "viewctr") 1 0) ";") ) (getpoint "\nCLIQUER DANS LA FENETRE A METRE A JOUR SUIVANT LA FENETRE DE BASE") (vl-cmdf "_zoom" "_c" (trans (mapcar 'atof (str2lst (vl-registry-read "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewCtr") ";")) 0 1 ) (atof (vl-registry-read "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewSize")) ) (princ) ) ;;;;;;;;;;;;;; ;; copie la vue d une fenetre a l autre : espace papier ;;;;;;;;;;;;;; (defun c:cvup nil (getpoint "\nZOOMER ET CLIQUER DANS LA FENETRE DE BASE :") (command "espaceo") (vl-registry-write "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewSize" (rtos (getvar "viewsize"))) (vl-registry-write "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewCtr" (lst2str (trans (getvar "viewctr") 1 0) ";") ) (command "espacep") (getpoint "\nZOOMER ET CLIQUER DANS LA FENETRE A METRE A JOUR SUIVANT LA FENETRE DE BASE") (command "espaceo") (vl-cmdf "_zoom" "_c" (trans (mapcar 'atof (str2lst (vl-registry-read "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewCtr") ";")) 0 1 ) (atof (vl-registry-read "HKEY_CURRENT_USER\\Software\\Perso" "Reg-ViewSize")) ) (command "espacep") (command "zoom" "et") (princ) ) mercia+phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal Lien vers le commentaire Partager sur d’autres sites More sharing options...
Titi10 Posté(e) le 9 février 2016 Partager Posté(e) le 9 février 2016 Merci les gars, ces fameuses coordonnées d'écran me manquaient aussi. A bientôt Michel Ceinture bleue en AutoCAD / AutoCAD MEP Lien vers le commentaire Partager sur d’autres sites More sharing options...
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