Hledat text v DWG C#

DWG výkresové soubory obsahují 2D nebo 3D návrhová data. Je široce používán designéry, inženýry a architekty. V určitých scénářích může být nutné najít nějaký text v souboru DWG. V souladu s tím tento článek popisuje, jak vyhledávat text v souboru DWG programově v C#.

Najít text v souboru výkresu DWG – Konfigurace C# API

Aspose.CAD for .NET podporuje vytváření nebo manipulaci s různými výkresy CAD, jako je DWG, DXF a několik dalších formátů souborů. Rozhraní API můžete snadno nastavit stažením souborů DLL ze sekce Downloads nebo spuštěním následujícího instalačního příkazu NuGet:

PM> Install-Package Aspose.CAD

Jak hledat text v souboru DWG pomocí C#

Následující kroky ukazují, jak vyhledávat text v souboru DWG pomocí C#:

  1. Načtěte existující soubor DWG.
  2. Vyhledejte text iterací přes entity CadText.
  3. Vyhledejte text v konkrétním rozvržení.
  4. Exportujte soubor do formátu PDF.

Hledat text v souboru výkresu DWG v C#

Chcete-li vyhledávat text v souboru DWG pomocí jazyka C#, musíte provést následující kroky:

  1. Načtěte existující soubor DWG s třídou CadImage.
  2. Hledejte text iterací přes CadText entit.
  3. Vyhledejte text na konkrétním rozvržení.
  4. Exportujte soubor do formátu PDF.

Níže uvedený příklad kódu ukazuje, jak vyhledávat text v souboru DWG pomocí C#:

// Načtěte existující soubor DWG jako CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // Vyhledejte text v souboru 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // Iterujeme přes entity CadText, ale některé další entity mohou obsahovat také text, např. CadMText a další
        IterateCADNodes(entity);
    }

    // Vyhledejte text na konkrétním rozvržení, získejte všechny názvy rozvržení a propojte každé rozvržení s odpovídajícím blokem s entitami
    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");

        // Najít blok, použitelný pouze pro DWG
        CadBlockTableObject blockTableObjectReference = null;
        foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
        {
            if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
            {
                blockTableObjectReference = tableObject;
                break;
            }
        }

        if (blockTableObjectReference != null)
        {
            // Kolekce cadBlockEntity.Entities obsahuje informace o všech entitách na konkrétním rozvržení
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // Export do PDF
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // Pokud je kolekce cadBlockEntity pro vybrané rozvržení nebo kolekce entityOnLayouts podle rozvržení BlockTableRecordHandle (pro dxf) prázdná
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

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





public static void SearchTextInDWGAutoCADFile()
{
    // Cesta k adresáři dokumentů.            
    string sourceFilePath = "search.dwg";
    // Načtěte existující soubor DWG jako CadImage. 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // Hledejte text v sekci entity 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // Vyhledejte text v sekci bloku 
    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;
    }
}

Získejte bezplatnou dočasnou licenci

Můžete otestovat funkce rozhraní API bez jakýchkoli omezení hodnocení, když požádáte o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili vyhledávat text v souboru DWG programově v C#. Kromě toho můžete prozkoumat různé funkce API, když se podíváte na sekci dokumentace. V případě jakýchkoliv obav nám napište na fórum.

Viz také

Prohlížeč souborů DWG založených na ASP.NET