Aller au contenu

SOMMAIRE AUTOMATIQUE


sada20

Messages recommandés

bonjour,

je souhaiterai créer un sommaire automatique en fonction de ce type de cartouche ci-joint.

 

https://www.dropbox....t/test.dwg?dl=0

 

J'ai essayé le lisp de Patrick 35 (paix à son âme) mais des que je remplace les nom des attributs que ce soit sur mon bloc ou bien dans le lisp j'ai un message d'erreur.

Une âme charitable pourrait elle m'aider à réaliser un lisp fonctionnelle?

 

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

En lisp je ne sais pas faire, je suis pas encore assez caler sur le sujet pour pouvoir te répondre.

 

Par contre j'ai une solution alternative, qui fonctionne assez bien et qui permet une grande liberté sur le sommaire utilisé:

 

Il faut commencer par aller dans les propriétés du document comme ci-dessous (ou avec la commande _DWGPROPS)

Ensuite tu ajoute une propriété, page 01, page 02, etc...

Et enfin dans ton sommaire tu fais des champs (avec CTRL+H) qui vont chercher la propriété du document que tu viens de créer.

rnt8.jpg

Tu n'as plus qu'a faire de même avec le titre qui figure sur chacune de tes pages.

Une fois les propriétés modifiées, un petit Regen et le tour est joué ! :D

 

J'espère que cela te conviendra ;)

Projeteur Béton Armé sur Revit et AutoCAD 2023

Une connaissance acquise ne devient vivante que si on l’a repensée par soi-même.

Lien vers le commentaire
Partager sur d’autres sites

Merci, c'est déjà ça, mais je recherche une solution pour plusieurs fichiers différents.

Car là ta solution m'oblige à refaire la même chose sur tous et ça prends du temps.

Même si je n'ai pas les croix de révisions d'indice, cela ne me dérange pas. tant que j'ai le numéro de chaque page, avec le titre et l'indice cela me va, mais avec une pagination et formalisme identique à tous mes fichiers.

Lien vers le commentaire
Partager sur d’autres sites

Car là ta solution m'oblige à refaire la même chose sur tous et ça prends du temps.

 

Ah oui ç'est un peu long à mettre en place !

C'est pour ça que j'utilise un gabarit qui intègre tout ça à chaque ouverture de nouveau document.

Tous les anciens fichiers qui n'utilisaient pas ce gabarit se modifient encore à la main... trop long de tout reprendre !

 

