Text in DWG C# suchen

DWG-Zeichnungsdateien enthalten 2D oder 3D-Konstruktionsdaten. Es wird häufig von Designern, Ingenieuren und Architekten verwendet. In bestimmten Szenarien müssen Sie möglicherweise Text in einer DWG-Datei finden. Dementsprechend wird in diesem Artikel erläutert, wie Text in einer DWG-Datei programmgesteuert in C# gesucht wird.

Text in DWG-Zeichnungsdatei suchen – C# API-Konfiguration

Aspose.CAD for .NET unterstützt das Erstellen oder Bearbeiten verschiedener CAD-Zeichnungen wie DWG, DXF und mehrere andere Dateiformate. Sie können die API einfach einrichten, indem Sie die DLL Dateien aus dem Abschnitt Downloads herunterladen oder den folgenden NuGet-Installationsbefehl ausführen:

PM> Install-Package Aspose.CAD

So suchen Sie Text in einer DWG-Datei mit C#

Die folgenden Schritte zeigen, wie Sie Text in einer DWG-Datei mit C# suchen:

  1. Laden Sie eine vorhandene DWG-Datei.
  2. Suchen Sie nach Text, indem Sie CadText-Entitäten durchlaufen.
  3. Suchen Sie nach Text in einem bestimmten Layout.
  4. Exportieren Sie die Datei in das PDF-Format.

Text in DWG-Zeichnungsdatei in C# suchen

Sie müssen die folgenden Schritte ausführen, um mit C# nach Text in einer DWG-Datei zu suchen:

  1. Laden Sie eine vorhandene DWG-Datei mit der Klasse CadImage.
  2. Suchen Sie nach Text, indem Sie CadText-Entitäten durchlaufen.
  3. Suchen Sie nach Text in einem bestimmten Layout.
  4. Exportieren Sie die Datei in das PDF-Format.

Das folgende Codebeispiel zeigt, wie Text in einer DWG-Datei mit C# gesucht wird:

// Laden Sie eine vorhandene DWG-Datei als CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // Suchen Sie nach Text in der Datei 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // Wir iterieren durch CadText-Entitäten, aber einige andere Entitäten können auch Text enthalten, zB CadMText und andere
        IterateCADNodes(entity);
    }

    // Suchen Sie nach Text in einem bestimmten Layout, erhalten Sie alle Layoutnamen und verknüpfen Sie jedes Layout mit dem entsprechenden Block mit Entitäten
    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");

        // Block finden, gilt nur 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)
        {
            // Die Sammlung cadBlockEntity.Entities enthält Informationen zu allen Entitäten in einem bestimmten Layout
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // Als PDF exportieren
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // Wenn die cadBlockEntity-Sammlung für das ausgewählte Layout oder die entityOnLayouts-Sammlung nach Layouts BlockTableRecordHandle (für dxf) leer ist
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

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





public static void SearchTextInDWGAutoCADFile()
{
    // Der Pfad zum Dokumentenverzeichnis.            
    string sourceFilePath = "search.dwg";
    // Laden Sie eine vorhandene DWG-Datei als CadImage. 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // Suchen Sie im Abschnitt Entitäten nach Text 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // Suchen Sie im Blockabschnitt nach Text 
    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;
    }
}

Holen Sie sich eine kostenlose temporäre Lizenz

Sie können die Funktionen der API ohne Evaluierungseinschränkungen testen, indem Sie eine kostenlose temporäre Lizenz anfordern.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie Text in einer DWG-Datei programmgesteuert in C# durchsuchen. Darüber hinaus können Sie verschiedene Funktionen der API erkunden, indem Sie sich den Abschnitt Dokumentation ansehen. Bei Bedenken schreiben Sie uns bitte an forum.

Siehe auch

Viewer von DWG Dateien basierend auf ASP.NET