Aller au contenu

Messages recommandés

Posté(e)

bonjour

 

sur la base de UNVER ou VER de patrick35, je cherche a activer ou desactiver toutes les fenetres de l espace papier des presentations.

 

ca fonctionne une fois que l'on a visité toutes les presentations au moins une fois, car ca met incrémente le code 69 des "viewport" sur 2 3 4

sinon je me suis aperçue que le code restait sur 0

 

donc si on lance le lisp dans l'onglet objet ( "model" si je me trompe ps ), il ne trouve aucune "viewport" avec le code 69 supérieur ou égal a 1

 

on est bien d'accord que la code 69 = 0 du "viewport" désigne la presentation ( l'espace papier ) qu l'on ne peut pas désactiver normalement.

 

peut on changer le code 69 de toutes les fenetres de présentations sans devoir visiter toutes les présentations ?

peut on différencier en version active X les "viewport" des présentations, comme j'ai essayé la.

 

(and (= (vla-get-ObjectName (vlax-ename->vla-object (ssname sel n))) "AcDbViewport") (/= (vla-get-layer (vlax-ename->vla-object (ssname sel n))) nil))

 

et traiter toutes les viewport sans le soucier du code 69 ?

 

 

;;;=================================================================
;;;
;;; FENACTIVER.LSP V1.01
;;;
;;; desactiver toutes les fenêtres dans les présentationS
;;;
;;; Copyright (C) Patrick_35
;;;
;;;=================================================================

(defun c:fdesactout (/
                    fen
                    n
;;;                     sel
                    tot
                   )
 (vl-load-com)
 (setq sel nil)
 ;;(or *acdoc* (setq *acdoc* (vla-get-activedocument (vlax-get-acad-object)))) ;; ca sert a quoi ??
 ;;(setq layouts (vla-get-layouts *acdoc*)) ;; ca sert a quoi ??
 (setq sellay (ssget "X" (list (cons 0 "VIEWPORT") )))
 (if (= (tblsearch "layer" "T_FENETRE") nil)
   (command-s "-calque" "n" "T_FENETRE" "co" "7" "T_FENETRE" "T" "A" "T_FENETRE" "")
 )
 (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) ;; ca sert a quoi ??
 (if (setq sel (ssget "X" (list (cons 0 "VIEWPORT")
;;;                                 (cons -4 ">=") (cons 69 1)
                                )))
   (progn (setq n 0
                tot 0
          )
          (while (ssname sel n)


(setq test11 (vla-get-ObjectName (vlax-ename->vla-object (ssname sel n))))
(setq test12 (vla-get-layer (vlax-ename->vla-object (ssname sel n))))
            (if

;;;               (and (= (vla-get-ObjectName (vlax-ename->vla-object (ssname sel n))) "AcDbViewport") (/= (vla-get-layer (vlax-ename->vla-object (ssname sel n))) nil))


              (/= (cdr (assoc 69 (entget (ssname sel n)))) 1)
              (progn (setq fen (vlax-ename->vla-object (ssname sel n)))
                     (vlax-put-property fen "ViewportOn" :vlax-false)
                     (vlax-put-property fen "layer" "T_FENETRE")
                     (setq tot (1+ tot))
              )
            )
            (setq n (1+ n))
          )
          (princ (strcat "\n" (itoa tot) " fenêtre(s) de désactivée(s)"))
   )
   (princ "\nPas de fenêtres")
 )
 (vla-endundomark (vla-get-activedocument (vlax-get-acad-object));; ca sert a quoi ????
 (princ)
)

 

a+

 

merci

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

salut Patrick

 

désolé j'ai testé ca au début, pensant que ca serait aussi simple.

mais non ca ne marche pas, ou meme ca plante.

 

 

merci

 

a+

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut

 

J'ai trouvé un peu de temps pour te faire quelque chose.

Il faut être patient car on a l'impression qu'Autocad se fige, mais il tourne. Je pense que c'est dû au changement de présentations.

 

(defun c:aon(/ def doc ent lay sel tot)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object))
def (vla-get-activelayout doc)
tot 0
 )
 (vla-startundomark doc)
 (vlax-for lay (vla-get-layouts doc)
   (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay))))
     (progn
(vla-put-activelayout doc lay)
(vlax-for ent (setq sel (vla-get-activeselectionset doc))
  (and (eq (vla-get-viewporton ent) :vlax-false)
       (setq tot (1+ tot))
       (vla-put-viewporton ent :vlax-true)
  )
)
(vla-delete sel)
     )
   )
 )
 (vla-put-activelayout doc def)
 (princ (strcat "\n"  (itoa tot) " fenêtre(s) d'activée(s)"))
 (vla-endundomark doc)
 (princ)
)

 

