Aller au contenu

TROUVER LES BLOCS


PHILPHIL

Messages recommandés

bonjour

 

je ne sais pas si ca existe ou si c'est programmable facilement.

 

j'ai plein de fichiers pour différentes affaires dans plein de sous répertoire.

 

 

je cherche un programme qui me permetrait de lister les noms de fichiers *.dwg ou j'ai pu insérer un bloc dont je connais le nom.

 

en cherchant dans le répertoire et les sous répertoire que j'ai choisi.

 

un peu comme le programme de GILE textfinder

 

merci

 

a+

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu peux récupérer les chemins de tous les fichiers .dwg d'un dossier avec :

System.IO.Directory.GetFiles(dossierSource, "*.dwg", SearchOption.AllDirectories);

Ensuite, tu peux ouvrir ces fichier "en mémoire" avec ReadDwgFile() et voir si la table des blocs contient ton bloc.

 

Un petit exemple vite fait :

 

        /// <summary>
       /// Obtient la listes des fichiers dwg contenant le bloc.
       /// </summary>
       /// <param name="sourceDir">Répertoire source</param>
       /// <param name="blockName">Nom du bloc</param>
       /// <returns></returns>
       public List<string> FindBlock(string sourceDir, string blockName)
       {
           var filenames = new List<string>();
           foreach (var filename in Directory.GetFiles(sourceDir, "*.dwg", SearchOption.AllDirectories))
           {
               try
               {
                   using (var db = new Database(false, true))
                   {
                       db.ReadDwgFile(filename, FileOpenMode.OpenForReadAndAllShare, false, null);
                       using (var tr = db.TransactionManager.StartOpenCloseTransaction())
                       {
                           var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                           if (bt.Has(blockName))
                               filenames.Add(filename);
                           tr.Commit();
                       }
                   }
               }
               catch(System.Exception ex)
               {
                   var ed = AcAp.DocumentManager.MdiActiveDocument.Editor;
                   ed.WriteMessage($"\nErreur avec le fichier '{filename}' : {ex.Message}");
               }
           }
           return filenames;
       }

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Hello Gile

 

Merci

 

j'ai posté cette question ici pensant que ca ne devait pas etre un programme Lisp

 

mais par contre j'y connais rien en programmation

 

c'est quoi comme type de language ca ???

 

a+

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Oh là non, ce n'est pas une bataille.

 

c'était aussi pour ne pas passer par autocad pour chercher les blocs.

On ne peut pas lire un fichier dwg sans AutoCAD (ou un clone).

Sans AutoCAD, le seul moyen serait de lire des fichiers .dxf (comme des fichiers texte) pour y chercher le nom du bloc.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

merci merci, pas de bataille de programmeurs svp

Salut

 

Je suis exactement du même avis que (gile).

Le sens de ta question me faisais penser que cela n'était pas faisable en lisp, d'où ma réponse.

 

@gile

Pour une fois que c'est plus concis qu'en lisp ;)

Ce qui me dérange avec ce langage, c'est la portabilité ainsi que le temps à y consacrer (je ne suis plus célibataire) car avec tes tutos, cela donne quand même envie de s'y mettre.

Si un jour je passe sur Revit (et je pense que cela sera plus tôt que je le pense, évolution du métier oblige) et que le besoin d'optimiser la conception se fait ressentir, je ne dis pas... :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

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é