Aller au contenu

Lisp pour désactiver toutes les fenêtres sur toutes les présentations


Messages recommandés

Posté(e)

Bonjour,

 

sur certains gros fichiers, le temps d'affichage de présentations est parfois trop long, aussi, je recherche un Lisp qui désactive toutes les fenêtres des présentations, pour pouvoir ensuite choisir celle que je souhaite réafficher.

 

En gros, l'automatisation de la commande _-vports _off _all mais sur toutes les présentations.

Quelqu'un aurait-il un exemple de Lisp (je précise que je ne suis pas développeur, j'ai bien cherché et testé les ONG.lsp et autres mais sans succès)

 

Merci

Posté(e)

Bonjour,

 

Voici un Lisp, basé sur une fonction de (gile), qui définit 5 commandes. VPAOFF devrait correspondre à ce que tu recherches.

; VPST :	active/désactive toutes les fenêtres de l'onglet courant/tous les onglets
; VPAON :	active toutes les fenêtres de tous les onglets
; VPON :	active toutes les fenêtres de l'onglet courant
; VPAOFF :	désactive toutes les fenêtres de tous les onglets
; VPOFF :	désactive toutes les fenêtres de l'onglet courant

(defun c:vpon ()
 (gc:AllViewportOn :vlax-true (getvar 'ctab))
 (princ)
)

(defun c:vpaon ()
 (gc:AllViewportOn :vlax-true nil)
 (princ)
)


(defun c:vpoff ()
 (gc:AllViewportOn :vlax-false (getvar 'ctab))
 (princ)
)

(defun c:vpaoff ()
 (gc:AllViewportOn :vlax-false nil)
 (princ)
)

(defun c:vpst (/ option)
(princ "\nActive/désactive toutes les fenêtres de l'onglet courant/tous les onglets")
(initget "DT AT D A")
(setq option (getkword "\nChoisissez une option [Désactiver Tous/Activer Tous/Désactiver courant/Activer courant] <Désactiver Tous>: "))
(cond
	((= option "AT") (c:vpaon))
	((= option "A") (c:vpon))
	((= option "D") (c:vpoff))
	( T (c:vpaoff))
)
 (princ)
)


(defun gc:AllViewportOn	(bool layout / *error* lrc ss)
 (vl-load-com)
 (or *acad* (setq *acad* (vlax-get-acad-object)))
 (or *acdoc* (setq *acdoc* (vla-get-activeDocument *acad*)))

 (defun *error* (msg)
   (and msg
	(or
		(member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
		(princ (strcat "\nErreur : " msg))
	)
)
   (setvar 'layoutregenctl lrc)
   (princ)
 )
 
 (setq lrc (getvar 'layoutregenctl))
 (setvar 'layoutregenctl 0)
 
 (if layout
	(or
		(/= layout "Model")
		(progn
			(princ "\n** Commande non autorisée dans l'onglet Objet**")
			(quit)
		)
	)
	(setq layout "~Model")
)

 (if (ssget "_X" (list(cons 0 "VIEWPORT") (cons 410 layout) (cons -4 "/=") (cons 69 1)))
   (vlax-for vp (setq ss (vla-get-ActiveSelectionSet *acdoc*))
     (vla-put-ViewportOn vp bool)
   )
 )

 (and ss (vla-Delete ss))
 (*error* nil)
)

(princ "\nCommandes: VPST ou VPON, VPOFF, VPAON, VPAOFF")
(princ)

Posté(e)

hello

 

j'ai utilisé le lisp sur une version 14 et ca ne semble pas fonctionner

 

pour cette fonction VPAOFF quand je suis dans l'espace papier

 

quand il arrive a

 

(if (ssget "_X" (list(cons 0 "VIEWPORT") (cons 410 layout) (cons -4 "/=") (cons 69 1)))
   (vlax-for vp (setq ss (vla-get-ActiveSelectionSet *acdoc*))
     (vla-put-ViewportOn vp bool)
   )
 )

 

il répond : Erreur : Erreur Automation Pas dans l'espace papier

 

pour la fonction VPOFF

 

le lisp va au bout mais rien ne se passe, aucune fenetre n'est desactivées

 

meme chose pour VPAON et VPON respectivement

 

est ce que ca viendrait pas de la définition "BOOL" ??

 

ca ne marche ni dans l'espace papier ni objet en fait

 

si quelqu'un avait la solution.

 

merci

 

a+ bonne soirée

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

sur certains gros fichiers, le temps d'affichage de présentations est parfois trop long, aussi, je recherche un Lisp qui désactive toutes les fenêtres des présentations, pour pouvoir ensuite choisir celle que je souhaite réafficher.

 

Moi je mets LAYOUTREGENCTL à 0 pour faire RGT (régénérer tout à la présentation souhaitée) en cas de ralentissements.... Mais c'est bon pour un fichier longtemps ouvert et, comme le dit la doc, si il n'y a pas trop de fichiers ouverts (mis en cache en quelque sorte).

Desactiver les fenêtres étant radical...

Je n'ai rien contre le lisp ceci dit :P

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

hello

 

j'ai rechargé la routine

 

et rééssayé sur plusieurs fichiers j'ai tjrs le meme probleme

ca ne fonctionne pas

 

ca marche une fois sur 2 dans la presentation ( VPOFF )

mais pas la fonction VPAOFF

 

gros mystere

 

je suis saut autocad architecture 2014, mais je vois pas pourquoi ce ne marcherai pas

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Je ne vois pas quel peut-être le souci...

 

Tu peux éventuellement tester cet autre Lisp qui utilise (command), pour voir si ça fonctionne de cette façon:

(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)

hello

 

mercii

 

mais je dois etre maudit, ce LISp la non plus ne marche pas chez moi

 

désolé

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello

 

je viens de refaire un test avec le premier lisp

VPST, VPAOFF, VPAON, VPOFF, VPON

 

sur un fichier vierge 1 onglet sans fenetre, sans calque 20Ko le fichier quoi

j'ai crée 4 presentations, une fenetre dans chaque, et quelque entites dans l'espace objet

 

et la pa de souci ca a marché

 

puis j'ai importé via designcenter une presentation d'un autre fichier avec une fentre non rectangulaire

 

et la ca ne marche plus

 

ca doit venir des fenetres en fait car dans le meme fichier si je les efface toutes et en refait des nouvelles la ca marche

 

je sens que c'est a géométrie variable ce truc, des fois ca marche des fois non, pourtant chaque fenetre est bien passé en revue a chaque fois par le lisp, que l'on crée des nouvelles ou que l'on efface

 

merci

 

a+

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello

 

une piste peut etre

 

il y aurait un souci avec les fenetres non rectangulaire ( celle qui sont détourées ou qui ont été detourées )

et ca bloquerai tout le reste

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello

 

j'ai refait un test sur un fichier vierge 4 onglets, une fenetre créer dans chaque onglet, dont une circulire, une détouré

 

he bien ca marche

 

mais si je sauvegarde et que je le réouvre

 

la ca ne marche plus

 

il y a un souci si le fichier est sauvegardé

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello

 

j'ai peut etre ma réponse

et ca fonctionne

 

d'autre pourrait faire le test aussi svp

 

mes noms d'onglets etaient en fait comme ceci :

 

avant : A4H PDF PC RDC 1-50 PL001#

maintenant : A4H PDF PC RDC 1-50 PL001-

 

car je récupere le dernier caractere "#" "-" pour le mettre dans un champ donnant l'indice de mon cartouche

et aussi les caracteres "001" dans un autre champ pour etre le numéro de la planche de mon cartouche

 

hors avant avec le signe "#" les fonctions VPON et VPOFF ne fonctionnaient pas

n'importe ou est placé le "#" dans le nom de l'onglet les deux fonctions ne marchent pas en fait

 

mais maintenant c'est VPAON et VPAOFF qui ne fonctionne plus

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

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é