From 2199664ab93c528d61ebf63696a640f939c7f183 Mon Sep 17 00:00:00 2001 From: Massimo Capodiferro <77293250+maxcapodi78@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:29:01 +0200 Subject: [PATCH] Added support for all nets and all layers in create_fieldplot_layers_nets method (#4520) Co-authored-by: maxcapodi78 --- _unittest/test_41_3dlayout_modeler.py | 14 +++++++++++++- pyaedt/modules/PostProcessor.py | 19 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/_unittest/test_41_3dlayout_modeler.py b/_unittest/test_41_3dlayout_modeler.py index e4e01b134d1..8110b697e7e 100644 --- a/_unittest/test_41_3dlayout_modeler.py +++ b/_unittest/test_41_3dlayout_modeler.py @@ -660,12 +660,24 @@ def test_42_post_processing(self, add_app): intrinsics={"Time": "1ms"}, plot_name="Test_Layers", ) + assert test_post1.post.create_fieldplot_layers_nets( + [["TOP"], ["PWR", "V3P3_S5"]], + "Mag_Volume_Force_Density", + intrinsics={"Time": "1ms"}, + plot_name="Test_Layers2", + ) + assert test_post1.post.create_fieldplot_layers_nets( + [["no-layer", "GND"]], + "Mag_Volume_Force_Density", + intrinsics={"Time": "1ms"}, + plot_name="Test_Layers3", + ) test_post2 = add_app(project_name=test_post1.project_name, just_open=True) assert test_post2.post.create_fieldplot_layers_nets( [["TOP", "GND", "V3P3_S5"], ["PWR", "V3P3_S5"]], "Mag_E", intrinsics={"Freq": "1GHz", "Phase": "0deg"}, - plot_name="Test_Layers", + plot_name="Test_Layers4", ) self.aedtapp.close_project(test_post2.project_name) diff --git a/pyaedt/modules/PostProcessor.py b/pyaedt/modules/PostProcessor.py index bacd04d5d46..871800adfd4 100644 --- a/pyaedt/modules/PostProcessor.py +++ b/pyaedt/modules/PostProcessor.py @@ -3307,7 +3307,9 @@ def create_fieldplot_layers_nets( ---------- layers_nets : list List of layers and nets to plot. For example: - ``[["Layer1", "GND", "PWR"], ["Layer2", "VCC"], ...]``. + ``[["Layer1", "GND", "PWR"], ["Layer2", "VCC"], ...]``. If ``"no-layer"`` is provided as first argument, + all layers will be considered. If ``"no-net"`` is provided or the list contains only layer name, all the + nets will be automatically considered. quantity : str Name of the quantity to plot. setup : str, optional @@ -3333,6 +3335,21 @@ def create_fieldplot_layers_nets( >>> oModule.CreateFieldPlot """ + new_list = [] + for layer in layers_nets: + if "no-layer" in layer[0]: + for v in self._app.modeler.user_defined_components.values(): + new_list.extend( + [[i] + layer[1:] for i in v.layout_component.edb_object.stackup.stackup_layers.keys()] + ) + else: + new_list.append(layer) + layers_nets = new_list + for layer in layers_nets: + if len(layer) == 1 or "no-net" in layer[1]: + for v in self._app.modeler.user_defined_components.values(): + if layer[0] in v.layout_component.edb_object.stackup.stackup_layers: + layer.extend(list(v.layout_component.edb_object.nets.nets.keys())) if not ( "APhi" in self.post_solution_type and settings.aedt_version >= "2023.2" ) and not self._app.design_type in ["HFSS", "HFSS 3D Layout Design"]: