Skip to content

Commit 17978e9

Browse files
committed
fix bezier approximation again
1 parent 01daade commit 17978e9

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

ocpsvg/ocp.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,8 @@ def curve_to_beziers(
402402
else:
403403
bspline = curve_to_bspline(curve)
404404
bspline.Segment(adaptor.FirstParameter(), adaptor.LastParameter())
405+
if isinstance(adaptor, BRepAdaptor_Curve):
406+
bspline.Transform(adaptor.Trsf())
405407
yield from bspline_to_beziers(
406408
bspline,
407409
max_degree=max_degree,

tests/test_svg.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99

1010
import pytest
1111
import svgelements
12+
from OCP.BRepBuilderAPI import BRepBuilderAPI_Transform
1213
from OCP.GC import GC_MakeArcOfCircle
1314
from OCP.Geom import Geom_Circle, Geom_Curve, Geom_Ellipse, Geom_TrimmedCurve
1415
from OCP.GeomAbs import GeomAbs_CurveType
15-
from OCP.gp import gp_Ax2, gp_Circ, gp_Pnt, gp_Vec
16+
from OCP.gp import gp_Ax2, gp_Circ, gp_Pnt, gp_Trsf, gp_Vec
1617
from OCP.TopoDS import TopoDS, TopoDS_Edge, TopoDS_Face, TopoDS_Shape, TopoDS_Wire
1718
from pytest import approx, raises
1819

@@ -199,6 +200,22 @@ def test_trimmed_arc_to_cubics_reversed():
199200
assert svg_with_arcs[-1][-2:] == approx(svg_with_cubics_only[-1][-2:])
200201

201202

203+
def test_arc_to_cubic_transformed():
204+
edge = edge_from_curve(circle_curve(2))
205+
206+
t = gp_Trsf()
207+
t.SetTranslationPart(gp_Vec(8, 4, 0))
208+
transformed_edge = TopoDS.Edge_s(
209+
BRepBuilderAPI_Transform(edge, t, False, False).Shape()
210+
)
211+
212+
cmd1 = next(edge_to_svg_path(edge, tolerance=0.1, use_arcs=False))
213+
cmd2 = next(edge_to_svg_path(transformed_edge, tolerance=0.1, use_arcs=False))
214+
assert cmd1[0] == "M" and cmd2[0] == "M"
215+
assert cmd2[1] == approx(cmd1[1] + 8)
216+
assert cmd2[2] == approx(cmd1[2] + 4)
217+
218+
202219
@pytest.mark.parametrize(
203220
"wire, svg_d, opts",
204221
[

0 commit comments

Comments
 (0)