Skip to content

Commit 19be4e6

Browse files
fitting working and tested
1 parent aa3b343 commit 19be4e6

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/ansys/geometry/core/shapes/surfaces/nurbs.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ def fit_surface_from_points(
217217
nurbs_surface = cls()
218218
nurbs_surface._nurbs_surface.degree_u = degree_u
219219
nurbs_surface._nurbs_surface.degree_v = degree_v
220+
221+
nurbs_surface._nurbs_surface.ctrlpts_size_u = surface.ctrlpts_size_u
222+
nurbs_surface._nurbs_surface.ctrlpts_size_v = surface.ctrlpts_size_v
220223
nurbs_surface._nurbs_surface.ctrlpts = surface.ctrlpts
221224
nurbs_surface._nurbs_surface.knotvector = surface.knotvector
222225
nurbs_surface._nurbs_surface.weights = surface.weights

tests/test_primitives.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,3 +1638,29 @@ def test_nurbs_surface_from_control_points():
16381638
assert surface.weights == [1.0] * len(control_points)
16391639

16401640

1641+
def test_nurbs_surface_fitting():
1642+
"""Test fitting a NURBS surface from points."""
1643+
points = [
1644+
Point3D([0, 0, 0]),
1645+
Point3D([0, 1, 1]),
1646+
Point3D([0, 2, 0]),
1647+
Point3D([1, 0, 1]),
1648+
Point3D([1, 1, 2]),
1649+
Point3D([1, 2, 1]),
1650+
Point3D([2, 0, 0]),
1651+
Point3D([2, 1, 1]),
1652+
Point3D([2, 2, 0]),
1653+
]
1654+
degree_u = 2
1655+
degree_v = 2
1656+
1657+
surface = NURBSSurface.fit_surface_from_points(
1658+
points=points, size_u = 3, size_v = 3, degree_u=degree_u, degree_v=degree_v
1659+
)
1660+
1661+
assert isinstance(surface._nurbs_surface, geomdl.NURBS.Surface)
1662+
assert surface.degree_u == degree_u
1663+
assert surface.degree_v == degree_v
1664+
assert len(surface.knotvector_u) == 6
1665+
assert len(surface.knotvector_v) == 6
1666+
assert len(surface.control_points) == 9

0 commit comments

Comments
 (0)