Los archivos de dibujo DWG contienen datos de diseño 2D o 3D. Es ampliamente utilizado por diseñadores, ingenieros y arquitectos. En ciertos escenarios, es posible que necesite encontrar texto en un archivo DWG. En consecuencia, este artículo analiza cómo buscar texto en un archivo DWG mediante programación en C#.
- Buscar texto en el archivo de dibujo DWG: configuración de la API de C#
- Cómo buscar texto en un archivo DWG usando C#
- Buscar texto en archivo de dibujo DWG en C#
Buscar texto en el archivo de dibujo DWG: configuración de la API de C#
Aspose.CAD for .NET admite la creación o manipulación de diferentes dibujos CAD como DWG, DXF y varios otros formatos de archivo. Puede configurar fácilmente la API descargando los archivos DLL de la sección Descargas o ejecutando el siguiente comando de instalación NuGet:
PM> Install-Package Aspose.CAD
Cómo buscar texto en un archivo DWG usando C#
Los siguientes pasos demuestran cómo buscar texto en un archivo DWG usando C#:
- Cargue un archivo DWG existente.
- Busque texto iterando a través de las entidades de CadText.
- Busque texto en un diseño específico.
- Exporte el archivo a formato PDF.
Buscar texto en archivo de dibujo DWG en C#
Debe seguir los pasos a continuación para buscar texto en un archivo DWG usando C#:
- Cargue un archivo DWG existente con la clase CadImage.
- Busque texto iterando a través de entidades CadText.
- Busque texto en un diseño específico.
- Exporte el archivo a formato PDF.
El ejemplo de código a continuación muestra cómo buscar texto en un archivo DWG usando C#:
// Cargue un archivo DWG existente como CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Buscar texto en el archivo
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Iteramos a través de las entidades de CadText, pero algunas otras entidades también pueden contener texto, por ejemplo, CadMText y otras.
IterateCADNodes(entity);
}
// Busque texto en un diseño específico, obtenga todos los nombres de diseño y vincule cada diseño con el bloque correspondiente con entidades
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");
// Buscar bloque, aplicable solo para DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// La colección cadBlockEntity.Entities contiene información sobre todas las entidades en un diseño específico
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Exportar a PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Si la colección cadBlockEntity para el diseño seleccionado o la colección de entidades OnLayouts por BlockTableRecordHandle del diseño (para dxf) está vacía
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// La ruta al directorio de documentos.
string sourceFilePath = "search.dwg";
// Cargue un archivo DWG existente como CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Buscar texto en la sección de entidades
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Buscar texto en la sección de bloques
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;
}
}
Obtenga una Licencia Temporal Gratis
Puede probar las características de la API sin ninguna limitación de evaluación solicitando una licencia temporal gratuita.
Conclusión
En este artículo, ha aprendido a buscar texto en un archivo DWG mediante programación en C#. Además, puede explorar diferentes características de la API echando un vistazo a la sección documentación. Si tiene alguna inquietud, escríbanos a foro.