Les fichiers de dessin DWG contiennent des données de conception 2D ou 3D. Il est largement utilisé par les concepteurs, les ingénieurs et les architectes. Dans certains scénarios, vous devrez peut-être rechercher du texte dans un fichier DWG. Par conséquent, cet article explique comment rechercher du texte dans un fichier DWG par programmation en C#.
- Rechercher du texte dans le fichier de dessin DWG - Configuration de l’API C#
- Comment rechercher du texte dans un fichier DWG à l’aide de C#
- Rechercher du texte dans un fichier de dessin DWG en C#
Rechercher du texte dans le fichier de dessin DWG - Configuration de l’API C#
Aspose.CAD for .NET prend en charge la création ou la manipulation de différents dessins CAO tels que DWG, DXF et plusieurs autres formats de fichiers. Vous pouvez facilement configurer l’API en téléchargeant les fichiers DLL à partir de la section Téléchargements ou en exécutant la commande d’installation NuGet suivante :
PM> Install-Package Aspose.CAD
Comment rechercher du texte dans un fichier DWG à l’aide de C#
Les étapes suivantes montrent comment rechercher du texte dans un fichier DWG à l’aide de C# :
- Chargez un fichier DWG existant.
- Recherchez du texte en parcourant les entités CadText.
- Rechercher du texte sur une mise en page spécifique.
- Exportez le fichier au format PDF.
Rechercher du texte dans un fichier de dessin DWG en C#
Vous devez suivre les étapes ci-dessous pour rechercher du texte dans un fichier DWG à l’aide de C# :
- Chargez un fichier DWG existant avec la classe CadImage.
- Recherchez du texte en parcourant les entités CadText.
- Rechercher du texte sur une mise en page spécifique.
- Exportez le fichier au format PDF.
L’exemple de code ci-dessous montre comment rechercher du texte dans un fichier DWG à l’aide de C# :
// Chargez un fichier DWG existant en tant que CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Rechercher du texte dans le fichier
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Nous parcourons les entités CadText, mais certaines autres entités peuvent également contenir du texte, par exemple CadMText et autres
IterateCADNodes(entity);
}
// Rechercher du texte sur une mise en page spécifique, obtenir tous les noms de mise en page et lier chaque mise en page avec le bloc correspondant avec des entités
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");
// Bloc de recherche, applicable uniquement pour DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// La collection cadBlockEntity.Entities contient des informations sur toutes les entités sur une mise en page spécifique
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Exporter au format PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Si la collection cadBlockEntity pour la mise en page sélectionnée ou la collection entityOnLayouts par BlockTableRecordHandle de la mise en page (pour dxf) est vide
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Chemin d'accès au répertoire des documents.
string sourceFilePath = "search.dwg";
// Chargez un fichier DWG existant en tant que CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Rechercher du texte dans la section Entités
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Rechercher du texte dans la section de bloc
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;
}
}
Obtenez une licence temporaire gratuite
Vous pouvez tester les fonctionnalités de l’API sans aucune limitation d’évaluation en demandant une licence temporaire gratuite.
Conclusion
Dans cet article, vous avez appris à rechercher du texte dans un fichier DWG par programmation en C#. De plus, vous pouvez explorer différentes fonctionnalités de l’API en consultant la section documentation. En cas de problème, veuillez nous écrire à forum.