Pour la solution LISP je suis incapable de te proposer quelque chose... :(

Projeteur Béton Armé sur Revit et AutoCAD 2023

Une connaissance acquise ne devient vivante que si on l’a repensée par soi-même.

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai malheureusement pas accès au lien dropbox donc je vais simplement expliquer ce que je sais (je débute aussi, alors je risque de dire quelques conneries ;p).

 

Pour en revenir à la solution de NiCom, c-à-d de passer par les propriétés de dessin, il faut pouvoir créer les propriétés de dessin nécessaires. L'ensemble de ces propriétés sont contenues dans un VLA-OBJECT (obtenu avec des fonctions Visual Lisp) nommé SummaryInfo.

 

On obtient cet "objet" grâce aux lignes de code suivantes :

(or *acdoc*
   (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(setq target (vla-get-SummaryInfo *acdoc*))

 

 

Le but du programme de (gile) est de récupérer l'ensemble des propriétés du dessin d'un fichier source (que l'on choisira au cours de la commande) pour ensuite copier le nom de la propriété ainsi que sa valeur dans le fichier en cours d'utilisation. En gros, au lieu de devoir effectuer n fois la saisie des propriétés de dessin à chaque ouverture d'un ancien fichier (qui n'est donc pas issu d'un DWT fraîchement créé avec les propriétés existantes), cette commande devrait faire ce travail à ta place.

 

Il faudra quand même faire cette saisie au moins 1 fois pour qu'elle existe dans un fichier (DWG ou DWT) qui servira ensuite de source à chaque fois que tu voudras créés les propriétés.

 

 

Si jamais ça ne répond pas à ta question, c'est que j'ai pas compris ^^"

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour te résumer, j'ai un folio "PDG-F00"(ma page de garde) puis un folio "F-0A"(sommaire page 1), un folio "F-0B"(sommaire page 2), un folio "F-01" mon plan etc...

 

Je souhaiterai créer un sommaire automatique qui va aller me récupérer ce qui se trouve dans certains attributs du cartouche tels que titre 1 et titre 2, le numéro du folio (F-0X etc...) et l'indice pour les mettre dans le sommaire

 

Ci-dessous un liens du fichier WEtransfer

 

https://we.tl/t-RPqmMuhag3

 

 

Patrick_35 avait fait un Lisp SOM.lsp mais des que je modifie les noms des folios cela me mets un message d'erreur soit pas de plans soit erreur:type d'argument incorrect….)

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Je dois bien avouer que la compréhension d'un tel LISP est au dessus de mes compétences, mes connaissances en Visual LISP sont quasi nulles.

 

Cependant, le gros problème des cartouches est qu'il faut avoir un LISP spécifique à chaque structure de cartouches et de sommaire souhaité. Ainsi, lorsque Patrick_35 (paix à son âme) à créer le fichier SOM.lsp, il l'a créer en réponse à une demande par rapport à un fichier DWG spécifique.

 

Donc pour résumer, il est possible de modifier ce fichier mais pour cela il faut comprendre sa démarche pour pouvoir ensuite l'adapter à ton problème. La seconde soluce (la plus simple à mes yeux de débutant) est de créer un LISP spécifique pour ton cartouche en s'inspirant du fichier SOM.lsp

 

Je peux passer un peu de temps pour voir ce qu'il est possible de faire car j'ai moi-même dû créer un programme similaire (récupération des attributs de bloc ou redéfinition, il me manque la partie de création de table).

 

Du coup, juste pour savoir, le sommaire doit être placé à un endroit spécifique (le même pour tous les plans) ou bien c'est plus comme un bloc qu'on insère où on veut ?

Lien vers le commentaire
Partager sur d’autres sites

sur le Lisp de Patrick, il s'insère à sur le folio 000-1 au milieu mais dans l'espace objet cela ne me dérangerait pas ou bien la meme chose ou en haut à gauche pour prendre la page complète ou bien si j'avais la main pour l'insertion.

Lien vers le commentaire
Partager sur d’autres sites

  • 4 ans après...

Bonjour.

Je relance ce sujet, car je suis presque dans le même cas.

1) Mes onglets sont du type "01-A-nom du dessin" (01 = numéro du plan, A= lettre de l'indice et le nom du dessin)

Une façon simple pour moi d'avoir les infos de base, nom et indice, pour retrouver le plan en lisant l'onglet.

2) ma configuration d'onglet 01-A-xxxxx  renvoi ces valeurs dans le cartouche à différent endroit via ce principe de code

$(substr,$(getvar,ctab),1,50)

Jusque la rien de particulier.

3) Dans le lisp de Patrick_35 (SOM.lsp), il y a cette ligne qui est en relation avec un dwg dont les onglets sont nommés 001-0 / 002-1 / etc....

(setq ef (ssget "x" (list (cons 410 "000-1")

4) il y a également un tableau d'indice qui mets un croix dans  un case en fonction du numéro d'indice dans le plan

Mes questions....

1) Est il possible de répertorier tout les onglets et y lire les infos dans le cartouche "numéro de plan +  titre 1 voir titre 2 + indice + folio " ?

Le listing se fait deja mais le nom des onglets posent problème en cas de modif

Je me dis que si la lecture de l'onglet n'etait pas aussi "sélectif", cela serait plus simple car le tri se fait avec le numéro de plan dans le cartouche

2) Est il possible, dans le même principe de récupération de données dans le cartouche, d'afficher le numéro d'indice et non un tableau avec une croix, car certains plans n'ont pas le même niveau de révision.

 

ps, comme vous vous en doutez, je n'y connais rien en programmation.

Merci d'avance de votre aide

 

Som.lsp EXEMPLE-1.dwg

Lien vers le commentaire
Partager sur d’autres sites

Bonjour.

J'ai un peu avancé sur le lisp sommaire (som.lsp ci dessus), mais je bloque sur un point (avant le prochain..)

apparemment, il ne peux lister que 3 choses via la commande "car" ou "cadr" ou "caddr".

Dans mon cas, j'en aurais 4 apres liste des docs. (position des titres à l'horizontal)

(text (+ x 16) (- y 4) "LISTE DES DOCUMENTS" 5)
      (text (+ x 92) (- y 4) "N° PLAN" 5)
      (text (+ x 102) (- y 4) "FOLIO" 5)
      (text (+ x 118) (- y 4) "INDICE" 5)
	  (text (+ x 140) (- y 4) "DATE" 5)

