DWG výkresové soubory obsahují 2D nebo 3D návrhová data. Je široce používán designéry, inženýry a architekty. V určitých scénářích může být nutné najít nějaký text v souboru DWG. V souladu s tím tento článek popisuje, jak vyhledávat text v souboru DWG programově v C#.
- Najít text v souboru výkresu DWG – Konfigurace C# API
- Jak hledat text v souboru DWG pomocí C#
- Hledat text v souboru výkresu DWG v C#
Najít text v souboru výkresu DWG – Konfigurace C# API
Aspose.CAD for .NET podporuje vytváření nebo manipulaci s různými výkresy CAD, jako je DWG, DXF a několik dalších formátů souborů. Rozhraní API můžete snadno nastavit stažením souborů DLL ze sekce Downloads nebo spuštěním následujícího instalačního příkazu NuGet:
PM> Install-Package Aspose.CAD
Jak hledat text v souboru DWG pomocí C#
Následující kroky ukazují, jak vyhledávat text v souboru DWG pomocí C#:
- Načtěte existující soubor DWG.
- Vyhledejte text iterací přes entity CadText.
- Vyhledejte text v konkrétním rozvržení.
- Exportujte soubor do formátu PDF.
Hledat text v souboru výkresu DWG v C#
Chcete-li vyhledávat text v souboru DWG pomocí jazyka C#, musíte provést následující kroky:
- Načtěte existující soubor DWG s třídou CadImage.
- Hledejte text iterací přes CadText entit.
- Vyhledejte text na konkrétním rozvržení.
- Exportujte soubor do formátu PDF.
Níže uvedený příklad kódu ukazuje, jak vyhledávat text v souboru DWG pomocí C#:
// Načtěte existující soubor DWG jako CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Vyhledejte text v souboru
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Iterujeme přes entity CadText, ale některé další entity mohou obsahovat také text, např. CadMText a další
IterateCADNodes(entity);
}
// Vyhledejte text na konkrétním rozvržení, získejte všechny názvy rozvržení a propojte každé rozvržení s odpovídajícím blokem s entitami
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");
// Najít blok, použitelný pouze pro DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// Kolekce cadBlockEntity.Entities obsahuje informace o všech entitách na konkrétním rozvržení
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Export do PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Pokud je kolekce cadBlockEntity pro vybrané rozvržení nebo kolekce entityOnLayouts podle rozvržení BlockTableRecordHandle (pro dxf) prázdná
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Cesta k adresáři dokumentů.
string sourceFilePath = "search.dwg";
// Načtěte existující soubor DWG jako CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Hledejte text v sekci entity
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Vyhledejte text v sekci bloku
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;
}
}
Získejte bezplatnou dočasnou licenci
Můžete otestovat funkce rozhraní API bez jakýchkoli omezení hodnocení, když požádáte o bezplatnou dočasnou licenci.
Závěr
V tomto článku jste se naučili vyhledávat text v souboru DWG programově v C#. Kromě toho můžete prozkoumat různé funkce API, když se podíváte na sekci dokumentace. V případě jakýchkoliv obav nám napište na fórum.