Pliki rysunków DWG zawierają dane projektowe 2D lub 3D. Jest szeroko stosowany przez projektantów, inżynierów i architektów. W niektórych sytuacjach może być konieczne znalezienie tekstu w pliku DWG. W związku z tym w tym artykule omówiono programowe wyszukiwanie tekstu w pliku DWG w języku C#.
- Znajdź tekst w pliku rysunku DWG — konfiguracja API C#
- Jak wyszukiwać tekst w pliku DWG za pomocą C#
- Wyszukaj tekst w pliku rysunku DWG w języku C#
Znajdź tekst w pliku rysunku DWG — konfiguracja API C#
Aspose.CAD for .NET obsługuje tworzenie lub manipulowanie różnymi rysunkami CAD, takimi jak DWG, DXF i kilka innych formatów plików. Możesz łatwo skonfigurować API, pobierając pliki DLL z sekcji Downloads lub uruchamiając następującą komendę instalacyjną NuGet:
PM> Install-Package Aspose.CAD
Jak wyszukiwać tekst w pliku DWG za pomocą C#
Poniższe kroki pokazują, jak wyszukiwać tekst w pliku DWG przy użyciu języka C#:
- Załaduj istniejący plik DWG.
- Wyszukiwanie tekstu poprzez iterację elementów CadText.
- Wyszukaj tekst w określonym układzie.
- Wyeksportuj plik do formatu PDF.
Wyszukaj tekst w pliku rysunku DWG w języku C#
Aby wyszukać tekst w pliku DWG za pomocą języka C#, wykonaj poniższe czynności:
- Załaduj istniejący plik DWG z klasą CadImage.
- Wyszukiwanie tekstu poprzez iterację elementów CadText.
- Wyszukaj tekst w określonym układzie.
- Wyeksportuj plik do formatu PDF.
Poniższy przykładowy kod pokazuje, jak wyszukiwać tekst w pliku DWG przy użyciu języka C#:
// Załaduj istniejący plik DWG jako CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Wyszukaj tekst w pliku
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Przechodzimy przez encje CadText, ale niektóre inne encje mogą również zawierać tekst, np. CadMText i inne
IterateCADNodes(entity);
}
// Wyszukaj tekst w określonym układzie, uzyskaj wszystkie nazwy układów i połącz każdy układ z odpowiednim blokiem z elementami
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");
// Znajdź blok, mający zastosowanie tylko do plików DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// Kolekcja cadBlockEntity.Entities zawiera informacje o wszystkich obiektach na danym układzie
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Eksportuj do PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Jeśli kolekcja cadBlockEntity dla wybranego layoutu lub kolekcja entityOnLayouts według BlockTableRecordHandle layoutu (dla dxf) jest pusta
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Ścieżka do katalogu dokumentów.
string sourceFilePath = "search.dwg";
// Załaduj istniejący plik DWG jako CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Wyszukaj tekst w sekcji podmiotów
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Wyszukaj tekst w sekcji 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;
}
}
Uzyskaj bezpłatną tymczasową licencję
Możesz przetestować funkcje interfejsu API bez żadnych ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.
Wniosek
W tym artykule nauczyłeś się, jak programowo wyszukiwać tekst w pliku DWG w języku C#. Co więcej, możesz zapoznać się z różnymi funkcjami API, przeglądając sekcję dokumentacja. W razie jakichkolwiek wątpliwości napisz do nas na forum.