DWG file gambar berisi data desain 2D atau 3D. Ini banyak digunakan oleh desainer, insinyur, dan arsitek. Dalam skenario tertentu, Anda mungkin perlu menemukan beberapa teks dalam file DWG. Oleh karena itu, artikel ini membahas cara mencari teks dalam file DWG secara terprogram di C#.
- Temukan Teks dalam File Gambar DWG – Konfigurasi C# API
- Cara Mencari Teks di File DWG menggunakan C#
- Cari Teks di File Gambar DWG di C#
Temukan Teks dalam File Gambar DWG – Konfigurasi C# API
Aspose.CAD for .NET mendukung pembuatan atau manipulasi berbagai gambar CAD seperti DWG, DXF, dan beberapa format file lainnya. Anda dapat dengan mudah menyiapkan API dengan mengunduh file DLL dari bagian Unduhan atau menjalankan perintah penginstalan NuGet berikut:
PM> Install-Package Aspose.CAD
Cara Mencari Teks di File DWG menggunakan C#
Langkah-langkah berikut menunjukkan cara mencari teks dalam file DWG menggunakan C#:
- Muat file DWG yang ada.
- Cari teks dengan mengulang melalui entitas CadText.
- Cari teks pada tata letak tertentu.
- Ekspor file ke format PDF.
Cari Teks di File Gambar DWG di C#
Anda harus mengikuti langkah-langkah di bawah ini untuk mencari teks dalam file DWG menggunakan C#:
- Muat file DWG yang ada dengan kelas CadImage.
- Cari teks dengan melakukan iterasi melalui entitas CadText.
- Cari teks pada tata letak tertentu.
- Ekspor file ke format PDF.
Contoh kode di bawah ini menunjukkan cara mencari teks dalam file DWG menggunakan C#:
// Muat file DWG yang ada sebagai CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Cari teks dalam file
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Kami melakukan iterasi melalui entitas CadText, tetapi beberapa entitas lain mungkin juga berisi teks, misalnya CadMText dan lainnya
IterateCADNodes(entity);
}
// Cari teks pada tata letak tertentu, dapatkan semua nama tata letak dan tautkan setiap tata letak dengan blok yang sesuai dengan entitas
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");
// Temukan blok, hanya berlaku untuk DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// Koleksi cadBlockEntity.Entities berisi informasi tentang semua entitas pada tata letak tertentu
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Ekspor ke PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Jika koleksi cadBlockEntity untuk tata letak yang dipilih atau koleksi entitasOnLayouts oleh BlockTableRecordHandle tata letak (untuk dxf) kosong
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Path ke direktori dokumen.
string sourceFilePath = "search.dwg";
// Muat file DWG yang ada sebagai CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Cari teks di bagian entitas
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Cari teks di bagian blokir
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;
}
}
Dapatkan Lisensi Sementara Gratis
Anda dapat menguji fitur API tanpa batasan evaluasi apa pun dengan meminta lisensi sementara gratis.
Kesimpulan
Pada artikel ini, Anda telah mempelajari cara mencari teks dalam file DWG secara terprogram dalam C#. Selain itu, Anda dapat menjelajahi berbagai fitur API dengan melihat bagian dokumentasi. Jika ada masalah, silakan kirim email kepada kami di forum.