sada20 Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 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.
>>NicoM Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 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.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.
sada20 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 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.
>>NicoM Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 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.
Elun Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Salut, Je suis tombé sur le topic suivant qui devrait peut être répondre à ta question :http://cadxp.com/topic/41852-resolu-lisp-proprietes-personnelles-gile/ Cependant cela nécessite de passer par du Visual Lisp donc bon chance ;p
sada20 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 je sèche (rires forts), je pige rien ou alors faut m'expliquer je ne demande que ça
Elun Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 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 ^^"
sada20 Posté(e) le 1 août 2019 Auteur Posté(e) le 1 août 2019 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
Elun Posté(e) le 1 août 2019 Posté(e) le 1 août 2019 Bonjour, As-tu le fameux fichier LISP en question ? Il sera plus simple pour moi de le tester ;p Merci
sada20 Posté(e) le 1 août 2019 Auteur Posté(e) le 1 août 2019 Tu trouveras le fichier ici https://forums.autodesk.com/t5/autocad-tous-produits-francais/sommaire-automatique/td-p/2568605 https://forums.autodesk.com/t5/autocad-tous-produits-francais/creer-un-sommaire-vias-chaque-cartouche/td-p/1940258 Merci
Elun Posté(e) le 1 août 2019 Posté(e) le 1 août 2019 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 ?
sada20 Posté(e) le 1 août 2019 Auteur Posté(e) le 1 août 2019 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.
iowa13 Posté(e) le 17 octobre 2023 Posté(e) le 17 octobre 2023 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
iowa13 Posté(e) le 19 octobre 2023 Posté(e) le 19 octobre 2023 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
Olivier Eckmann Posté(e) le 2 novembre 2023 Posté(e) le 2 novembre 2023 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 1
iowa13 Posté(e) le 2 novembre 2023 Posté(e) le 2 novembre 2023 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)) )
Olivier Eckmann Posté(e) le 2 novembre 2023 Posté(e) le 2 novembre 2023 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?
iowa13 Posté(e) le 2 novembre 2023 Posté(e) le 2 novembre 2023 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.
Olivier Eckmann Posté(e) le 3 novembre 2023 Posté(e) le 3 novembre 2023 Pourquoi ne pas utiliser l'extraction de données qui fait le boulot nativement sans développement?
Olivier Eckmann Posté(e) le 3 novembre 2023 Posté(e) le 3 novembre 2023 La vidéo ici : https://streamable.com/mk6qql
iowa13 Posté(e) le 3 novembre 2023 Posté(e) le 3 novembre 2023 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
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