Файлы чертежей 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 для выбранного макета или коллекция entityOnLayouts по 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, заглянув в раздел документация. Если у вас возникнут вопросы, напишите нам на форум.