PHILPHIL Posté(e) le 9 mars 2016 Posté(e) le 9 mars 2016 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 4sinon 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
Patrick_35 Posté(e) le 9 mars 2016 Posté(e) le 9 mars 2016 Salut Dans Verr/Unverr, tu remplaces displaylocked par viewporton @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 9 mars 2016 Auteur Posté(e) le 9 mars 2016 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
Patrick_35 Posté(e) le 14 mars 2016 Posté(e) le 14 mars 2016 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 14 mars 2016 Auteur Posté(e) le 14 mars 2016 salut Patrick merci d'avoir regarderj'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
Patrick_35 Posté(e) le 15 mars 2016 Posté(e) le 15 mars 2016 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 15 mars 2016 Auteur Posté(e) le 15 mars 2016 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
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