Sök text i DWG C#

DWG ritfiler innehåller 2D- eller 3D-designdata. Det används ofta av designers, ingenjörer och arkitekter. I vissa scenarier kan du behöva hitta lite text i en DWG-fil. Följaktligen diskuterar den här artikeln hur man söker efter text i en DWG-fil programmatiskt i C#.

Hitta text i DWG Drawing File – C# API Configuration

Aspose.CAD for .NET stöder att skapa eller manipulera olika CAD-ritningar som DWG, DXF och flera andra filformat. Du kan enkelt ställa in API:t genom att ladda ner DLL-filerna från avsnittet Nedladdningar eller köra följande installationskommando NuGet:

PM> Install-Package Aspose.CAD

Hur man söker text i DWG-fil med C#

Följande steg visar hur man söker efter text i en DWG-fil med C#:

  1. Ladda en befintlig DWG-fil.
  2. Sök efter text genom att iterera genom CadText-enheter.
  3. Sök efter text på en specifik layout.
  4. Exportera filen till PDF-format.

Sök text i DWG-ritningsfil i C#

Du måste följa stegen nedan för att söka text i en DWG-fil med C#:

  1. Ladda en befintlig DWG-fil med klassen CadImage.
  2. Sök efter text genom att iterera genom CadText entiteter.
  3. Sök efter text på specifik layout.
  4. Exportera filen till PDF-format.

Kodexemplet nedan visar hur man söker efter text i en DWG-fil med C#:

// Ladda en befintlig DWG-fil som CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // Sök efter text i filen 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // Vi itererar genom CadText-enheter, men vissa andra enheter kan också innehålla text, t.ex. CadMText och andra
        IterateCADNodes(entity);
    }

    // Sök efter text på specifik layout få alla layoutnamn och länka varje layout med motsvarande block med entiteter
    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");

        // Hitta block, endast tillämpligt för DWG
        CadBlockTableObject blockTableObjectReference = null;
        foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
        {
            if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
            {
                blockTableObjectReference = tableObject;
                break;
            }
        }

        if (blockTableObjectReference != null)
        {
            // Collection cadBlockEntity.Entities innehåller information om alla enheter på specifik layout
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // Exportera till PDF
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // Om cadBlockEntity-samlingen för vald layout eller entitiesOnLayouts-samling av layoutens BlockTableRecordHandle (för dxf) är tom
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

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





public static void SearchTextInDWGAutoCADFile()
{
    // Sökvägen till dokumentkatalogen.            
    string sourceFilePath = "search.dwg";
    // Ladda en befintlig DWG-fil som CadImage. 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // Sök efter text i avsnittet enheter 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // Sök efter text i blocksektionen 
    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;
    }
}

Få gratis tillfällig licens

Du kan testa funktionerna i API:t utan några utvärderingsbegränsningar genom att begära en gratis temporär licens.

Slutsats

I den här artikeln har du lärt dig hur du söker efter text i en DWG-fil programmatiskt i C#. Dessutom kan du utforska olika funktioner i API:t genom att ta en titt på avsnittet dokumentation. Vid eventuella problem, skriv till oss på forum.

Se även

Viewer av DWG-filer baserade på ASP.NET