Aller au contenu

Messages recommandés

Posté(e)

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

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

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

Posté(e)

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

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

C'est tout à fait faisable en lisp avec ObjectDBX

Tout à fait, c'est la procédure équivalente, et, pour une fois, le code C# sera plus concis que le code LISP... ;)

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

Posté(e)

hello Gile Patrick

 

merci merci, pas de bataille de programmeurs svp

 

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

 

bon week end

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

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

Posté(e)
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

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é