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}"); } } }