جستجوی متن در DWG C#

فایل های طراحی DWG حاوی داده های طراحی دو بعدی یا سه بعدی هستند. به طور گسترده توسط طراحان، مهندسان و معماران استفاده می شود. در سناریوهای خاصی، ممکن است لازم باشد متنی را در یک فایل DWG پیدا کنید. بر این اساس، این مقاله نحوه جستجوی متن در یک فایل DWG به صورت برنامه‌نویسی در سی شارپ را مورد بحث قرار می‌دهد.

متن را در فایل DWG Drawing پیدا کنید – C# API Configuration

Aspose.CAD for .NET از ایجاد یا دستکاری نقشه های مختلف CAD مانند DWG، DXF و چندین [فرمت فایل] دیگر پشتیبانی می کند. با دانلود فایل‌های DLL از بخش Downloads یا اجرای دستور نصب زیر NuGet می‌توانید API را به راحتی تنظیم کنید:

PM> Install-Package Aspose.CAD

نحوه جستجوی متن در فایل DWG با استفاده از سی شارپ

مراحل زیر نحوه جستجوی متن در یک فایل DWG با استفاده از C# را نشان می دهد:

  1. یک فایل DWG موجود را بارگیری کنید.
  2. با تکرار از طریق موجودیت های CadText، متن را جستجو کنید.
  3. جستجوی متن در یک طرح بندی خاص.
  4. فایل را به فرمت PDF صادر کنید.

جستجوی متن در فایل DWG Drawing در سی شارپ

برای جستجوی متن در فایل 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 layout (برای 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);

    // متن را در بخش Enities جستجو کنید 
    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 به صورت برنامه نویسی در سی شارپ آشنا شدید. علاوه بر این، می‌توانید ویژگی‌های مختلف API را با نگاهی به بخش مستندات کاوش کنید. در صورت هر گونه نگرانی، لطفاً در [فروم 11 برای ما بنویسید.

همچنین ببینید

نمایش فایل‌های DWG بر اساس ASP.NET