(defun c:aoff(/ def doc ent lay sel tot)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object))
def (vla-get-activelayout doc)
tot 0
 )
 (vla-startundomark doc)
 (vlax-for lay (vla-get-layouts doc)
   (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay))))
     (progn
(vla-put-activelayout doc lay)
(vlax-for ent (setq sel (vla-get-activeselectionset doc))
  (and (eq (vla-get-viewporton ent) :vlax-true)
       (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-viewporton (list ent :vlax-false))))
    (setq tot (1+ tot))
  )
)
(vla-delete sel)
     )
   )
 )
 (vla-put-activelayout doc def)
 (princ (strcat "\n"  (itoa tot) " fenêtre(s) de désactivée(s)"))
 (vla-endundomark doc)
 (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)

salut Patrick

 

merci d'avoir regarder

j'ai testé:

 

je comprend pas trop pourquoi ce ne sont pas exactement les meme programmes a part "vlax-false" et "vlax-true"

 

autant AOFF j'ai pas d'erreur, mais AON j'ai ca comme erreur

 

Régénération du modèle.

; erreur: une exception s'est produite: 0xC0000005 (Violation d'accès)

; avertissement: fonction unwind ignorée erreur inconnue

 

ca vient peut etre de quand il traite "model".

 

je vais chercher de mon coté.

 

a+

 

merci

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut

 

En générale, quand j'ai ce type de message d'erreur, je relance Autocad. C'est qu'il y a eu une merde auparavant.

 

Si tu veux éviter l'objet.

(defun c:aon(/ def doc ent lay sel tot)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object))
       def (vla-get-activelayout doc)
       tot 0
 )
 (vla-startundomark doc)
 (vlax-for lay (vla-get-layouts doc)
   (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay))))
     (progn
       (vla-put-activelayout doc lay)
       (vlax-for ent (setq sel (vla-get-activeselectionset doc))
         (and (eq (vla-get-viewporton ent) :vlax-false)
       (/= (vla-get-name lay) "Model")
              (setq tot (1+ tot))
              (vla-put-viewporton ent :vlax-true)
         )
       )
       (vla-delete sel)
     )
   )
 )
 (vla-put-activelayout doc def)
 (princ (strcat "\n"  (itoa tot) " fenêtre(s) d'activée(s)"))
 (vla-endundomark doc)
 (princ)
)

 

(defun c:aoff(/ def doc ent lay sel tot)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object))
       def (vla-get-activelayout doc)
       tot 0
 )
 (vla-startundomark doc)
 (vlax-for lay (vla-get-layouts doc)
   (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay))))
     (progn
       (vla-put-activelayout doc lay)
       (vlax-for ent (setq sel (vla-get-activeselectionset doc))
         (and (eq (vla-get-viewporton ent) :vlax-true)
       (/= (vla-get-name lay) "Model")
              (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-viewporton (list ent :vlax-false))))
           (setq tot (1+ tot))
         )
       )
       (vla-delete sel)
     )
   )
 )
 (vla-put-activelayout doc def)
 (princ (strcat "\n"  (itoa tot) " fenêtre(s) de désactivée(s)"))
 (vla-endundomark doc)
 (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)

salut patrick

 

ca marche merci

 

c'est bete que autocad n'autorise pas de activer désactiver les fenetres sans etre obligé de visité la présentations

 

le but etait que ca aille plus vite pour ne vérifier que l'espace papier des présentations.

 

a+

 

merci

 

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é