Aller au contenu

Messages recommandés

Posté(e)

Bonjour, en Vlisp je recherche la variable pour activer une fenêtre de présentation.

Pour déverouiller une fenêtre de présentation j'utilse :

 

(vla-put-displaylocked ent :vlax-false)

 

Pour activer et desactiver une fenêtre quel est la variable?

 

Cordialement.

Petit à petit on devient moins petit

Posté(e)

Bon un petit problème :

(defun c:VPAllOff ()
(vl-load-com)
(vlax-for lay
(vla-get-layouts
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(if (eq :vlax-false (vla-get-modeltype lay))
(vlax-for ent (vla-get-block lay) ; for each ent in layout
(if (= (vla-get-objectname ent) "AcDbViewport")
(progn
(vla-put-viewportOn ent :vlax-false)
)
)
)
)
)
)

 

lors de l'execution de ce code j'ai le message d'erreur suivant :

 

erreur: Erreur Automation Non valable

 

alors que VPAllOn ou j'ai :

(vla-put-viewportOn ent :vlax-true)

a la place de

(vla-put-viewportOn ent :vlax-false)

fonctionne trés bien.

 

d'où vien le problème?

Petit à petit on devient moins petit

Posté(e)

Quand je t'ai fais la proposition, j'étais sous une 2008 et il n'acceptait pas :vlax-False ou :vlax-True (même erreur : erreur: Erreur Automation Non valable) mais 0 et -1 sans problème.

 

En ce moment sous Autocad Map 2011, il accepte les 2 syntaxes ?!?!

 

As tu essayé avec 0 ou -1 comme arguments?

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut

 

C'est normal, car comme tu parcoures le bloc composant le layout, le 1er objet est la fenêtre générale de ton EP et il faut l'éviter.

Apparemment, on ne peut activer/désactiver une fenêtre que si elle a déjà été générée une première fois.

 

(defun c:VPAllOff(/ lay ent saut)
 (vl-load-com)
 (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
   (vla-put-activelayout (vla-get-activedocument (vlax-get-acad-object)) lay)
   (vlax-for ent (vla-get-block lay)
     (and saut
  (eq (vla-get-objectname ent) "AcDbViewport")
(vla-put-viewporton ent :vlax-false)
     )
     (setq saut T)
   )
   (setq saut nil)
 )
 (princ)
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)
Apparemment, on ne peut activer/désactiver une fenêtre que si elle a déjà été générée une première fois.

 

Il faudra que je refasse un test sous une 2008, car j'avais pas compris pourquoi la 1ere syntaxe ne fonctionne pas alors que la 2eme oui. (peut être que ma fenêtre a été généré entre les 2 manips!)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonuscad, j'ai tenté avec 0 et -1, l'erreur était la même.

Patrick_35, je te remercie pour les informations.

Mais j'ai deux questions :

Comment ce fait-il que ca fonctionne avec :

(vla-put-viewporton ent :vlax-true)

 

Cordialement.

 

 

Petit à petit on devient moins petit

Posté(e)

Sinon avec (command) ça fonctionne bien :

 

(defun c:vpai (/ *error* acdoc layouts oldcmdecho action ss clayout)
; Brice Studer, février 2011
; mise à jour juin 2013
; Permet d'activer toutes les fenêtres de toutes les présentations du dessin,
; ou de toutes les désactiver (en choisissant éventuellement de garder actives
; certaines fenêtres de la présentation active).

 (vl-load-com)
 (setq  acdoc (vla-get-ActiveDocument (vlax-get-acad-object))
       layouts (vla-get-Layouts acdoc)
 )
 
 (defun *error* (errmsg)
   (command nil nil nil)
   (vla-EndUndoMark acdoc)
   (setvar "CMDECHO" oldcmdecho)
   (setvar "NOMUTT" 0)
   (and errmsg
     (or
       (member (strcase errmsg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
       (princ (strcat "\nErreur : " errmsg))
     )
   )
   (princ)
 )

 (initget "Activer Désactiver")
 (setq action (getkword "\nEntrée pour désactiver toutes les fenêtres ou [Activer]: "))
 (if (= action "Activer")
   (setq action "_on")
   (progn
     (setq action "_off")
     (princ "\nSélectionnez les fenêtres à garder actives (Entrée pour aucune): ")
     (setq ss (ssget '( (0 . "VIEWPORT") )))
   )
 )
 
 (vla-StartUndoMark acdoc)
 (setq oldcmdecho (getvar "CMDECHO")
       clayout (getvar "CTAB")
 )
 (setvar "CMDECHO" 0)
 (setvar "NOMUTT" 1)

 (vlax-for lay layouts
   (if (eq :vlax-false (vla-get-ModelType lay))
     (progn
       (vla-put-ActiveLayout acdoc lay)
       (command "_.-vports" action "_all" "")
       (if (/= 0 (getvar "CMDACTIVE"))
         (command nil nil nil)
       )
     );progn
   );if layout not model
 );vlax-for lay

 (setvar "CTAB" clayout)
 
 (if ss
   (command "_.-vports" "_on" ss "")
 )

 (*error* nil)
)

(princ "\nCommande à utiliser: VPAI")
(princ)

Posté(e)

Mais j'ai deux questions :

Comment ce fait-il que ca fonctionne avec :

(vla-put-viewporton ent :vlax-true)

 

Cordialement.

J'ai testé aussi bien avec true que false avant de poster ma réponse et les résultats sont les mêmes sur ma 2014.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Sinon avec (command) ça fonctionne bien :

Oui, mais ton lisp active la présentation et fait une sélection, ce qui évite la fenêtre générale que l'on trouve dans le bloc qui compose la présentation.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Je vous remercie,

J'étais partie sur la piste de commande Vports, mais en beaucoup plus simple, je n'ai pas encore ton niveau Bryce. Ca viendra un jour.

Mais je conse toujours sur le mode off.

 

Bon je reprendrais tous ça à tête reposer.

Merci à vous.

cordialement.

Petit à petit on devient moins petit

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é