Cari Teks di DWG C#

DWG file gambar berisi data desain 2D atau 3D. Ini banyak digunakan oleh desainer, insinyur, dan arsitek. Dalam skenario tertentu, Anda mungkin perlu menemukan beberapa teks dalam file DWG. Oleh karena itu, artikel ini membahas cara mencari teks dalam file DWG secara terprogram di C#.

Temukan Teks dalam File Gambar DWG – Konfigurasi C# API

Aspose.CAD for .NET mendukung pembuatan atau manipulasi berbagai gambar CAD seperti DWG, DXF, dan beberapa format file lainnya. Anda dapat dengan mudah menyiapkan API dengan mengunduh file DLL dari bagian Unduhan atau menjalankan perintah penginstalan NuGet berikut:

PM> Install-Package Aspose.CAD

Cara Mencari Teks di File DWG menggunakan C#

Langkah-langkah berikut menunjukkan cara mencari teks dalam file DWG menggunakan C#:

  1. Muat file DWG yang ada.
  2. Cari teks dengan mengulang melalui entitas CadText.
  3. Cari teks pada tata letak tertentu.
  4. Ekspor file ke format PDF.

Cari Teks di File Gambar DWG di C#

Anda harus mengikuti langkah-langkah di bawah ini untuk mencari teks dalam file DWG menggunakan C#:

  1. Muat file DWG yang ada dengan kelas CadImage.
  2. Cari teks dengan melakukan iterasi melalui entitas CadText.
  3. Cari teks pada tata letak tertentu.
  4. Ekspor file ke format PDF.

Contoh kode di bawah ini menunjukkan cara mencari teks dalam file DWG menggunakan C#:

// Muat file DWG yang ada sebagai CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // Cari teks dalam file 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // Kami melakukan iterasi melalui entitas CadText, tetapi beberapa entitas lain mungkin juga berisi teks, misalnya CadMText dan lainnya
        IterateCADNodes(entity);
    }

    // Cari teks pada tata letak tertentu, dapatkan semua nama tata letak dan tautkan setiap tata letak dengan blok yang sesuai dengan entitas
    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");

        // Temukan blok, hanya berlaku untuk DWG
        CadBlockTableObject blockTableObjectReference = null;
        foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
        {
            if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
            {
                blockTableObjectReference = tableObject;
                break;
            }
        }

        if (blockTableObjectReference != null)
        {
            // Koleksi cadBlockEntity.Entities berisi informasi tentang semua entitas pada tata letak tertentu
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // Ekspor ke PDF
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // Jika koleksi cadBlockEntity untuk tata letak yang dipilih atau koleksi entitasOnLayouts oleh BlockTableRecordHandle tata letak (untuk dxf) kosong
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

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





public static void SearchTextInDWGAutoCADFile()
{
    // Path ke direktori dokumen.            
    string sourceFilePath = "search.dwg";
    // Muat file DWG yang ada sebagai CadImage. 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // Cari teks di bagian entitas 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // Cari teks di bagian blokir 
    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;
    }
}

Dapatkan Lisensi Sementara Gratis

Anda dapat menguji fitur API tanpa batasan evaluasi apa pun dengan meminta lisensi sementara gratis.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara mencari teks dalam file DWG secara terprogram dalam C#. Selain itu, Anda dapat menjelajahi berbagai fitur API dengan melihat bagian dokumentasi. Jika ada masalah, silakan kirim email kepada kami di forum.

Lihat juga

Penampil file DWG berdasarkan ASP.NET