Rechercher du texte dans DWG C#

Les fichiers de dessin DWG contiennent des données de conception 2D ou 3D. Il est largement utilisé par les concepteurs, les ingénieurs et les architectes. Dans certains scénarios, vous devrez peut-être rechercher du texte dans un fichier DWG. Par conséquent, cet article explique comment rechercher du texte dans un fichier DWG par programmation en C#.

Rechercher du texte dans le fichier de dessin DWG - Configuration de l’API C#

Aspose.CAD for .NET prend en charge la création ou la manipulation de différents dessins CAO tels que DWG, DXF et plusieurs autres formats de fichiers. Vous pouvez facilement configurer l’API en téléchargeant les fichiers DLL à partir de la section Téléchargements ou en exécutant la commande d’installation NuGet suivante :

PM> Install-Package Aspose.CAD

Comment rechercher du texte dans un fichier DWG à l’aide de C#

Les étapes suivantes montrent comment rechercher du texte dans un fichier DWG à l’aide de C# :

  1. Chargez un fichier DWG existant.
  2. Recherchez du texte en parcourant les entités CadText.
  3. Rechercher du texte sur une mise en page spécifique.
  4. Exportez le fichier au format PDF.

Rechercher du texte dans un fichier de dessin DWG en C#

Vous devez suivre les étapes ci-dessous pour rechercher du texte dans un fichier DWG à l’aide de C# :

  1. Chargez un fichier DWG existant avec la classe CadImage.
  2. Recherchez du texte en parcourant les entités CadText.
  3. Rechercher du texte sur une mise en page spécifique.
  4. Exportez le fichier au format PDF.

L’exemple de code ci-dessous montre comment rechercher du texte dans un fichier DWG à l’aide de C# :

// Chargez un fichier DWG existant en tant que CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // Rechercher du texte dans le fichier 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // Nous parcourons les entités CadText, mais certaines autres entités peuvent également contenir du texte, par exemple CadMText et autres
        IterateCADNodes(entity);
    }

    // Rechercher du texte sur une mise en page spécifique, obtenir tous les noms de mise en page et lier chaque mise en page avec le bloc correspondant avec des entités
    CadLayoutDictionary layouts = cadImage.Layouts;
    string[] layoutNames = new string[layouts.Count];
    int i = 0;
    foreach (CadLayout layout in layouts.Values)
    {
        layoutNames[i++] = layout.LayoutName;
        System.Console.WriteLine("Layout " + layout.LayoutName + " is found");

        // Bloc de recherche, applicable uniquement pour DWG
        CadBlockTableObject blockTableObjectReference = null;
        foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
        {
            if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
            {
                blockTableObjectReference = tableObject;
                break;
            }
        }

        if (blockTableObjectReference != null)
        {
            // La collection cadBlockEntity.Entities contient des informations sur toutes les entités sur une mise en page spécifique
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // Exporter au format PDF
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // Si la collection cadBlockEntity pour la mise en page sélectionnée ou la collection entityOnLayouts par BlockTableRecordHandle de la mise en page (pour dxf) est vide
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

    pdfOptions.VectorRasterizationOptions = rasterizationOptions;
    cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}





public static void SearchTextInDWGAutoCADFile()
{
    // Chemin d'accès au répertoire des documents.            
    string sourceFilePath = "search.dwg";
    // Chargez un fichier DWG existant en tant que CadImage. 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // Rechercher du texte dans la section Entités 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // Rechercher du texte dans la section de bloc 
    foreach (CadBlockEntity blockEntity in cadImage.BlockEntities.Values)
    {
        foreach (var entity in blockEntity.Entities)
        {
            IterateCADNodes(entity);
        }
    }
}



private static void IterateCADNodes(CadBaseEntity obj)
{
    switch (obj.TypeName)
    {
        case CadEntityTypeName.TEXT:
            CadText childObjectText = (CadText)obj;

            Console.WriteLine(childObjectText.DefaultValue);

            break;

        case CadEntityTypeName.MTEXT:
            CadMText childObjectMText = (CadMText)obj;

            Console.WriteLine(childObjectMText.Text);

            break;

        case CadEntityTypeName.INSERT:
            CadInsertObject childInsertObject = (CadInsertObject)obj;

            foreach (var tempobj in childInsertObject.ChildObjects)
            {
                IterateCADNodes(tempobj);
            }
            break;

        case CadEntityTypeName.ATTDEF:
            CadAttDef attDef = (CadAttDef)obj;

            Console.WriteLine(attDef.DefaultString);
            break;

        case CadEntityTypeName.ATTRIB:
            CadAttrib attAttrib = (CadAttrib)obj;

            Console.WriteLine(attAttrib.DefaultText);
            break;
    }
}

Obtenez une licence temporaire gratuite

Vous pouvez tester les fonctionnalités de l’API sans aucune limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à rechercher du texte dans un fichier DWG par programmation en C#. De plus, vous pouvez explorer différentes fonctionnalités de l’API en consultant la section documentation. En cas de problème, veuillez nous écrire à forum.

Voir également

Visionneuse de fichiers DWG basée sur ASP.NET