drault Posté(e) le 3 mars 2021 Posté(e) le 3 mars 2021 -Autocad MAP 3D 2018- Bonjour, Dans le cadre d'une utilisation d'autocad avec 1 fichier = 1 Plan où chaque fichier reçoit la numérotation de la position dans le dossier et au sein du fichier, onglet présentation, un texte indique aussi la numérotation de la position dans le dossier, existe-t-il un logiciel ou un Lisp pour traiter tout ou partie de la question ? Dans l'attente d'un retour, je reste disponible pour compléter si besoin, Merci la communauté et belle journée,
lecrabe Posté(e) le 3 mars 2021 Posté(e) le 3 mars 2021 Hello Franchement je n'ai pas tout compris !? Si tu veux re-organiser / trier / renommer / deplacer / etc, tes Presentations, je te conseille l excellente routine "TabSort" de Lee-Mac !http://www.lee-mac.com/tabsort.html Voir aussi la routine "RenumberLayouts" : http://www.lee-mac.com/renumberlayouts.html MERCI au Grand Maitre Lee-Mac !! La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team
drault Posté(e) le 3 mars 2021 Auteur Posté(e) le 3 mars 2021 Hello Franchement je n'ai pas tout compris !? Si tu veux re-organiser / trier / renommer / deplacer / etc, tes Presentations, je te conseille l excellente routine "TabSort" de Lee-Mac !http://www.lee-mac.com/tabsort.html Voir aussi la routine "RenumberLayouts" : http://www.lee-mac.com/renumberlayouts.html MERCI au Grand Maitre Lee-Mac !! La Sante, Bye, lecrabe "fatigue" Wow, puissant ! Merci pour les tips. En l’occurrence, ce n'était pas le souci.Mon problème se situe en amont et en aval.Je souhaiterai renommer mes DWG rapidement par un programme, on touche à l'interface windows.Ensuite, je cherche à renommer de manière macro, en ayant ouvert tous mes DWG (ils ont tous une seule présentation), chaque texte indiquant le numéro de page. Si toujours pas clair, je peux faire des imprimes écran.
Fraid Posté(e) le 3 mars 2021 Posté(e) le 3 mars 2021 Bonjour, Il faut pouvoir récupérer le texte en question.Si il n'a pas de particularité, cela va être difficile.C'est une des raisons pour utiliser des attributs en page de garde si il a toujours la même position peut etre... https://github.com/Fraiddd
drault Posté(e) le 3 mars 2021 Auteur Posté(e) le 3 mars 2021 Bonjour, Il faut pouvoir récupérer le texte en question.Si il n'a pas de particularité, cela va être difficile.C'est une des raisons pour utiliser des attributs en page de garde si il a toujours la même position peut etre... Merci pour ton retour. Oui, l'emplacement est toujours le même.Que changerait l'attribut ?
Fraid Posté(e) le 3 mars 2021 Posté(e) le 3 mars 2021 Oui, l'emplacement est toujours le même. donne nous ces coordonnées, et nous pourrons te faire un ptit lisp. Que changerait l'attribut ? La, comme ça, difficile de t'expliquer tout les avantages.il te manque donc une formation...mais déjà, les fonctions pour lire les attributs existent,pas pour ton texte. https://github.com/Fraiddd
Fraid Posté(e) le 5 mars 2021 Posté(e) le 5 mars 2021 Bonjour, Malgré le silence, je partage ma p'tite chose. ;;Ressources (vl-load-com) ;;;c:renameDwgByTxt ;;;Renomme les dwg d'un dossier par un texte présent dans l'espace papier. ;;;Ouvrir un des dwg (il ne seras pas traité), taper renameDwgByTxt et choisir le texte (doit avoir la même position dans chaque dessin) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:RenameDwgByTxt (/ getvlatext axdoc lf dir pos posobj txt cpt cmd) ;;Fonctions internes ;;;getvlatext ;;;Retourne le VLA-OBJECT d'un texte sélectionné (defun getvlatext ( / obj ename vlaobj) (while (/= "TEXT" obj);tant qu'un texte n'est pas sélectionné (princ "\nSélectionnez le texte de référence.") (setq ename (ssname (ssget "_:S+.") 0);"_:S+." permet de sélectionner un seul objet obj (cdr (assoc 0 (entget ename))) vlaobj (vlax-ename->vla-object ename) ) );while );defun getvlatext ;;Variables Autocad (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0) ;;Principal (and (setq cpt 0;Compteur dir (getvar 'dwgprefix);Chemin du dossier du dessin ouvert lf (vl-directory-files dir "*.dwg" 1);Liste des dwg dans le dossier ) (setq pos (vlax-get 'textalignmentpoint (getvlatext)));Position du texte de référence (foreach f lf;Pour chaque dwg (if (and (/= f (getvar 'dwgname))(setq axdoc (getaxdbdoc (strcat dir f))));Si ce n'est pas le dessin en cours, on entre dans le fichier (progn (vlax-for obj (vla-get-paperspace axdoc);Pour chaque objet présent dans l'espace papier (and (= (vla-get-objectname obj) "AcDbText");Si c'est un texte (setq posobj (vlax-get 'textalignmentpoint obj));position du texte (= (fix(*(car pos)100)) (fix(*(car posobj)100)));si position des textes egal (= (fix(*(cadr pos)100)) (fix(*(cadr posobj)100))) (setq txt (vla-get-textstring obj));String du texte (not (wcmatch txt "*.dwg"));Si le texte ne se termine pas par .dwg (setq txt (strcat txt ".dwg"));Rajout de .dwg );and );vlax (vlax-release-object axdoc);Réalisation par Fraiddd :) (command "_.delay" 200);Une petite pose s'impose (if (and txt (vl-file-rename (strcat dir f) (strcat dir txt)));Si l (setq cpt (1+ cpt) txt nil) );if (command "_.delay" 200);une 2ème moins sur );progn );if );foreach );and ;;Sortie (setvar 'cmdecho cmd) (if (= cpt 0) (princ "\nEchec, aucun fichier renommé.");Try again (princ (strcat "\nOpération réussie, " (itoa cpt) " fichiers renommés.")) );if (princ);Sortie propre );defun ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Accèder à un dessin fermé (defun getaxdbdoc (filename / axdbdoc release) (setq axdbdoc (vlax-create-object (if (< (setq release (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (if (vl-catch-all-apply 'vla-open (list axdbdoc filename)) (not (vlax-release-object axdbdoc)) axdbdoc ) ) Il ne faut pas ouvrir tous les fichiers, mais un seul dans lequel il faut choisir le texte en question. le fichier ouvert n'est pas traité. J'ai fait un effort de commentaires pour ceux qui se lancent. Je trouve que nous sommes de moins en moins nombreux à Lisper. A tantôt https://github.com/Fraiddd
lecrabe Posté(e) le 5 mars 2021 Posté(e) le 5 mars 2021 Hello Fraid 1) Merci pour tes contributions ! 2) Pourquoi es tu obligé de "délayer" 2 fois ? La Santé, Bye, lecrabe "fatigué" Autodesk Expert Elite Team
Fraid Posté(e) le 5 mars 2021 Posté(e) le 5 mars 2021 Pourquoi es tu obligé de "délayer" 2 fois ? quand j'ai testé j'ai eu un effet d’emballement.(les derniers fichiers n’étaient pas renommés)mon pc qui me sert à programmer est un fer à repasser...j' en ai mis 2 pour être sur.je pense qu'il peut sauter.Peut être que cela fonctionne sans du tout de pause avec Windows 10suis encore sur 7 cela va te faire 3002 routines!!!!! https://github.com/Fraiddd
Fraid Posté(e) le 6 mars 2021 Posté(e) le 6 mars 2021 Bonjour, J'ai modifié mon code, pour que cela fonctionne si la page de garde est en métre.(0.297/0.210)J'avais fait mes testes au mm.(297/210) https://github.com/Fraiddd
drault Posté(e) le 26 mars 2021 Auteur Posté(e) le 26 mars 2021 On 03/03/2021 at 19:33, Fraid said: donne nous ces coordonnées, et nous pourrons te faire un ptit lisp. La, comme ça, difficile de t'expliquer tout les avantages. il te manque donc une formation... mais déjà, les fonctions pour lire les attributs existent, pas pour ton texte. Effectivement. Pourrais-tu me rediriger vers une que tu connais ? Ou tout du moins, une page reprenant la question des attributs, avant et inconvénients ? Pour revenir sur ton LSIP, merci, je vais tester et te dire. Effectivement, il faudrait un jour que je me mette au LISPage ou tout du moins au codage. aurais-tu peut-être un site pour des explications pas à pas ? Ou sinon, j'irais sur youtube. Merci
Curlygoth Posté(e) le 14 avril 2021 Posté(e) le 14 avril 2021 Le site de @(gile) : https://gilecad.azurewebsites.net/Tutorials.aspx Super tuto introduction a autolisp ! Le site de @didier : https://www.da-code.fr/ Pareil c'est expliqué de pas à pas ! Perso j'ai ça en VBA par contre : Mon site Web (en cours de construction) : Site DA-CODE de @didier
drault Posté(e) le 22 mai 2021 Auteur Posté(e) le 22 mai 2021 Merci pour ta contribution. Petit retour: -Pour le moment, j'essaie de dégrossir le travail du BE où je travaille. Je regarderais plus en détail comment me former sur les LISP ensuite. -le LISP ne marche pas où tout du moins, je n'arrive pas à le faire marcher. Si c'est un bout de code, alors je le stock, merci. Si c'est un LISP prêt à l'emploi sûrement que je m'y prends mal. Pour reformuler mon besoin. Au sein de la collectivité où nous sommes, on a une charte de nommage mais bien souvent elle n'est pas respectée, je cherche donc à macro gérer le nommage des fichers dwg. Je peux donc faire un .txt pour chaque affaire/dossier nécessitant un renommage pour tous les dwg inclus dedans ou mettre le texte en question dans l'espace objet d'un des fichiers. Si une piste se dégage, je suis preneur. Bonne journée,
didier Posté(e) le 22 mai 2021 Posté(e) le 22 mai 2021 Bonjour @drault On en fait des efforts pour comprendre, mais perso je lis et je relis et je doute encore, de là à répondre il y a un manque d'information. Merci de faire le point de ce qu'on a et de ce qu'on veut. Du style : Dans un fichier dessin, j'ai un texte (un attribut serait plus facile) et la valeur contenue dans ce texte doit être le nom qui servira à renommer le fichier dans lequel est ce texte. Exemple : Un bloc avec attribut ou un texte qui contient "Plan Troisième étage" dans le fichier "immeuble.dwg" fera que le fichier immeuble.dwg sera renommé en "Plan Troisième étage.dwg" Est-ce bien ça ? Ce serait plus facile avec un bloc, car on peut interroger la totalité du dessin et trouver le bloc, pour un texte c'est beaucoup plus empirique, coordonnées d'insertion par exemple, il est déplacé d'un dixième d'entité dessin et on ne le trouve plus. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
drault Posté(e) le 22 mai 2021 Auteur Posté(e) le 22 mai 2021 Merci pour ton retour Didier. J'avais cette phrase de Montesquieu en tête, la faute est à moitié à celui qui parle à moitié à celui qui écoute. J'ose pas dire quand on écrit...😄😅 Tu as tout à fait comprit la demande ou alors, j'ai mieux compris comment il faut que je reformule. Effectivement, dans le processus de travail définir un bloc dans lequel je définis un ou des attributs pour lequel j'indique le nom définitif du fichier m'irait. le nommage du dwg aurait la forme suivante LEVA_COLL DANTON_61008_R00_PRO_MOA_2020 => VILLE_TYPE_NUMERO_ETAGE_ETAT_PRODUCTEUR_ANNEE Effectivement avec ces attribut dans un bloc, je peux me débrouiller. Merci
Fraid Posté(e) le 22 mai 2021 Posté(e) le 22 mai 2021 10 minutes ago, drault said: Effectivement avec ces attribut dans un bloc, je peux me débrouiller Je vois que tu as compris l'un des rôles des attributs. sinon pour le lisp que je t'ai écrit, tu as juste à copier coller l'intégralité, puis taper RenameDwgByTxt https://github.com/Fraiddd
didier Posté(e) le 22 mai 2021 Posté(e) le 22 mai 2021 Bonjour @drault Effectivement plus la question est explicite plus elle a de chances de trouver réponse. Je n'ai pas vu ce le LSP de @Fraid Si tu ne t'en sors pas reviens à la charge avec des explications sur ce qui ne fonctionne pas. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
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