Skip to content

Commit

Permalink
ellipse
Browse files Browse the repository at this point in the history
  • Loading branch information
DomCR committed Nov 6, 2024
1 parent e560abe commit 59d121d
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 12 deletions.
Binary file modified samples/export_sample.dwg
Binary file not shown.
47 changes: 35 additions & 12 deletions src/ACadSharp.Pdf/Core/IO/PdfPen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ public void DrawEntity(Entity entity, Transform transform)
case Circle circle:
this.drawCircle(circle, transform);
break;
case Ellipse ellipse:
this.drawEllpise(ellipse, transform);
break;
case Line line:
this.drawLine(line, transform);
break;
Expand Down Expand Up @@ -109,16 +112,12 @@ private void applyStyle(Entity entity)

private void drawArc(Arc arc, Transform transform)
{
var vertices = arc.PolygonalVertexes(this._configuration.ArcPrecision)
.Select(v => transform.ApplyTransform((XYZ)v)).ToArray();
this.appendXY(vertices.First(), PdfKey.BeginPath);

for (int i = 1; vertices.Count() > i; i++)
{
this.appendXY(vertices[i], PdfKey.Line);
}
XY[] vertices = arc.PolygonalVertexes(this._configuration.ArcPrecision)
.Select(v => transform.ApplyTransform((XYZ)v))
.Select(v => (XY)v)
.ToArray();

this.appendXY(vertices.Last(), PdfKey.Stroke);
this.appendPath(vertices);
}

private void drawCircle(Circle circle, Transform transform)
Expand All @@ -143,6 +142,17 @@ private void drawCircle(Circle circle, Transform transform)
this._sb.AppendLine($"h {PdfKey.Stroke}");
}

private void drawEllpise(Ellipse ellipse, Transform transform)
{
XY[] vertices = ellipse.PolygonalVertexes(this._configuration.ArcPrecision)
.Select(v => v + (XY)ellipse.Center)
.Select(v => transform.ApplyTransform((XYZ)v))
.Select(v => (XY)v)
.ToArray();

this.appendPath(vertices);
}

private void drawLine(Line line, Transform transform)
{
this.appendXY(transform.ApplyTransform(line.StartPoint), PdfKey.BeginPath);
Expand All @@ -162,7 +172,7 @@ private void drawPoint(Point point, Transform transform)

private void drawPolyline(IPolyline polyline, Transform transform)
{
var vertices = polyline.Vertices.Select(v => transform.ApplyTransform(v.Location.Convert<XYZ>()));
IEnumerable<XYZ> vertices = polyline.Vertices.Select(v => transform.ApplyTransform(v.Location.Convert<XYZ>()));

this.appendXY(vertices.First(), PdfKey.BeginPath);

Expand All @@ -171,16 +181,17 @@ private void drawPolyline(IPolyline polyline, Transform transform)
this.appendXY(vertices.ElementAt(i), PdfKey.Line);
}


if (polyline.IsClosed)
{
this.appendXY(vertices.Last(), PdfKey.Line);
this.appendXY(vertices.First(), PdfKey.Line);
}
else
{
this.appendXY(vertices.Last(), PdfKey.Stroke);
this.appendXY(vertices.Last(), PdfKey.Line);
}

this._sb.AppendLine(PdfKey.Stroke);
}

private void drawViewport(Viewport viewport)
Expand Down Expand Up @@ -217,6 +228,18 @@ private void drawViewport(Viewport viewport)
this._sb.AppendLine(PdfKey.StackEnd);
}

private void appendPath(params XY[] vertices)
{
this.appendXY(vertices.First(), PdfKey.BeginPath);

for (int i = 1; vertices.Count() > i; i++)
{
this.appendXY(vertices[i], PdfKey.Line);
}

this.appendXY(vertices.Last(), PdfKey.Stroke);
}

private void appendArray(string key, params double[] arr)
{
this._sb.AppendJoin(" ", arr.Select(d => this.toPdfDouble(d)));
Expand Down

0 comments on commit 59d121d

Please sign in to comment.