From 24370bf4dba3909c02c1ea208a8cf790fc5af4ef Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Tue, 31 Jan 2023 13:04:11 +0100 Subject: [PATCH 1/7] Add Edge Set tree object class --- src/ansys/acp/core/__init__.py | 3 ++ src/ansys/acp/core/_tree_objects/__init__.py | 2 + src/ansys/acp/core/_tree_objects/edge_set.py | 52 ++++++++++++++++++++ src/ansys/acp/core/_tree_objects/enums.py | 7 +++ 4 files changed, 64 insertions(+) create mode 100644 src/ansys/acp/core/_tree_objects/edge_set.py diff --git a/src/ansys/acp/core/__init__.py b/src/ansys/acp/core/__init__.py index 3eb42c2890..a8d773da84 100644 --- a/src/ansys/acp/core/__init__.py +++ b/src/ansys/acp/core/__init__.py @@ -9,6 +9,7 @@ launch_acp, ) from ._tree_objects import ( + EdgeSet, ElementSet, Fabric, Material, @@ -35,8 +36,10 @@ "Material", "Fabric", "ElementSet", + "EdgeSet", "Rosette", "OrientedSelectionSet", "ModelingGroup", "ModelingPly", + "UnitSystemType", ] diff --git a/src/ansys/acp/core/_tree_objects/__init__.py b/src/ansys/acp/core/_tree_objects/__init__.py index 7ebb14a4ec..feb3a6032f 100644 --- a/src/ansys/acp/core/_tree_objects/__init__.py +++ b/src/ansys/acp/core/_tree_objects/__init__.py @@ -1,3 +1,4 @@ +from .edge_set import EdgeSet from .element_set import ElementSet from .enums import UnitSystemType from .fabric import Fabric @@ -13,6 +14,7 @@ "Material", "Fabric", "ElementSet", + "EdgeSet", "Rosette", "OrientedSelectionSet", "ModelingGroup", diff --git a/src/ansys/acp/core/_tree_objects/edge_set.py b/src/ansys/acp/core/_tree_objects/edge_set.py new file mode 100644 index 0000000000..0cb404ad66 --- /dev/null +++ b/src/ansys/acp/core/_tree_objects/edge_set.py @@ -0,0 +1,52 @@ +from __future__ import annotations + +from typing import Iterable + +from ansys.api.acp.v0 import edge_set_pb2, edge_set_pb2_grpc + +from .._grpc_helpers.property_helper import ( + grpc_data_property, + grpc_data_property_read_only, + grpc_link_property, + mark_grpc_properties, +) +from .._utils.array_conversions import to_1D_double_array, to_1D_int_array, to_tuple_from_1D_array +from .base import CreatableTreeObject +from .enums import edge_set_type_from_pb, edge_set_type_to_pb +from .object_registry import register + + +@mark_grpc_properties +@register +class EdgeSet(CreatableTreeObject): + __slots__: Iterable[str] = tuple() + COLLECTION_LABEL = "edge_sets" + OBJECT_INFO_TYPE = edge_set_pb2.ObjectInfo + CREATE_REQUEST_TYPE = edge_set_pb2.CreateRequest + + def __init__(self, name: str = "EdgeSet"): + super().__init__(name=name) + ... + + def _create_stub(self) -> edge_set_pb2_grpc.ObjectServiceStub: + return edge_set_pb2_grpc.ObjectServiceStub(self._channel) + + id = grpc_data_property("info.id") + + locked = grpc_data_property_read_only("properties.locked") + + edge_set_type = grpc_data_property( + "properties.edge_set_type", + from_protobuf=edge_set_type_from_pb, + to_protobuf=edge_set_type_to_pb, + ) + defining_node_labels = grpc_data_property( + "properties.defining_node_labels", + from_protobuf=to_tuple_from_1D_array, + to_protobuf=to_1D_int_array, + ) + element_set = grpc_link_property("properties.element_set") + limit_angle = grpc_data_property("properties.limit_angle") + origin = grpc_data_property( + "properties.origin", from_protobuf=to_tuple_from_1D_array, to_protobuf=to_1D_double_array + ) diff --git a/src/ansys/acp/core/_tree_objects/enums.py b/src/ansys/acp/core/_tree_objects/enums.py index 5f1b78d3ba..6cc8a8d46f 100644 --- a/src/ansys/acp/core/_tree_objects/enums.py +++ b/src/ansys/acp/core/_tree_objects/enums.py @@ -1,6 +1,7 @@ from ansys.api.acp.v0 import ( cut_off_material_pb2, drop_off_material_pb2, + edge_set_pb2, enum_types_pb2, ply_material_pb2, unit_system_pb2, @@ -53,6 +54,12 @@ "DrapingMaterialType", ply_material_pb2.DrapingMaterialType, module=__name__ ) +( + EdgeSetType, + edge_set_type_to_pb, + edge_set_type_from_pb, +) = wrap_to_string_enum("EdgeSetType", edge_set_pb2.EdgeSetType, module=__name__) + ( PlyType, ply_type_to_pb, From fc622fbbcbaeb4781e843dbee8016a1150e1fddf Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Tue, 31 Jan 2023 13:33:04 +0100 Subject: [PATCH 2/7] Add basic Edge Set tests --- src/ansys/acp/core/__init__.py | 2 + src/ansys/acp/core/_tree_objects/__init__.py | 3 +- src/ansys/acp/core/_tree_objects/edge_set.py | 30 +++++-- .../acp/core/_tree_objects/element_set.py | 8 +- src/ansys/acp/core/_tree_objects/model.py | 3 + src/ansys/acp/core/_tree_objects/rosette.py | 6 +- tests/test_edge_set.py | 81 +++++++++++++++++++ 7 files changed, 117 insertions(+), 16 deletions(-) create mode 100644 tests/test_edge_set.py diff --git a/src/ansys/acp/core/__init__.py b/src/ansys/acp/core/__init__.py index a8d773da84..bbc1f296d9 100644 --- a/src/ansys/acp/core/__init__.py +++ b/src/ansys/acp/core/__init__.py @@ -10,6 +10,7 @@ ) from ._tree_objects import ( EdgeSet, + EdgeSetType, ElementSet, Fabric, Material, @@ -42,4 +43,5 @@ "ModelingGroup", "ModelingPly", "UnitSystemType", + "EdgeSetType", ] diff --git a/src/ansys/acp/core/_tree_objects/__init__.py b/src/ansys/acp/core/_tree_objects/__init__.py index feb3a6032f..2e5859fbdf 100644 --- a/src/ansys/acp/core/_tree_objects/__init__.py +++ b/src/ansys/acp/core/_tree_objects/__init__.py @@ -1,6 +1,6 @@ from .edge_set import EdgeSet from .element_set import ElementSet -from .enums import UnitSystemType +from .enums import EdgeSetType, UnitSystemType from .fabric import Fabric from .material import Material from .model import Model @@ -20,4 +20,5 @@ "ModelingGroup", "ModelingPly", "UnitSystemType", + "EdgeSetType", ] diff --git a/src/ansys/acp/core/_tree_objects/edge_set.py b/src/ansys/acp/core/_tree_objects/edge_set.py index 0cb404ad66..2e4826bd9d 100644 --- a/src/ansys/acp/core/_tree_objects/edge_set.py +++ b/src/ansys/acp/core/_tree_objects/edge_set.py @@ -11,28 +11,42 @@ mark_grpc_properties, ) from .._utils.array_conversions import to_1D_double_array, to_1D_int_array, to_tuple_from_1D_array -from .base import CreatableTreeObject -from .enums import edge_set_type_from_pb, edge_set_type_to_pb +from .base import CreatableTreeObject, IdTreeObject +from .element_set import ElementSet +from .enums import EdgeSetType, edge_set_type_from_pb, edge_set_type_to_pb, status_type_from_pb from .object_registry import register @mark_grpc_properties @register -class EdgeSet(CreatableTreeObject): +class EdgeSet(CreatableTreeObject, IdTreeObject): __slots__: Iterable[str] = tuple() COLLECTION_LABEL = "edge_sets" OBJECT_INFO_TYPE = edge_set_pb2.ObjectInfo CREATE_REQUEST_TYPE = edge_set_pb2.CreateRequest - def __init__(self, name: str = "EdgeSet"): - super().__init__(name=name) - ... + def __init__( + self, + name: str = "EdgeSet", + edge_set_type: EdgeSetType = EdgeSetType.BY_NODES, + defining_node_labels: Iterable[int] = tuple(), + element_set: ElementSet | None = None, + limit_angle: float = -1.0, + origin: tuple[float, float, float] = (0.0, 0.0, 0.0), + ): + super().__init__( + name=name, + ) + self.edge_set_type = edge_set_type + self.defining_node_labels = defining_node_labels + self.element_set = element_set + self.limit_angle = limit_angle + self.origin = origin def _create_stub(self) -> edge_set_pb2_grpc.ObjectServiceStub: return edge_set_pb2_grpc.ObjectServiceStub(self._channel) - id = grpc_data_property("info.id") - + status = grpc_data_property_read_only("properties.status", from_protobuf=status_type_from_pb) locked = grpc_data_property_read_only("properties.locked") edge_set_type = grpc_data_property( diff --git a/src/ansys/acp/core/_tree_objects/element_set.py b/src/ansys/acp/core/_tree_objects/element_set.py index 4a26e00fc3..05559f5d9d 100644 --- a/src/ansys/acp/core/_tree_objects/element_set.py +++ b/src/ansys/acp/core/_tree_objects/element_set.py @@ -10,7 +10,8 @@ mark_grpc_properties, ) from .._utils.array_conversions import to_1D_int_array, to_tuple_from_1D_array -from .base import CreatableTreeObject +from .base import CreatableTreeObject, IdTreeObject +from .enums import status_type_from_pb from .object_registry import register __all__ = ["ElementSet"] @@ -18,7 +19,7 @@ @mark_grpc_properties @register -class ElementSet(CreatableTreeObject): +class ElementSet(CreatableTreeObject, IdTreeObject): __slots__: Iterable[str] = tuple() COLLECTION_LABEL = "element_sets" OBJECT_INFO_TYPE = element_set_pb2.ObjectInfo @@ -48,8 +49,7 @@ def __init__( def _create_stub(self) -> element_set_pb2_grpc.ObjectServiceStub: return element_set_pb2_grpc.ObjectServiceStub(self._channel) - id = grpc_data_property("info.id") - + status = grpc_data_property_read_only("properties.status", from_protobuf=status_type_from_pb) locked = grpc_data_property_read_only("properties.locked") middle_offset = grpc_data_property("properties.middle_offset") element_labels = grpc_data_property( diff --git a/src/ansys/acp/core/_tree_objects/model.py b/src/ansys/acp/core/_tree_objects/model.py index e97c0741c2..5afec1426d 100644 --- a/src/ansys/acp/core/_tree_objects/model.py +++ b/src/ansys/acp/core/_tree_objects/model.py @@ -5,6 +5,7 @@ from grpc import Channel from ansys.api.acp.v0 import ( + edge_set_pb2_grpc, element_set_pb2_grpc, fabric_pb2_grpc, material_pb2, @@ -27,6 +28,7 @@ from .._typing_helper import PATH as _PATH from .._utils.resource_paths import join as rp_join from .base import TreeObject +from .edge_set import EdgeSet from .element_set import ElementSet from .enums import UnitSystemType, unit_system_type_from_pb, unit_system_type_to_pb from .fabric import Fabric @@ -218,6 +220,7 @@ def export_materials(self, path: _PATH) -> None: create_element_set, element_sets = define_mapping( ElementSet, element_set_pb2_grpc.ObjectServiceStub ) + create_edge_set, edge_sets = define_mapping(EdgeSet, edge_set_pb2_grpc.ObjectServiceStub) create_fabric, fabrics = define_mapping(Fabric, fabric_pb2_grpc.ObjectServiceStub) create_material, materials = define_mapping(Material, material_pb2_grpc.ObjectServiceStub) create_rosette, rosettes = define_mapping(Rosette, rosette_pb2_grpc.ObjectServiceStub) diff --git a/src/ansys/acp/core/_tree_objects/rosette.py b/src/ansys/acp/core/_tree_objects/rosette.py index 1ac83dbc9d..d9a098b698 100644 --- a/src/ansys/acp/core/_tree_objects/rosette.py +++ b/src/ansys/acp/core/_tree_objects/rosette.py @@ -43,9 +43,9 @@ class Rosette(CreatableTreeObject, IdTreeObject): def __init__( self, name: str = "Rosette", - origin: tuple[float, ...] = (0.0, 0.0, 0.0), - dir1: tuple[float, ...] = (1.0, 0.0, 0.0), - dir2: tuple[float, ...] = (0.0, 1.0, 0.0), + origin: tuple[float, float, float] = (0.0, 0.0, 0.0), + dir1: tuple[float, float, float] = (1.0, 0.0, 0.0), + dir2: tuple[float, float, float] = (0.0, 1.0, 0.0), ): super().__init__(name=name) diff --git a/tests/test_edge_set.py b/tests/test_edge_set.py new file mode 100644 index 0000000000..5660d8d09f --- /dev/null +++ b/tests/test_edge_set.py @@ -0,0 +1,81 @@ +import pytest + +from ansys.acp.core import EdgeSetType + + +def test_create_edge_set(load_model_from_tempfile): + """Test the creation of Edge Sets.""" + with load_model_from_tempfile() as model: + edge_set_names = ["EdgeSet.1", "EdgeSet.1", "üñıçよð€"] + for ref_name in edge_set_names: + edge_set = model.create_edge_set(name=ref_name) + assert edge_set.name == ref_name + + +def test_edge_set_properties(load_model_from_tempfile): + """Test the put request of an Edge Set.""" + with load_model_from_tempfile() as model: + + edge_set = model.create_edge_set(name="test_properties") + properties = { + "name": "new_name", + "edge_set_type": EdgeSetType.BY_REFERENCE, + "defining_node_labels": (1, 2, 5), + "limit_angle": 3.21, + "origin": (2.0, 3.0, 1.0), + } + + for prop, value in properties.items(): + setattr(edge_set, prop, value) + assert getattr(edge_set, prop) == value + + # test read only property + readonly_props = ["id", "status", "locked"] + for prop in readonly_props: + value = getattr(edge_set, prop) + with pytest.raises(AttributeError): + setattr(edge_set, prop, value) + + +def test_collection_access(load_model_from_tempfile): + """Basic test of the Model.edge_sets collection.""" + with load_model_from_tempfile() as model: + initial_num_esets = len(model.edge_sets) + assert initial_num_esets == 1 + + edge_set_names = ["EdgeSet.1", "EdgeSet.1", "üñıçよð€"] + edge_set_ids = [] + for ref_name in edge_set_names: + edge_set = model.create_edge_set(name=ref_name) + edge_set_ids.append(edge_set.id) + + assert len(model.edge_sets) == len(edge_set_names) + initial_num_esets + + for name in edge_set_names: + assert name in [eset.name for eset in model.edge_sets.values()] + + for id in edge_set_ids: + assert id in model.edge_sets + assert id in model.edge_sets.keys() + + edge_set_names_fromitems = [] + edge_set_ids_fromitems = [] + for key, value in model.edge_sets.items(): + edge_set_names_fromitems.append(value.name) + edge_set_ids_fromitems.append(key) + assert key == value.id + + for name in edge_set_names: + assert name in edge_set_names_fromitems + for id in edge_set_ids: + assert id in edge_set_ids_fromitems + + REF_ID = edge_set_ids[0] + INEXISTENT_ID = "Inexistent ID" + + assert model.edge_sets[REF_ID].id == REF_ID + assert model.edge_sets.get(REF_ID).id == REF_ID + + with pytest.raises(KeyError): + model.edge_sets[INEXISTENT_ID] + assert model.edge_sets.get(INEXISTENT_ID) is None From 07cf4d8c72548620c357b708552c62f9a290b26c Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Tue, 31 Jan 2023 13:53:47 +0100 Subject: [PATCH 3/7] Add docstring for Edge Set --- src/ansys/acp/core/_tree_objects/edge_set.py | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/ansys/acp/core/_tree_objects/edge_set.py b/src/ansys/acp/core/_tree_objects/edge_set.py index 2e4826bd9d..dfe31dbc1f 100644 --- a/src/ansys/acp/core/_tree_objects/edge_set.py +++ b/src/ansys/acp/core/_tree_objects/edge_set.py @@ -20,6 +20,30 @@ @mark_grpc_properties @register class EdgeSet(CreatableTreeObject, IdTreeObject): + """Instantiate an Edge Set. + + Parameters + ---------- + name : + Name of the Edge Set. + edge_set_type : + Determines how the Edge Set is defined. Can be either :attr:`.EdgeSetType.BY_NODES` + or :attr:`.EdgeSetType.BY_REFERENCE`. + defining_node_labels : + Labels of the nodes in the Edge Set. + Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_NODES`. + element_set : + Element Set whose boundary the Edge Set follows. + Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. + limit_angle : + Maximum angle above which the remaining Element Set boundary is no + longer considered connected to the Edge Set. + Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. + origin : + Defines the starting point of the Edge Set. + Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. + """ + __slots__: Iterable[str] = tuple() COLLECTION_LABEL = "edge_sets" OBJECT_INFO_TYPE = edge_set_pb2.ObjectInfo From cab6398f555c68006eee9797a8e4463b4d51edd4 Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Tue, 31 Jan 2023 14:00:56 +0100 Subject: [PATCH 4/7] Add Edge Set to API docs --- doc/source/api/tree_objects.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/api/tree_objects.rst b/doc/source/api/tree_objects.rst index 4f9a01966d..b090393d95 100644 --- a/doc/source/api/tree_objects.rst +++ b/doc/source/api/tree_objects.rst @@ -10,6 +10,7 @@ ACP Objects Material Fabric ElementSet + EdgeSet Rosette OrientedSelectionSet ModelingGroup From be7fbe7d638da5d9613485052d0f5f4641c12f91 Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Thu, 9 Feb 2023 13:55:23 +0100 Subject: [PATCH 5/7] Address review comments --- src/ansys/acp/core/_tree_objects/edge_set.py | 32 +++++++++++--------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/ansys/acp/core/_tree_objects/edge_set.py b/src/ansys/acp/core/_tree_objects/edge_set.py index dfe31dbc1f..5639862a19 100644 --- a/src/ansys/acp/core/_tree_objects/edge_set.py +++ b/src/ansys/acp/core/_tree_objects/edge_set.py @@ -20,28 +20,32 @@ @mark_grpc_properties @register class EdgeSet(CreatableTreeObject, IdTreeObject): - """Instantiate an Edge Set. + """Instantiate an edge set. Parameters ---------- name : - Name of the Edge Set. + Name of the edge set. edge_set_type : - Determines how the Edge Set is defined. Can be either :attr:`.EdgeSetType.BY_NODES` - or :attr:`.EdgeSetType.BY_REFERENCE`. + Determines how the edge set is defined. Can be one of: + + * :attr:`.EdgeSetType.BY_REFERENCE`: define the edge set using an :class:`.ElementSet`. + * :attr:`.EdgeSetType.BY_NODES`: define the edge set using a list of node labels. + defining_node_labels : - Labels of the nodes in the Edge Set. - Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_NODES`. + Labels of the nodes in the edge set. + This parameter only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_NODES`. element_set : - Element Set whose boundary the Edge Set follows. - Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. + The boundary of this element set defines the initial + edge set. + This parameter only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. limit_angle : - Maximum angle above which the remaining Element Set boundary is no - longer considered connected to the Edge Set. - Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. + The edge set is cropped if the angle between two element edges exceeds this limits (in degrees). + Use ``-1.`` to disable cropping. + This parameter only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. origin : - Defines the starting point of the Edge Set. - Only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. + Defines the starting point of the edge set. + This parameter only applies when ``edge_set_type`` is :attr:`.EdgeSetType.BY_REFERENCE`. """ __slots__: Iterable[str] = tuple() @@ -52,7 +56,7 @@ class EdgeSet(CreatableTreeObject, IdTreeObject): def __init__( self, name: str = "EdgeSet", - edge_set_type: EdgeSetType = EdgeSetType.BY_NODES, + edge_set_type: EdgeSetType = EdgeSetType.BY_REFERENCE, defining_node_labels: Iterable[int] = tuple(), element_set: ElementSet | None = None, limit_angle: float = -1.0, From 8376c2a313fd24c4298ac32b45ba0afda54c7f35 Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Thu, 9 Feb 2023 14:06:23 +0100 Subject: [PATCH 6/7] Use common testing method for edge set --- tests/test_edge_set.py | 119 +++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 76 deletions(-) diff --git a/tests/test_edge_set.py b/tests/test_edge_set.py index 5660d8d09f..5c725a56b3 100644 --- a/tests/test_edge_set.py +++ b/tests/test_edge_set.py @@ -1,81 +1,48 @@ import pytest -from ansys.acp.core import EdgeSetType +from ansys.acp.core._tree_objects.enums import EdgeSetType +from common.tree_object_tester import NoLockedMixin, ObjectPropertiesToTest, TreeObjectTester -def test_create_edge_set(load_model_from_tempfile): - """Test the creation of Edge Sets.""" +@pytest.fixture +def parent_object(load_model_from_tempfile): with load_model_from_tempfile() as model: - edge_set_names = ["EdgeSet.1", "EdgeSet.1", "üñıçよð€"] - for ref_name in edge_set_names: - edge_set = model.create_edge_set(name=ref_name) - assert edge_set.name == ref_name - - -def test_edge_set_properties(load_model_from_tempfile): - """Test the put request of an Edge Set.""" - with load_model_from_tempfile() as model: - - edge_set = model.create_edge_set(name="test_properties") - properties = { - "name": "new_name", - "edge_set_type": EdgeSetType.BY_REFERENCE, - "defining_node_labels": (1, 2, 5), - "limit_angle": 3.21, - "origin": (2.0, 3.0, 1.0), - } - - for prop, value in properties.items(): - setattr(edge_set, prop, value) - assert getattr(edge_set, prop) == value - - # test read only property - readonly_props = ["id", "status", "locked"] - for prop in readonly_props: - value = getattr(edge_set, prop) - with pytest.raises(AttributeError): - setattr(edge_set, prop, value) - - -def test_collection_access(load_model_from_tempfile): - """Basic test of the Model.edge_sets collection.""" - with load_model_from_tempfile() as model: - initial_num_esets = len(model.edge_sets) - assert initial_num_esets == 1 - - edge_set_names = ["EdgeSet.1", "EdgeSet.1", "üñıçよð€"] - edge_set_ids = [] - for ref_name in edge_set_names: - edge_set = model.create_edge_set(name=ref_name) - edge_set_ids.append(edge_set.id) - - assert len(model.edge_sets) == len(edge_set_names) + initial_num_esets - - for name in edge_set_names: - assert name in [eset.name for eset in model.edge_sets.values()] - - for id in edge_set_ids: - assert id in model.edge_sets - assert id in model.edge_sets.keys() - - edge_set_names_fromitems = [] - edge_set_ids_fromitems = [] - for key, value in model.edge_sets.items(): - edge_set_names_fromitems.append(value.name) - edge_set_ids_fromitems.append(key) - assert key == value.id - - for name in edge_set_names: - assert name in edge_set_names_fromitems - for id in edge_set_ids: - assert id in edge_set_ids_fromitems - - REF_ID = edge_set_ids[0] - INEXISTENT_ID = "Inexistent ID" - - assert model.edge_sets[REF_ID].id == REF_ID - assert model.edge_sets.get(REF_ID).id == REF_ID - - with pytest.raises(KeyError): - model.edge_sets[INEXISTENT_ID] - assert model.edge_sets.get(INEXISTENT_ID) is None + yield model + + +@pytest.fixture +def tree_object(parent_object): + return parent_object.create_edge_set() + + +class TestEdgeSet(NoLockedMixin, TreeObjectTester): + COLLECTION_NAME = "edge_sets" + DEFAULT_PROPERTIES = { + "status": "NOTUPTODATE", + "edge_set_type": EdgeSetType.BY_REFERENCE, + "element_set": None, + "defining_node_labels": tuple(), + "limit_angle": -1.0, + "origin": (0.0, 0.0, 0.0), + } + + CREATE_METHOD_NAME = "create_edge_set" + + @staticmethod + @pytest.fixture + def object_properties(parent_object): + model = parent_object + element_set = model.create_element_set() + return ObjectPropertiesToTest( + read_write=[ + ("name", "Edge set name"), + ("edge_set_type", EdgeSetType.BY_NODES), + ("element_set", element_set), + ("limit_angle", 3.21), + ("origin", (2.0, 3.0, 1.0)), + ], + read_only=[ + ("id", "some_id"), + ("status", "UPTODATE"), + ], + ) From 2ccef1689dbe6e418777a4add6168eea63ca448b Mon Sep 17 00:00:00 2001 From: Dominik Gresch Date: Fri, 10 Feb 2023 15:18:56 +0100 Subject: [PATCH 7/7] Update resolved API reference --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index f553a17a7d..506ca51b39 100644 --- a/poetry.lock +++ b/poetry.lock @@ -30,7 +30,7 @@ protobuf = ">=3.19,<4.0" type = "git" url = "https://github.com/ansys/ansys-api-acp-private.git" reference = "main" -resolved_reference = "e436324d3de9b6544aa25979ded776c91d8e07cc" +resolved_reference = "ab2dacb7514a37c41afdb99a7b06dcda062da9b6" [[package]] name = "ansys-api-mapdl"