From 2805e17ca64fe58f16ce012c0f54c8e7ffcb2471 Mon Sep 17 00:00:00 2001 From: Samuel Lopez <85613111+Samuelopez-ansys@users.noreply.github.com> Date: Wed, 13 Nov 2024 17:32:22 +0100 Subject: [PATCH 1/2] FEAT: Material appearance (#5427) Co-authored-by: atlanswer Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/ansys/aedt/core/modeler/cad/object_3d.py | 40 +++++++++++++++++++ src/ansys/aedt/core/modeler/cad/primitives.py | 6 ++- tests/system/general/test_07_Object3D.py | 2 +- tests/system/general/test_08_Primitives3D.py | 6 +++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/ansys/aedt/core/modeler/cad/object_3d.py b/src/ansys/aedt/core/modeler/cad/object_3d.py index d5e53ff5d32..364d4b56138 100644 --- a/src/ansys/aedt/core/modeler/cad/object_3d.py +++ b/src/ansys/aedt/core/modeler/cad/object_3d.py @@ -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 @@ -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. diff --git a/src/ansys/aedt/core/modeler/cad/primitives.py b/src/ansys/aedt/core/modeler/cad/primitives.py index a4198684c54..48be85d11f3 100644 --- a/src/ansys/aedt/core/modeler/cad/primitives.py +++ b/src/ansys/aedt/core/modeler/cad/primitives.py @@ -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 diff --git a/tests/system/general/test_07_Object3D.py b/tests/system/general/test_07_Object3D.py index 3d31f82d27f..f40858e3a91 100644 --- a/tests/system/general/test_07_Object3D.py +++ b/tests/system/general/test_07_Object3D.py @@ -241,6 +241,7 @@ 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 @@ -248,7 +249,6 @@ def test_07_object_clone_and_get_properties(self): 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" diff --git a/tests/system/general/test_08_Primitives3D.py b/tests/system/general/test_08_Primitives3D.py index baff07f0c44..9fef8369acc 100644 --- a/tests/system/general/test_08_Primitives3D.py +++ b/tests/system/general/test_08_Primitives3D.py @@ -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 From aa3f648560c4c1e6739a6371792c093a58d8187e Mon Sep 17 00:00:00 2001 From: Ramin Aghajafari <153928265+ramin4667@users.noreply.github.com> Date: Thu, 14 Nov 2024 02:11:53 -0500 Subject: [PATCH 2/2] FIX: FilterSolutions Sphinx Update (#5425) --- doc/source/API/Application.rst | 1 - doc/source/API/FilterSolutions.rst | 41 ++++++++++++++++++++++++++ doc/source/API/index.rst | 2 +- src/ansys/aedt/core/filtersolutions.py | 2 +- 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 doc/source/API/FilterSolutions.rst diff --git a/doc/source/API/Application.rst b/doc/source/API/Application.rst index d7ad0ed6724..74951455342 100644 --- a/doc/source/API/Application.rst +++ b/doc/source/API/Application.rst @@ -27,7 +27,6 @@ Available PyAEDT apps are: ansys.aedt.core.maxwellcircuit.MaxwellCircuit ansys.aedt.core.emit.Emit ansys.aedt.core.twinbuilder.TwinBuilder - ansys.aedt.core.filtersolutions.FilterSolutions All other classes and methods are inherited into the app class. diff --git a/doc/source/API/FilterSolutions.rst b/doc/source/API/FilterSolutions.rst new file mode 100644 index 00000000000..d8b84f5a181 --- /dev/null +++ b/doc/source/API/FilterSolutions.rst @@ -0,0 +1,41 @@ +Filter solutions +========================== +The ``FilterSolutions`` module contains all classes needed to create and edit an object including. + + +* ``Attributes`` to defines attributes and parameters of filters. +* ``DllInterface`` to interface with the FilterSolutions DLL. +* ``GraphSetup`` to define the frequency and time limits of the exported responses. +* ``IdealResponse`` to return the data for available ideal filter responses. +* ``MultipleBandsTable`` to manipulate access to the entries of multiple bands table. +* ``TransmissionZeros`` to manipulates access to ratio and bandwidth entries in the transmission zeros table. +* ``LumpedTopology`` to define attributes and parameters of filters implemented with lumped topology. +* ``LumpedParasitics`` to define attributes of the lumped element parasitic values. +* ``LumpedNodesandLeads`` to define attributes of the lumped node capacitors and lead inductors. +* ``LumpedTerminationImpedance`` to manipulate access to the entries of source and load complex impedance table. +* ``ExportToAedt`` to define attributes and parameters of the export page for exporting to AEDT. +* ``OptimizationGoalsTable`` to manipulate access to the entries of the optimization goals table. + + + +They are accessible through: + + +.. currentmodule:: ansys.aedt.core.filtersolutions_core + +.. autosummary:: + :toctree: _autosummary + :nosignatures: + + attributes.Attributes + dll_interface.DllInterface + graph_setup.GraphSetup + ideal_response.IdealResponse + multiple_bands_table.MultipleBandsTable + transmission_zeros.TransmissionZeros + lumped_topology.LumpedTopology + lumped_parasitics.LumpedParasitics + lumped_nodes_and_leads.LumpedNodesandLeads + lumped_termination_impedance_table.LumpedTerminationImpedance + export_to_aedt.ExportToAedt + optimization_goals_table.OptimizationGoalsTable diff --git a/doc/source/API/index.rst b/doc/source/API/index.rst index 0d7dbde7ad4..c97cddcdc19 100644 --- a/doc/source/API/index.rst +++ b/doc/source/API/index.rst @@ -98,7 +98,7 @@ Example with ``Desktop`` class implicit initialization: Configuration SetupTemplates CableModeling - + FilterSolutions diff --git a/src/ansys/aedt/core/filtersolutions.py b/src/ansys/aedt/core/filtersolutions.py index 4b65297c319..df733dc0fae 100644 --- a/src/ansys/aedt/core/filtersolutions.py +++ b/src/ansys/aedt/core/filtersolutions.py @@ -40,7 +40,7 @@ class FilterSolutions: - """Provides the ``FilterSolutions`` application interface. + """Provides the FilterSolutions application interface. This class has access to ideal filter attributes and calculated output parameters.