Aller au contenu

pagination automatique


zebulon_

Messages recommandés

Pour celui qui le souhaiterai le code précédent de la réponde 20 a été modifié comme suit avec l’évènement de fin de commande du réacteur de commande:

…
(or *command-reactor-pagine*
   (setq *command-reactor-pagine* (vlr-command-reactor "Pagination Automatique" '((:vlr-commandEnded . pagine-callback))))
)

;; Routine de pagination automatique
(defun pagine-callback (rea evenement)
 (or *acaddoc* (setq *acaddoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
 (and (eq (car evenement) "LAYOUT_CONTROL")
      (ssget "_X" '((0 . "INSERT,*TEXT") (-3 ("PaginationData"))))
…

 

Pour l’instant le fonctionnement me convient bien, et éventuellement si à l’usage je viens à modifier le code, j’essayerai d’intégrer la possibilité évoqué par zebulon :

j'y vois quand même un inconvénient. Il arrive de faire des présentations qu'on ne souhaite pas diffuser. Si je mets un numéro dans le nom de l'onglet, il sera compté sinon il est laissé de côté.

En faisant précéder du signe – (négatif) le nom des onglets qui seront laissé de côté.

 

A+ Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

il y a quelques années en arrières déjà, je n'était posé les mêmes questions.

Et après quelques essais, j'ai vite abandonné la méthode des onglets.

Aujourd'hui, j'utilise une seule fenêtre qui gère des fenêtres liées à un cadre de gabarit.

J'ai volontairement limité un carnet à 60 folios.

Au delà je crée des carnets de carnets, en compilant un DSD global à partir des DSD de chaque carnets.

Cette méthode permet en publiant ces carnets d'effectuer des carnets DWF ou PDF très simplement.

Les routines sont en VBA et Lisp.

Un bloc insérer dans le cadre de la fenêtre donne l'indication du folio à créer et remplit automatiquement le

numéro du folio.

Si quelqu'un est intéressé, je peux donner plus d'infos.

Daniel OLIVES

Lien vers le commentaire
Partager sur d’autres sites

  • 4 ans après...

Bonjour,

 

Un grand merci à VDH-Bruno pour le lisp pagine. J'ai essayé de le triturer à ma sauce mais impossible j'y comprend vraiment rien.

Je vous explique :Ce lisp me donne une numérotation de mes cartouches du style 1/11 puis 2/11 ect..

Bref il est très bien , mais je voudrai qu'il me fasse du style 1 puis 2 ect... ou 01 puis 02.

Car je l'extrait pour en faire un sommaire avec la commande EXTRACTDONNEES, (mais il compte toute les presensations de mon dessin alors que je n'en ai pas forcement besoin,et je n'arrive pas à mettre le sommaire dans l'ordre a cause du /.

 

Help.

 

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour VDH-Bruno,

Un grand merci pour ton super lisp "PAGINE"

Par contre je souhaiterai enlever le / et le nombre total de page pour ne laisser que le numero de page.

Exemple :

 

actuellement 1/12 puis 2/12 ect..

 

et je souhaiterai 01 puis 02 ect..

 

Cela m'aiderai beaucoup puisque j'extrait ma liste pour en faire un sommaire

 

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

et je souhaiterai 01 puis 02 ect..

 

 

Bonjour,

 

Je n'ai pas accès à un AutoCAD avec une version lisp pour tester..

 

Dans le code identifie la séquence suivante:

;; Numérotation de la présentation de l'objet
(defun bv:GetTaborder (pref obj)
 (or *acaddoc* (setq *acaddoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
 (if (= (type obj) 'ENAME)
   (setq obj (vlax-ename->vla-object obj))
 )
 (strcat pref
         (itoa (vla-get-taborder (vla-get-layout (vla-objectidtoobject *acaddoc* (vla-get-ownerid obj)))))
         "/"
         (itoa (1- (vla-get-count (vla-get-layouts *acaddoc*))))
 )
)

 

Puis remplace ces qqe lignes:

(strcat pref
         (itoa (vla-get-taborder (vla-get-layout (vla-objectidtoobject *acaddoc* (vla-get-ownerid obj)))))
         "/"
         (itoa (1- (vla-get-count (vla-get-layouts *acaddoc*))))
 )

 

Par les suivantes:

(strcat pref
         (itoa (vla-get-taborder (vla-get-layout (vla-objectidtoobject *acaddoc* (vla-get-ownerid obj)))))               
 )

 

Recharge le code cela devrait fonctionner...

 

A+ Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Bruno,

 

Je te remercie pour ton code mais Je l'ai testé et il ne fonctionne pas .

 

J'ai le message suivant.

 

_appload pagine.LSP correctement chargé(s)

Commande: ; erreur: structure incorrecte de la liste en entrée

 

Je ne voudrai pas abuser , mais si tu peux me dépatouiller ça cela m'aiderai beaucoup.

 

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Salut la compagnie,

 

Je réveille ce vieux post après recherche.

 

En allant voir en même temps sur une autre source ici, j'ai trouvé ça que j'aime déjà vu les possibilités :

 

Champ --> Expression Diesel --> $(substr,$(getvar,ctab),1,2)

 

Le 1 correspond au 1er caractère

Le 2 correspond au nombre de caractères à prendre en compte. Ici, cela correspond au 1er et 2em

Un $(substr,$(getvar,ctab),4,20) prendrait le 4em caractère et les 19 suivants

 

Avec le Diesel, je nomme mon onglet "1 - Rez de chaussée"

J'extrais le "1" sur un texte et "Rez de chaussée" sur un autre texte, à 2 endroits de ma présentation... Je kiffe ^^

Dessin, Synthèse, Conseil, en Etude et Exécution.

Lien vers le commentaire
Partager sur d’autres sites

  • 5 mois après...

Bonjour à tous,

 

Super routine que Bruno nous présente là!!! merci à toi, à lili et patrick qui l'ont enrichi

 

Etant débutant dans la programmation j'aimerai rajouter une dernière modification pour qu'il me serve pour tout mes projets...

mais je n'y arrive pas.

 

Il faudrait pouvoir retirer l'onglet présentation de départ dans la comptabilité de cette routine, qui me sert de page de présentation (mon cartouche général...

un peu a l'image de l'onglet objet qui ne fait pas parti du compte des pages.

 

Si quelqu'un passe part là et qui pour lui c'est 2 lignes de codage ne sont qu'une formalité je l'en remercierais :D .

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...
  • 2 ans après...

Bonjour,

Petit remontage de sujet...
Merci @VDH-Bruno pour cette routine que j'utilise assez souvent.

Petite question, il m'arrive dans de rare cas à devoir supprimer cette pagination auto. Et c'est là que ça se complique si j'utilise un bloc avec attribut. Avez-vous une astuce pour faire ça ?

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

En fait, dans certain cas, on me demande de faire de l'assemblage de PDF à posteriori avec des pages s'intercalant et venant d'autres sources. Du coup, avec PAGINE en place, je ne peux plus modifier manuellement la pagination des présentations. Chaque passage d'une présentation à une autre relance pagine sur l'attribut de mon bloc.

Donc une désactivation peut, à mon avis, convenir.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Le 21/04/2020 à 09:10, Goninph a dit :

Bonjour,

 

Est ce possible avec AUTOCAD LT 2020 qui ne gère pas les LISP de numéroter les pages dans un cartouche 1/5 2/5 3/5 lorsque l'on clique sur la commande PUBLIER ?

 

Merci et meilleures salutations

Philippe

peux-tu insérer un champ dans un texte ou attribut de bloc ?

Lien vers le commentaire
Partager sur d’autres sites

Je verrais pour intégrer cette possibilité dans le code, pour l'instant je n'ai pas AutoCAD sous la main, donc en provisoire je te propose de ne charger le lisp que sur les fichiers dont tu dois mettre à jour la numérotation. En provisoire pour ton cas si le lisp n'est pas chargé la numérotation reste figé à chaque changement d'onglet.

A+ Bruno

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...

Bonjour, je me permets de ré-ouvrir ce sujet ! 

Je viens de découvrir la routine de pagination automatique, elle est très intéressante merci @VDH-Bruno
A ce sujet, j'aurai aimé savoir s'il y avait une possibilité afin de définir à partir de quelle présentation commencer la numérotation ?
Je m'explique, dans l'idée j'ai des plans sur lesquels je travaille mais ceux-ci comprennent à minima 3 présentations "figées" que l'on garde pour tous nos plans.
L'idée serait de permettre la numérotation à partir de la présentation 4 voire 5 (par exemple), mais en lui affectant le numéro "0 0 1 " et que le reste des présentations créées soient dans la continuité de cette présentation et pas par rapport au nombre totale de présentations créées.

De plus je voulais revenir sur le commentaire de @Bouldi concernant une numérotation commençant par '0 0 1' et pas uniquement '1', est ce que cela est possible directement dans ta routine ?

PS : Je n'y connais absolument rien au codage, donc il m'est assez difficile de comprendre et modifier la routine proposée ! 

Merci d'avance pour les réponses à mes questions 😄 

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é