Objects.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using InABox.Core;
  2. using netDxf.Entities;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace InABox.Dxf;
  11. internal interface IDxfObject
  12. {
  13. void Draw(DrawData data);
  14. }
  15. internal class DxfLine : IDxfObject
  16. {
  17. public Line Line { get; set; }
  18. public void Draw(DrawData data)
  19. {
  20. // data.Graphics.DrawLine(new Pen(Line.Color.ToColor(), 1), data.ConvertPoint(Line.StartPoint), data.ConvertPoint(Line.EndPoint));
  21. data.Graphics.DrawLine(new Pen(Color.Black, 1), data.ConvertPoint(Line.StartPoint), data.ConvertPoint(Line.EndPoint));
  22. }
  23. }
  24. internal class DxfInsert : IDxfObject
  25. {
  26. public Insert Insert { get; set; }
  27. public List<IDxfObject> Objects { get; set; }
  28. public DxfInsert(Insert insert)
  29. {
  30. Insert = insert;
  31. Objects = insert.Block.Entities.Select(DxfUtils.ConvertEl).NotNull().ToList();
  32. }
  33. public void Draw(DrawData data)
  34. {
  35. data.PushTransform();
  36. data.Translate(data.ConvertPoint(Insert.Position));
  37. data.Rotate((float)Insert.Rotation);
  38. data.Scale((float)Insert.Scale.X, (float)Insert.Scale.Y);
  39. foreach(var obj in Objects)
  40. {
  41. obj.Draw(data);
  42. }
  43. data.PopTransform();
  44. }
  45. }
  46. internal class DxfEllipse : IDxfObject
  47. {
  48. public Ellipse Ellipse { get; set; }
  49. public DxfEllipse(Ellipse ellipse)
  50. {
  51. Ellipse = ellipse;
  52. }
  53. public void Draw(DrawData data)
  54. {
  55. var center = data.ConvertPoint(Ellipse.Center);
  56. var size = data.ConvertSize(new((float)Ellipse.MajorAxis, (float)Ellipse.MinorAxis));
  57. data.Graphics.DrawEllipse(new Pen(Color.Black, 1), center.X, center.Y, size.Width, size.Height);
  58. }
  59. }
  60. internal class DxfPolyline2D : IDxfObject
  61. {
  62. public Polyline2D Polyline { get; set; }
  63. public DxfPolyline2D(Polyline2D polyline)
  64. {
  65. Polyline = polyline;
  66. }
  67. public void Draw(DrawData data)
  68. {
  69. }
  70. }
  71. internal class DxfMText : IDxfObject
  72. {
  73. public MText MText { get; set; }
  74. public DxfMText(MText text)
  75. {
  76. MText = text;
  77. }
  78. public void Draw(DrawData data)
  79. {
  80. }
  81. }
  82. internal class DxfDimension : IDxfObject
  83. {
  84. public Dimension Dimension { get; set; }
  85. public DxfDimension(Dimension dimension)
  86. {
  87. Dimension = dimension;
  88. }
  89. public void Draw(DrawData data)
  90. {
  91. }
  92. }