Aller au contenu

Micro-Amelioration sur Routine (Presentation/Layout) SVP


lecrabe

Messages recommandés

Hello les Pros du Lisp/VLisp

 

J'ai trouve sur le Web une petite routine VLisp qui me va bien pour supprimer TOUTES les Presentations/Layouts !

 

Cette routine "Layout_Del_All" efface TOUTES les presentations du dessin quelque soit l'espace dans lequel on se trouve quand on lance Layout_Del_All ... Et donc la routine (ou AutoCAD) recree automatiquement une Presentation / Layout VIDE !

---> Pour moi ce comportement est OK !!

 

MAIS SVP je desire une routine "un poil plus evoluee" :

- Si on est dans l'onglet Objet/Model Space lors du lancement, OK le comportement decrit ci-dessus me convient !

- Si on est dans UNE Presentation/Layout lors du lancement ALORS on supprime TOUTES les Presentations/Layouts SAUF celle ou on se trouve !!

 

A votre bon coeur, Merci d'avance, Bye, lecrabe

 

 

(vl-load-com)

(defun c:Layout_Del_All (/ layout)

(command "_undo" "_begin")
 
(vlax-for LAYOUT 
(vla-get-layouts(vla-get-activedocument(vlax-get-acad-object)))
(vl-catch-all-apply 'vla-delete (list LAYOUT))
)

(command "_undo" "_end")

(princ)
)

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Pour mon ventre à choux ;)

 

(defun c:dla(/ doc lay)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (vlax-for lay (vla-get-layouts doc)
   (or (equal (vla-get-activelayout doc) lay) (eq (vla-get-name lay) "Model")
     (vla-delete lay)
   )
 )
 (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

Lien vers le commentaire
Partager sur d’autres sites

Pendant que certains déguste une galette (une bonne bretonne au blé noir) et du cidre, d'autres apprécient un plateau de fruits de mer avec un bon muscadet, des crustacés et de la mayonnaise :D

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Pour répondre à la question comment adapter le code? Il suffisait de jouer avec le réglage de la variable TILEMODE à 1 en début de code au moyen de l'expression suivante:

(setvar 'TILEMODE 1)

 

Sinon en sacrifiant la performance à la concision, le code peut se résumer à cette macro commande (à copier-coller sur la ligne de commande):

(foreach x (layoutlist) (command "_LAYOUT" "_DEL" x))

Ou éventuellement à celle-ci

(repeat (length (layoutlist)) (command "_LAYOUT" "_DEL" ""))

Bon ça scintille un peu à l'affichage, mais l'écriture et accessible au plus grand nombre ;-)

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

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é