ค้นหาข้อความใน DWG C#

ไฟล์วาด DWG มีข้อมูลการออกแบบ 2D หรือ 3D เป็นที่นิยมใช้กันอย่างแพร่หลายโดยนักออกแบบ วิศวกร และสถาปนิก ในบางสถานการณ์ คุณอาจต้องค้นหาข้อความในไฟล์ DWG ดังนั้น บทความนี้กล่าวถึงวิธีการค้นหาข้อความในไฟล์ DWG โดยทางโปรแกรมใน C#

ค้นหาข้อความในไฟล์การวาด DWG – การกำหนดค่า C# API

Aspose.CAD สำหรับ .NET รองรับการสร้างหรือจัดการแบบร่าง CAD ต่างๆ เช่น DWG, DXF และ รูปแบบไฟล์ อื่นๆ คุณสามารถตั้งค่า API ได้ง่ายๆ โดยดาวน์โหลดไฟล์ DLL จากส่วน ดาวน์โหลด หรือเรียกใช้คำสั่งการติดตั้ง NuGet ต่อไปนี้:

PM> Install-Package Aspose.CAD

วิธีค้นหาข้อความในไฟล์ DWG โดยใช้ C#

ขั้นตอนต่อไปนี้สาธิตวิธีค้นหาข้อความในไฟล์ DWG โดยใช้ C#:

  1. โหลดไฟล์ DWG ที่มีอยู่
  2. ค้นหาข้อความโดยวนซ้ำผ่านเอนทิตี CadText
  3. ค้นหาข้อความในรูปแบบเฉพาะ
  4. ส่งออกไฟล์เป็นรูปแบบ PDF

ค้นหาข้อความในไฟล์การวาด DWG ใน C#

คุณต้องทำตามขั้นตอนด้านล่างเพื่อค้นหาข้อความในไฟล์ DWG โดยใช้ C#:

  1. โหลดไฟล์ DWG ที่มีอยู่ด้วยคลาส CadImage
  2. ค้นหาข้อความโดยวนซ้ำผ่านเอนทิตี CadText
  3. ค้นหาข้อความในรูปแบบเฉพาะ
  4. ส่งออกไฟล์เป็นรูปแบบ PDF

ตัวอย่างโค้ดด้านล่างแสดงวิธีการค้นหาข้อความในไฟล์ DWG โดยใช้ C#:

// โหลดไฟล์ DWG ที่มีอยู่ในรูปแบบ CadImage
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
    // ค้นหาข้อความในไฟล์ 
    foreach (CadBaseEntity entity in cadImage.Entities)
    {
        // เราวนซ้ำผ่านเอนทิตี CadText แต่เอนทิตีอื่นๆ อาจมีข้อความด้วย เช่น CadMText และอื่นๆ
        IterateCADNodes(entity);
    }

    // ค้นหาข้อความในเลย์เอาต์เฉพาะ รับชื่อเลย์เอาต์ทั้งหมดและเชื่อมโยงแต่ละเลย์เอาต์กับบล็อกที่สอดคล้องกับเอนทิตี
    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");

        // ค้นหาบล็อก ใช้ได้กับ DWG เท่านั้น
        CadBlockTableObject blockTableObjectReference = null;
        foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
        {
            if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
            {
                blockTableObjectReference = tableObject;
                break;
            }
        }

        if (blockTableObjectReference != null)
        {
            // คอลเลกชัน cadBlockEntity.Entities มีข้อมูลเกี่ยวกับเอนทิตีทั้งหมดในรูปแบบเฉพาะ
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // ส่งออกเป็น PDF
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // หากการรวบรวม cadBlockEntity สำหรับเค้าโครงที่เลือกหรือการรวบรวม entitiesOnLayouts โดย BlockTableRecordHandle ของเค้าโครง (สำหรับ dxf) ว่างเปล่า
    rasterizationOptions.Layouts = new[] { "Layout1" };

    ImageOptions.PdfOptions pdfOptions = new PdfOptions();

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





public static void SearchTextInDWGAutoCADFile()
{
    // เส้นทางไปยังไดเร็กทอรีเอกสาร            
    string sourceFilePath = "search.dwg";
    // โหลดไฟล์ DWG ที่มีอยู่ในรูปแบบ CadImage 
    CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);

    // ค้นหาข้อความในส่วนเอนทิตี 
    foreach (var entity in cadImage.Entities)
    {
        IterateCADNodes(entity);
    }

    // ค้นหาข้อความในส่วนบล็อก 
    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;
    }
}

รับใบอนุญาตชั่วคราวฟรี

คุณสามารถทดสอบคุณลักษณะของ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีการค้นหาข้อความในไฟล์ DWG โดยทางโปรแกรมใน C# นอกจากนี้ คุณสามารถสำรวจคุณสมบัติต่างๆ ของ API ได้โดยดูที่ส่วน เอกสารประกอบ ในกรณีที่มีข้อกังวลใดๆ โปรดเขียนถึงเราที่ ฟอรัม

ดูสิ่งนี้ด้วย

โปรแกรมดูไฟล์ DWG ตาม ASP.NET