Файли креслень DWG містять 2D- або 3D-проектні дані. Він широко використовується дизайнерами, інженерами та архітекторами. У деяких випадках вам може знадобитися знайти текст у файлі DWG. Відповідно, у цій статті обговорюється, як шукати текст у файлі DWG програмним способом у C#.
- Пошук тексту у файлі креслення DWG – конфігурація C# API
- Як шукати текст у файлі DWG за допомогою C#
- Пошук тексту у файлі креслення DWG у C#
Пошук тексту у файлі креслення DWG – конфігурація C# API
Aspose.CAD for .NET підтримує створення та обробку різних креслень САПР, як-от DWG, DXF та кількох інших форматів файлів. Ви можете легко налаштувати API, завантаживши файли DLL із розділу Завантаження або виконавши наступну команду встановлення NuGet:
PM> Install-Package Aspose.CAD
Як шукати текст у файлі DWG за допомогою C#
Наступні кроки демонструють, як шукати текст у файлі DWG за допомогою C#:
- Завантажте існуючий файл DWG.
- Шукайте текст, перебираючи сутності CadText.
- Пошук тексту на певному макеті.
- Експортуйте файл у формат PDF.
Пошук тексту у файлі креслення DWG у C#
Для пошуку тексту у файлі DWG за допомогою C# потрібно виконати наведені нижче дії.
- Завантажте наявний файл DWG із класом CadImage.
- Шукайте текст, перебираючи сутності CadText.
- Пошук тексту на певному макеті.
- Експортуйте файл у формат 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, переглянувши розділ документація. У разі будь-яких проблем, будь ласка, напишіть нам на форум.