نص البحث في DWG C#

DWG تحتوي ملفات الرسم على بيانات تصميم ثنائية الأبعاد أو ثلاثية الأبعاد. يستخدم على نطاق واسع من قبل المصممين والمهندسين والمهندسين المعماريين. في سيناريوهات معينة ، قد تحتاج إلى العثور على بعض النصوص في ملف DWG. وفقًا لذلك ، تتناول هذه المقالة كيفية البحث عن نص في ملف DWG برمجيًا في C#.

البحث عن نص في ملف رسم DWG - تكوين C# API

Aspose.CAD for .NET يدعم إنشاء أو معالجة رسومات CAD مختلفة مثل DWG و DXF والعديد من تنسيقات الملفات. يمكنك بسهولة إعداد API عن طريق تنزيل ملفات DLL من قسم التنزيلات أو تشغيل أمر التثبيت NuGet التالي:

PM> Install-Package Aspose.CAD

كيفية البحث عن نص في ملف DWG باستخدام C#

توضح الخطوات التالية كيفية البحث عن نص في ملف DWG باستخدام C#:

  1. قم بتحميل ملف DWG موجود.
  2. البحث عن نص من خلال التكرار من خلال كيانات النص التشريعي.
  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.Entity.Entity يحتوي على معلومات حول جميع الكيانات في تخطيط معين
            CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
        }
    }

    // تصدير إلى PDF
    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
    rasterizationOptions.PageWidth = 1600;
    rasterizationOptions.PageHeight = 1600;
    rasterizationOptions.AutomaticLayoutsScaling = true;

    // إذا كانت مجموعة cadBlockEntity للتخطيط المحدد أو مجموعة الكياناتOnLayouts بواسطة 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;
    }
}

احصل على رخصة مؤقتة مجانية

يمكنك اختبار ميزات واجهة برمجة التطبيقات بدون أي قيود تقييمية عن طريق طلب ترخيص مؤقت مجاني.

استنتاج

في هذه المقالة ، تعلمت كيفية البحث عن نص في ملف DWG برمجيًا في C#. علاوة على ذلك ، يمكنك استكشاف الميزات المختلفة لواجهة برمجة التطبيقات من خلال إلقاء نظرة على قسم التوثيق. في حالة وجود أي مخاوف ، يرجى مراسلتنا على المنتدى.

أنظر أيضا

عارض ملفات DWG بناءً على ASP.NET