DWG çizim dosyaları, 2B veya 3B tasarım verileri içerir. Tasarımcılar, mühendisler ve mimarlar tarafından yaygın olarak kullanılmaktadır. Belirli senaryolarda, bir DWG dosyasında bazı metinler bulmanız gerekebilir. Buna göre, bu makale bir DWG dosyasındaki metnin programlı olarak C# ile nasıl aranacağını tartışır.
- DWG Çizim Dosyasında Metin Bulma – C# API Yapılandırması
- DWG Dosyasında C# Kullanarak Metin Arama
- C# ile DWG Çizim Dosyasında Metin Ara
DWG Çizim Dosyasında Metin Bul – C# API Yapılandırması
Aspose.CAD for .NET, DWG, DXF ve birkaç diğer dosya formatı gibi farklı CAD çizimlerinin oluşturulmasını veya işlenmesini destekler. İndirilenler bölümünden DLL dosyalarını indirerek veya aşağıdaki NuGet kurulum komutunu çalıştırarak API’yi kolayca kurabilirsiniz:
PM> Install-Package Aspose.CAD
DWG Dosyasında C# Kullanarak Metin Arama
Aşağıdaki adımlar, C# kullanarak bir DWG dosyasındaki metnin nasıl aranacağını gösterir:
- Mevcut bir DWG dosyasını yükleyin.
- CadText varlıklarını yineleyerek metin arayın.
- Belirli bir düzende metin arayın.
- Dosyayı PDF biçiminde dışa aktarın.
C# ile DWG Çizim Dosyasında Metin Ara
C# kullanarak bir DWG dosyasında metin aramak için aşağıdaki adımları izlemeniz gerekir:
- CadImage sınıfıyla mevcut bir DWG dosyasını yükleyin.
- CadText varlıklarını yineleyerek metin arayın.
- Belirli bir düzende metin arayın.
- Dosyayı PDF biçiminde dışa aktarın.
Aşağıdaki kod örneği, C# kullanarak bir DWG dosyasındaki metnin nasıl aranacağını gösterir:
// Mevcut bir DWG dosyasını CadImage olarak yükleyin.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Dosyada metin ara
foreach (CadBaseEntity entity in cadImage.Entities)
{
// CadText varlıklarını yineliyoruz, ancak diğer bazı varlıklar da metin içerebilir, örneğin CadMText ve diğerleri
IterateCADNodes(entity);
}
// Belirli bir düzende metin arayın, tüm düzen adlarını alın ve her düzeni varlıklarla ilgili bloğa bağlayın
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");
// Bul bloğu, yalnızca DWG için geçerlidir
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// Koleksiyon cadBlockEntity.Entities, belirli düzendeki tüm varlıklar hakkında bilgi içerir
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// PDF'ye Aktar
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Seçili düzen için cadBlockEntity koleksiyonu veya mizanpajın BlockTableRecordHandle'ına (dxf için) göre entityOnLayouts koleksiyonu boşsa
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Belgeler dizininin yolu.
string sourceFilePath = "search.dwg";
// Mevcut bir DWG dosyasını CadImage olarak yükleyin.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Varlıklar bölümünde metin arayın
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Blok bölümünde metin arayın
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;
}
}
Ücretsiz Geçici Lisans Alın
Ücretsiz geçici lisans talep ederek API’nin özelliklerini herhangi bir değerlendirme sınırlaması olmaksızın test edebilirsiniz.
Çözüm
Bu makalede, bir DWG dosyasında C# dilinde programlı olarak metin aramayı öğrendiniz. Ayrıca dokümantasyon bölümüne göz atarak API’nin farklı özelliklerini keşfedebilirsiniz. Herhangi bir endişe durumunda, lütfen forum adresinden bize yazın.