Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f5631cd90 |
@@ -391,6 +391,15 @@ class Mesh(
|
|||||||
area: float = None
|
area: float = None
|
||||||
volume: float = None
|
volume: float = None
|
||||||
|
|
||||||
|
def transform_to(self, transform: "Transform") -> "Mesh":
|
||||||
|
mesh = Mesh(vertices=transform.apply_to_points_values(self.vertices))
|
||||||
|
for attr in set(self.get_serializable_attributes()) - {"vertices"}:
|
||||||
|
orig_val = getattr(self, attr, None)
|
||||||
|
if orig_val:
|
||||||
|
setattr(mesh, attr, orig_val)
|
||||||
|
|
||||||
|
return mesh
|
||||||
|
|
||||||
|
|
||||||
class Surface(Base, speckle_type=GEOMETRY + "Surface"):
|
class Surface(Base, speckle_type=GEOMETRY + "Surface"):
|
||||||
degreeU: int = None
|
degreeU: int = None
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
import pytest
|
import pytest
|
||||||
from specklepy.api import operations
|
from specklepy.api import operations
|
||||||
from specklepy.objects.geometry import Point, Vector
|
from specklepy.objects.geometry import Mesh, Point, Vector
|
||||||
from specklepy.objects.other import (
|
from specklepy.objects.other import (
|
||||||
Transform,
|
Transform,
|
||||||
BlockInstance,
|
BlockInstance,
|
||||||
@@ -43,6 +43,15 @@ def vector_value():
|
|||||||
return [1, 1, 2]
|
return [1, 1, 2]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def mesh():
|
||||||
|
return Mesh(
|
||||||
|
vertices=[-7, 5, 1, -8, 4, 0, -7, 3, 0, -6, 4, 0],
|
||||||
|
faces=[1, 1, 2, 3, 0],
|
||||||
|
units="feet",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def transform():
|
def transform():
|
||||||
"""Translates to [1, 2, 0] and scales z by 0.5"""
|
"""Translates to [1, 2, 0] and scales z by 0.5"""
|
||||||
@@ -130,3 +139,13 @@ def test_transform_serialisation(transform: Transform):
|
|||||||
deserialized = operations.deserialize(serialized)
|
deserialized = operations.deserialize(serialized)
|
||||||
|
|
||||||
assert transform.get_id() == deserialized.get_id()
|
assert transform.get_id() == deserialized.get_id()
|
||||||
|
|
||||||
|
|
||||||
|
def test_mesh_transform(mesh: Mesh, transform: Transform):
|
||||||
|
new_mesh = mesh.transform_to(transform)
|
||||||
|
|
||||||
|
assert mesh.vertices != new_mesh.vertices
|
||||||
|
|
||||||
|
new_mesh.vertices = mesh.vertices
|
||||||
|
|
||||||
|
assert mesh.get_id() == new_mesh.get_id()
|
||||||
Reference in New Issue
Block a user