I file di disegno DWG contengono dati di progettazione 2D o 3D. È ampiamente utilizzato da designer, ingegneri e architetti. In alcuni scenari, potrebbe essere necessario trovare del testo in un file DWG. Di conseguenza, questo articolo illustra come cercare testo in un file DWG a livello di codice in C#.
- Trova testo nel file di disegno DWG – Configurazione API C#
- Come cercare testo nel file DWG usando C#
- Cerca testo nel file di disegno DWG in C#
Trova testo nel file di disegno DWG – Configurazione API C#
Aspose.CAD for .NET supporta la creazione o la manipolazione di diversi disegni CAD come DWG, DXF e molti altri formati di file. Puoi configurare facilmente l’API scaricando i file DLL dalla sezione Download o eseguendo il seguente comando di installazione NuGet:
PM> Install-Package Aspose.CAD
Come cercare testo nel file DWG usando C#
I passaggi seguenti mostrano come cercare testo in un file DWG utilizzando C#:
- Carica un file DWG esistente.
- Cerca il testo scorrendo le entità CadText.
- Cerca testo su un layout specifico.
- Esporta il file in formato PDF.
Cerca testo nel file di disegno DWG in C#
È necessario seguire i passaggi seguenti per cercare testo in un file DWG utilizzando C#:
- Carica un file DWG esistente con la classe CadImage.
- Cerca il testo scorrendo le entità CadText.
- Cerca il testo su un layout specifico.
- Esporta il file in formato PDF.
L’esempio di codice seguente mostra come cercare testo in un file DWG utilizzando C#:
// Carica un file DWG esistente come CadImage.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// Cerca il testo nel file
foreach (CadBaseEntity entity in cadImage.Entities)
{
// Iteriamo attraverso entità CadText, ma alcune altre entità possono contenere anche testo, ad esempio CadMText e altri
IterateCADNodes(entity);
}
// Cerca il testo su un layout specifico, ottieni tutti i nomi dei layout e collega ogni layout con il blocco corrispondente con le entità
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");
// Trova blocco, applicabile solo per DWG
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// La raccolta cadBlockEntity.Entities contiene informazioni su tutte le entità su un layout specifico
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// Esporta in PDF
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// Se la raccolta cadBlockEntity per il layout selezionato o la raccolta entityOnLayouts per BlockTableRecordHandle del layout (per dxf) è vuota
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// Il percorso della directory dei documenti.
string sourceFilePath = "search.dwg";
// Carica un file DWG esistente come CadImage.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// Cerca il testo nella sezione delle entità
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// Cerca il testo nella sezione del blocco
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;
}
}
Ottieni una licenza temporanea gratuita
Puoi testare le funzionalità dell’API senza alcuna limitazione di valutazione richiedendo una licenza temporanea gratuita.
Conclusione
In questo articolo si è appreso come cercare testo in un file DWG a livello di codice in C#. Inoltre, puoi esplorare diverse funzionalità dell’API dando un’occhiata alla sezione documentazione. In caso di dubbi, scriveteci a forum.