DWG 도면 파일에는 2D 또는 3D 설계 데이터가 포함되어 있습니다. 디자이너, 엔지니어 및 건축가가 널리 사용합니다. 특정 시나리오에서는 DWG 파일에서 일부 텍스트를 찾아야 할 수 있습니다. 따라서 이 문서에서는 C#에서 프로그래밍 방식으로 DWG 파일의 텍스트를 검색하는 방법에 대해 설명합니다.
DWG 도면 파일에서 텍스트 찾기 - C# API 구성
Aspose.CAD for .NET은 DWG, DXF 및 기타 여러 파일 형식과 같은 다양한 CAD 도면 생성 또는 조작을 지원합니다. 다운로드 섹션에서 DLL 파일을 다운로드하거나 다음 NuGet 설치 명령을 실행하여 API를 쉽게 설정할 수 있습니다.
PM> Install-Package Aspose.CAD
C#을 사용하여 DWG 파일에서 텍스트를 검색하는 방법
다음 단계는 C#을 사용하여 DWG 파일에서 텍스트를 검색하는 방법을 보여줍니다.
- 기존 DWG 파일을 로드합니다.
- CadText 엔터티를 반복하여 텍스트를 검색합니다.
- 특정 레이아웃에서 텍스트를 검색합니다.
- 파일을 PDF 형식으로 내보냅니다.
C#의 DWG 도면 파일에서 텍스트 검색
C#을 사용하여 DWG 파일에서 텍스트를 검색하려면 아래 단계를 따라야 합니다.
- CadImage 클래스로 기존 DWG 파일을 로드합니다.
- CadText 엔터티를 반복하여 텍스트를 검색합니다.
- 특정 레이아웃에서 텍스트를 검색합니다.
- 파일을 PDF 형식으로 내보냅니다.
아래 코드 샘플은 C#을 사용하여 DWG 파일에서 텍스트를 검색하는 방법을 보여줍니다.
// 기존 DWG 파일을 CadImage로 로드합니다.
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath))
{
// 파일에서 텍스트 검색
foreach (CadBaseEntity entity in cadImage.Entities)
{
// 우리는 CadText 엔터티를 통해 반복하지만 일부 다른 엔터티에는 텍스트도 포함될 수 있습니다(예: CadMText 및 기타).
IterateCADNodes(entity);
}
// 특정 레이아웃에서 텍스트를 검색하여 모든 레이아웃 이름을 가져오고 각 레이아웃을 엔티티가 있는 해당 블록과 연결합니다.
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");
// 블록 찾기, DWG에만 적용 가능
CadBlockTableObject blockTableObjectReference = null;
foreach (CadBlockTableObject tableObject in cadImage.BlocksTables)
{
if (string.Equals(tableObject.HardPointerToLayout, layout.ObjectHandle))
{
blockTableObjectReference = tableObject;
break;
}
}
if (blockTableObjectReference != null)
{
// 컬렉션 cadBlockEntity.Entities에는 특정 레이아웃의 모든 엔티티에 대한 정보가 포함되어 있습니다.
CadBlockEntity cadBlockEntity = cadImage.BlockEntities[blockTableObjectReference.BlockName];
}
}
// PDF로 내보내기
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1600;
rasterizationOptions.PageHeight = 1600;
rasterizationOptions.AutomaticLayoutsScaling = true;
// 선택한 레이아웃에 대한 cadBlockEntity 컬렉션 또는 레이아웃의 BlockTableRecordHandle(dxf용)에 의한 entitiesOnLayouts 컬렉션이 비어 있는 경우
rasterizationOptions.Layouts = new[] { "Layout1" };
ImageOptions.PdfOptions pdfOptions = new PdfOptions();
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("SearchText_CAD.pdf", pdfOptions);
}
public static void SearchTextInDWGAutoCADFile()
{
// 문서 디렉토리의 경로입니다.
string sourceFilePath = "search.dwg";
// 기존 DWG 파일을 CadImage로 로드합니다.
CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath);
// 엔터티 섹션에서 텍스트 검색
foreach (var entity in cadImage.Entities)
{
IterateCADNodes(entity);
}
// 블록 섹션에서 텍스트 검색
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;
}
}
무료 임시 라이선스 받기
무료 임시 라이선스를 요청하면 평가 제한 없이 API의 기능을 테스트할 수 있습니다.
결론
이 기사에서는 C#에서 프로그래밍 방식으로 DWG 파일의 텍스트를 검색하는 방법을 배웠습니다. 또한 문서 섹션을 살펴보면 API의 다양한 기능을 탐색할 수 있습니다. 우려 사항이 있는 경우 포럼에 문의해 주십시오.