DWG ritfiler innehåller 2D- eller 3D-designdata. Det används ofta av designers, ingenjörer och arkitekter. I vissa scenarier kan du behöva hitta lite text i en DWG-fil. Följaktligen diskuterar den här artikeln hur man söker efter text i en DWG-fil programmatiskt i C#.
- Hitta text i DWG Drawing File – C# API Configuration
- Hur man söker text i DWG-fil med C#
- Sök text i DWG-ritningsfil i C#
Hitta text i DWG Drawing File – C# API Configuration
Aspose.CAD for .NET stöder att skapa eller manipulera olika CAD-ritningar som DWG, DXF och flera andra filformat. Du kan enkelt ställa in API:t genom att ladda ner DLL-filerna från avsnittet Nedladdningar eller köra följande installationskommando NuGet:
PM> Install-Package Aspose.CAD
Hur man söker text i DWG-fil med C#
Följande steg visar hur man söker efter text i en DWG-fil med C#:
- Ladda en befintlig DWG-fil.
- Sök efter text genom att iterera genom CadText-enheter.
- Sök efter text på en specifik layout.
- Exportera filen till PDF-format.
Sök text i DWG-ritningsfil i C#
Du måste följa stegen nedan för att söka text i en DWG-fil med C#:
- Ladda en befintlig DWG-fil med klassen CadImage.
- Sök efter text genom att iterera genom CadText entiteter.
- Sök efter text på specifik layout.
- Exportera filen till PDF-format.
Kodexemplet nedan visar hur man söker efter text i en DWG-fil med C#:
// Ladda en befintlig DWG-fil som CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Sök efter text i filen
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Vi itererar genom CadText-enheter, men vissa andra enheter kan också innehålla text, t.ex. CadMText och andra
IterateCADNodes(entity);
}
// Sök efter text på specifik layout få alla layoutnamn och länka varje layout med motsvarande block med entiteter
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");
// Hitta block, endast tillämpligt för DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// Collection cadBlockEntity.Entities innehåller information om alla enheter på specifik layout
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Exportera till PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Om cadBlockEntity-samlingen för vald layout eller entitiesOnLayouts-samling av layoutens BlockTableRecordHandle (för dxf) är tom
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Sökvägen till dokumentkatalogen.
string sourceFilePath = "search.dwg";
// Ladda en befintlig DWG-fil som CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Sök efter text i avsnittet enheter
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Sök efter text i blocksektionen
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;
}
}
Få gratis tillfällig licens
Du kan testa funktionerna i API:t utan några utvärderingsbegränsningar genom att begära en gratis temporär licens.
Slutsats
I den här artikeln har du lärt dig hur du söker efter text i en DWG-fil programmatiskt i C#. Dessutom kan du utforska olika funktioner i API:t genom att ta en titt på avsnittet dokumentation. Vid eventuella problem, skriv till oss på forum.