Skip to content

Commit

Permalink
FEAT: Material appearance (#5427)
Browse files Browse the repository at this point in the history
Co-authored-by: atlanswer <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Nov 13, 2024
1 parent f73c6c9 commit 2805e17
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 2 deletions.
40 changes: 40 additions & 0 deletions src/ansys/aedt/core/modeler/cad/object_3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ def __init__(self, primitives, name=None):
self._surface_material = None
self._color = None
self._wireframe = None
self._material_appearance = None
self._part_coordinate_system = None
self._model = None
self._m_groupName = None
Expand Down Expand Up @@ -1342,6 +1343,45 @@ def display_wireframe(self, fWireframe):
self._change_property(vWireframe)
self._wireframe = fWireframe

@property
def material_appearance(self):
"""Material appearance property of the part.
Returns
-------
bool
``True`` when material appearance is activated for the part, ``False`` otherwise.
References
----------
>>> oEditor.GetPropertyValue
>>> oEditor.ChangeProperty
"""
if self._material_appearance is not None:
return self._material_appearance
if "Material Appearance" in self.valid_properties:
material_appearance = self._oeditor.GetPropertyValue(
"Geometry3DAttributeTab", self._m_name, "Material Appearance"
)
if material_appearance == "true" or material_appearance == "True":
self._material_appearance = True
else:
self._material_appearance = False
return self._material_appearance

@material_appearance.setter
def material_appearance(self, material_appearance):
vMaterialAppearance = [
"NAME:Material Appearance",
"Value:=",
material_appearance,
]

self._change_property(vMaterialAppearance)
self._material_appearance = material_appearance

@pyaedt_function_handler()
def history(self):
"""Object history.
Expand Down
6 changes: 5 additions & 1 deletion src/ansys/aedt/core/modeler/cad/primitives.py
Original file line number Diff line number Diff line change
Expand Up @@ -6311,7 +6311,11 @@ def update_geometry_property(self, assignment, name=None, value=None):
"solve_inside": {"property_name": "Solve Inside", "reset_attr": ["_solve_inside"]},
"color": {"property_name": "Color", "reset_attr": ["_color"]},
"transparency": {"property_name": "Transparent", "reset_attr": ["_transparency"]},
"part_coordinate_system": {"property_name": "Orientation", "reset_attr": ["_part_coordinate_system"]},
"part_coordinate_system": {
"property_name": "Orientation",
"reset_attr": ["_part_coordinate_system"],
},
"material_appearance": {"property_name": "Material Appearance", "reset_attr": ["_material_appearance"]},
}

# Check if property name is valid
Expand Down
2 changes: 1 addition & 1 deletion tests/system/general/test_07_Object3D.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,14 +241,14 @@ def test_07_object_clone_and_get_properties(self):
assert new_object.solve_inside == initial_object.solve_inside
assert new_object.model == initial_object.model
assert new_object.display_wireframe == initial_object.display_wireframe
assert new_object.material_appearance == initial_object.material_appearance
assert new_object.part_coordinate_system == initial_object.part_coordinate_system
assert new_object.transparency == 0.76
assert new_object.color == initial_object.color
assert new_object.bounding_box == initial_object.bounding_box
assert len(new_object.vertices) == 8
assert len(new_object.faces) == 6
assert len(new_object.edges) == 12
assert new_object.display_wireframe == initial_object.display_wireframe
new_object.name = "Properties_Box"
assert not new_object.name == "Properties_Box"

Expand Down
6 changes: 6 additions & 0 deletions tests/system/general/test_08_Primitives3D.py
Original file line number Diff line number Diff line change
Expand Up @@ -2071,3 +2071,9 @@ def test_95_update_geometry_property(self):
self.aedtapp.modeler.update_geometry_property([box2.name], "part_coordinate_system", cs.name)
assert box2.part_coordinate_system == cs.name
assert box1.part_coordinate_system == "Global"

self.aedtapp.modeler.update_geometry_property([box1.name], "material_appearance", True)
assert box1.material_appearance

self.aedtapp.modeler.update_geometry_property([box1.name, box2.name], "material_appearance", True)
assert box2.material_appearance

0 comments on commit 2805e17

Please sign in to comment.