Files
ExperionCrawler/test_dxf_extract.cs

92 lines
3.8 KiB
C#

using System;
using System.Text;
using netDxf;
class TestDxfExtract
{
static void Main()
{
string filePath = "src/Web/uploads/pid/p-9100.dxf";
Console.WriteLine($"DXF 파일 로드: {filePath}");
Console.WriteLine($"파일 크기: {new System.IO.FileInfo(filePath).Length:N0} bytes");
try
{
var doc = DxfDocument.Load(filePath);
Console.WriteLine($"\n=== DXF 정보 ===");
Console.WriteLine($"Version: {doc.Version}");
Console.WriteLine($"Units: {doc.Units}");
Console.WriteLine($"Layers: {doc.Layers.Count}");
Console.WriteLine($"TextStyles: {doc.TextStyles.Count}");
Console.WriteLine($"Blocks: {doc.Blocks.Count}");
Console.WriteLine($"\n=== 엔티티 수 ===");
Console.WriteLine($"Lines: {doc.Entities.Lines.Count}");
Console.WriteLine($"Circles: {doc.Entities.Circles.Count}");
Console.WriteLine($"Polylines: {doc.Entities.Polylines.Count}");
Console.WriteLine($"Texts: {doc.Entities.Texts.Count}");
Console.WriteLine($"MTexts: {doc.Entities.MTexts.Count}");
Console.WriteLine($"Blocks (entity): {doc.Entities.Blocks.Count}");
Console.WriteLine($"Inserts: {doc.Entities.Inserts.Count}");
Console.WriteLine($"\n=== TEXT 엔티티 샘플 (상위 10개) ===");
int textCount = 0;
foreach (var txt in doc.Entities.Texts)
{
if (textCount >= 10) break;
Console.WriteLine($"[{textCount}] Value: {txt.Value}, Position: ({txt.Position.X}, {txt.Position.Y}), Height: {txt.Height}");
textCount++;
}
Console.WriteLine($"\n=== MTEXT 엔티티 샘플 (상위 10개) ===");
int mtextCount = 0;
foreach (var mtxt in doc.Entities.MTexts)
{
if (mtextCount >= 10) break;
Console.WriteLine($"[{mtextCount}] PlainText: {mtxt.PlainText().Substring(0, Math.Min(50, mtxt.PlainText().Length))}...");
Console.WriteLine($" Position: ({mtxt.Position.X}, {mtxt.Position.Y}), Height: {mtxt.Height}");
mtextCount++;
}
Console.WriteLine($"\n=== BLOCK 정의 샘플 ===");
int blockCount = 0;
foreach (var blk in doc.Blocks)
{
if (blockCount >= 5) break;
Console.WriteLine($"Block: {blk.Name}, Entities: {blk.Entities.Count}");
blockCount++;
}
Console.WriteLine($"\n=== AttributeDefinition 샘플 ===");
int attrCount = 0;
foreach (var blk in doc.Blocks)
{
foreach (var attr in blk.AttributeDefinitions.Values)
{
if (attrCount >= 10) break;
Console.WriteLine($"Attribute: {attr.Tag}, Value: {attr.Value}, Position: ({attr.Position.X}, {attr.Position.Y})");
attrCount++;
}
if (attrCount >= 10) break;
}
Console.WriteLine($"\n=== INSERT 엔티티 샘플 (상위 10개) ===");
int insertCount = 0;
foreach (var insert in doc.Entities.Inserts)
{
if (insertCount >= 10) break;
Console.WriteLine($"[{insertCount}] Block: {insert.Block.Name}, Position: ({insert.Position.X}, {insert.Position.Y})");
insertCount++;
}
}
catch (Exception ex)
{
Console.WriteLine($"오류: {ex.Message}");
Console.WriteLine($"스택 트레이스: {ex.StackTrace}");
}
}
}