DWG C#'ta Metin Ara

DWG çizim dosyaları, 2B veya 3B tasarım verileri içerir. Tasarımcılar, mühendisler ve mimarlar tarafından yaygın olarak kullanılmaktadır. Belirli senaryolarda, bir DWG dosyasında bazı metinler bulmanız gerekebilir. Buna göre, bu makale bir DWG dosyasındaki metnin programlı olarak C# ile nasıl aranacağını tartışır.

DWG Çizim Dosyasında Metin Bul – C# API Yapılandırması

Aspose.CAD for .NET, DWG, DXF ve birkaç diğer dosya formatı gibi farklı CAD çizimlerinin oluşturulmasını veya işlenmesini destekler. İndirilenler bölümünden DLL dosyalarını indirerek veya aşağıdaki NuGet kurulum komutunu çalıştırarak API’yi kolayca kurabilirsiniz:

PM> Install-Package Aspose.CAD

DWG Dosyasında C# Kullanarak Metin Arama

Aşağıdaki adımlar, C# kullanarak bir DWG dosyasındaki metnin nasıl aranacağını gösterir:

  1. Mevcut bir DWG dosyasını yükleyin.
  2. CadText varlıklarını yineleyerek metin arayın.
  3. Belirli bir düzende metin arayın.
  4. Dosyayı PDF biçiminde dışa aktarın.

C# ile DWG Çizim Dosyasında Metin Ara

C# kullanarak bir DWG dosyasında metin aramak için aşağıdaki adımları izlemeniz gerekir:

  1. CadImage sınıfıyla mevcut bir DWG dosyasını yükleyin.
  2. CadText varlıklarını yineleyerek metin arayın.
  3. Belirli bir düzende metin arayın.
  4. Dosyayı PDF biçiminde dışa aktarın.

Aşağıdaki kod örneği, C# kullanarak bir DWG dosyasındaki metnin nasıl aranacağını gösterir:

// Mevcut bir DWG dosyasını CadImage olarak yükleyin.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // Dosyada metin ara 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // CadText varlıklarını yineliyoruz, ancak diğer bazı varlıklar da metin içerebilir, örneğin CadMText ve diğerleri
        IterateCADNodes(entity);
    }

    // Belirli bir düzende metin arayın, tüm düzen adlarını alın ve her düzeni varlıklarla ilgili bloğa bağlayın
    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");

        // Bul bloğu, yalnızca DWG için geçerlidir
        CadBlockTableObject blockTableObjectReference = null;
        foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
        {
            if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
            {
                blockTableObjectReference = tableObject;
                break;
            }
        }

        if (blockTableObjectReference != null)
        {
            // Koleksiyon cadBlockEntity.Entities, belirli düzendeki tüm varlıklar hakkında bilgi içerir
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // PDF'ye Aktar
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // Seçili düzen için cadBlockEntity koleksiyonu veya mizanpajın BlockTableRecordHandle'ına (dxf için) göre entityOnLayouts koleksiyonu boşsa
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

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





public static void SearchTextInDWGAutoCADFile()
{
    // Belgeler dizininin yolu.            
    string sourceFilePath = "search.dwg";
    // Mevcut bir DWG dosyasını CadImage olarak yükleyin. 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // Varlıklar bölümünde metin arayın 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // Blok bölümünde metin arayın 
    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;
    }
}

Ücretsiz Geçici Lisans Alın

Ücretsiz geçici lisans talep ederek API’nin özelliklerini herhangi bir değerlendirme sınırlaması olmaksızın test edebilirsiniz.

Çözüm

Bu makalede, bir DWG dosyasında C# dilinde programlı olarak metin aramayı öğrendiniz. Ayrıca dokümantasyon bölümüne göz atarak API’nin farklı özelliklerini keşfedebilirsiniz. Herhangi bir endişe durumunda, lütfen forum adresinden bize yazın.

Ayrıca bakınız

ASP.NET tabanlı DWG dosyalarının görüntüleyicisi