Je pense que le listing se joue dans ces lignes, mais je bloque car novice

      (foreach txt lst
	(text (+ x 2.5) (- y 2) 
	(if (not (member (cadddr txt) (list "" "-")))
				 ; (strcat (caddr txt) " - " (cadddr txt))
				  (caddr txt) 
				)
				4
	)
	(text (+ x 92) (- y 2) (car txt) 5)
	(text (+ x 102) (- y 2) (cadr txt) 5)
	(text (+ x 118) (- y 2) (cadddr txt) 5)
	(text (+ x 140) (- y 2) (caddr txt) 5)
	;(text (+ x 104 (* (atoi ind) 4)) (- y 2) "cadr txt" 5)

 

Pour le moment j'arrive à afficher tout sauf la colonne DATE...

(certains me diront surement de m'en passer.. 🙂 mais elle sert à indiquer la date de mise a jour du plan.)

 

Quelqu'un pourrait m'en dire plus ou m'aiguiller?

Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour,

 

cad, cdr et leur composante sont des raccourcis pour accéder à un des 1er éléments d'une liste.

la fonction générique pour accéder à un élément (base 0) est : nth

par exemple avec une liste

(setq lsInfo (list "A" "B" "C" "D" "E" "F"))

La récupération d'un élément peut s'écrire

(nth 0 lsInfo) ; 1er élément, la liste commence à l'indice 0 => "A"
(nth 1 lsInfo) ; 2ème élément => "B"
(nth 4 lsInfo) ; 5ème élément => "E" ou bien "Milla Jovovich" :)

 

Olivier

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

La modification doit se faire dans cette partie de code.?

Car ce que je comprends, c'est que le script liste les attributs entre les "" . mais le (cdr (assoc 0 fol).????

 

(foreach att (vlax-invoke (vlax-ename->vla-object ent) 'getattributes)
	  (cond
	    ((eq (vla-get-tagstring att) "NUMPLAN")
	      (setq rec (cons 0 (vla-get-textstring att)))
	    )
	    ((eq (vla-get-tagstring att) "NUMFOLIO")
	      (setq rec (cons 1 (vla-get-textstring att)))
	    )
	    ((eq (vla-get-tagstring att) "TITRE1")
	      (setq rec (cons 2 (vla-get-textstring att)))
	    )
	    ((eq (vla-get-tagstring att) "IND")
	      (setq rec (cons 3 (vla-get-textstring att)))
	    )
	    ((eq (vla-get-tagstring att) "DATE")
	      (setq rec (cons 4 (vla-get-textstring att)))
	    )
	  )
	  (setq fol (cons rec fol))
	)
	(setq fol (list (cdr (assoc 0 fol))
			(cdr (assoc 1 fol))
			(cdr (assoc 2 fol))
			(cdr (assoc 3 fol))
			(cdr (assoc 4 fol))
		  )

 

Lien vers le commentaire
Partager sur d’autres sites

Le fichier Exemple1.DWG n'est pas téléchargeable. Est-il possible de le poster à nouveau?

Car il faut le nom du bloc présent dans chaque présentation, ainsi que les étiquettes des attributs, puis l'endroit où vous voulez dessiner le sommaire : espace objet? présentation? sous forme de tableau? dans les attributs d'un bloc?

Lien vers le commentaire
Partager sur d’autres sites

Voici le fichier modifié pour ma façon de travailler

le nom des onglets est du type 01-A-titre (01, le numero du plan; le A pour l'indice et titre.... pour le nom du plan)

ces valeurs sont "injectées" dans le cartouche.

EXEMPLE-1.dwg

normalement je bosse suivant les règles du dessinateur... plan + cotation dans l'objet et cartouche et impression dans les parties papiers.

Lien vers le commentaire
Partager sur d’autres sites

Tout simplement parce que je connaissais pas cette méthode.

Je pensais qu'un simple "clic" pouvait résoudre mon affaire...

Je vais étudier cette nouvelle approche.

Mais il faut quand même avoir un autre fichier et si le lien est rompu, cela ne fonctionne plus.

Merci

Edit1: Je  viens de tester cette méthode sur un autre fichier, et cela ne fonctionne pas.

Est ce parce que j'ai ce code " $(substr,$(getvar,ctab),1,50)" dans la case par défaut d'un attribut....?

je continue mes recherches

Edit2: Il y a surement un bug, car il n'extrait que 5 onglets sur les 25. si je fais une modif sur le 6eme, tout le tableau débloque...

Je ne suis pas convaincu par cette méthode

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é