2222# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2323# SOFTWARE.
2424
25+ import warnings
26+
2527from ansys .aedt .core import settings
2628import ansys .aedt .core .filtersolutions_core
2729from ansys .aedt .core .filtersolutions_core .attributes import Attributes
4547
4648
4749class FilterDesignBase :
48- """Provides the `FilterSolutions` main parameters applicable for all design types.
49- This class has access to ideal filter attributes and calculated output parameters.
50- """
50+ """Provides the `FilterSolutions` main parameters applicable for all design types."""
51+
52+ _active_design = None
5153
5254 def __init__ (self , version = None ):
55+ if FilterDesignBase ._active_design :
56+ warnings .warn (
57+ "FilterSolutions API currently supports only one design at a time. \n "
58+ "Opening a new design will overwrite the existing design with default values." ,
59+ UserWarning ,
60+ )
61+ FilterDesignBase ._active_design .close ()
62+ FilterDesignBase ._active_design = self
5363 self .version = version if version else settings .aedt_version
5464 ansys .aedt .core .filtersolutions_core ._dll_interface (version )
5565 self .attributes = Attributes ()
@@ -59,6 +69,33 @@ def __init__(self, version=None):
5969 self .transmission_zeros_bandwidth = TransmissionZeros (TableFormat .BANDWIDTH )
6070 self .export_to_aedt = ExportToAedt ()
6171
72+ def close (self ):
73+ """Closes the current design and clears the active design."""
74+ if FilterDesignBase ._active_design == self :
75+ print (f"Closing design: { self } " )
76+ self ._cleanup_resources ()
77+ FilterDesignBase ._active_design = None
78+
79+ def _cleanup_resources (self ):
80+ """Perform cleanup operations for the design."""
81+ print ("Cleaning up resources..." )
82+ self .attributes = None
83+ self .ideal_response = None
84+ self .graph_setup = None
85+ self .transmission_zeros_ratio = None
86+ self .transmission_zeros_bandwidth = None
87+ self .export_to_aedt = None
88+ self .source_impedance_table = None
89+ self .load_impedance_table = None
90+ self .multiple_bands_table = None
91+ self .optimization_goals_table = None
92+ self .topology = None
93+ self .parasitics = None
94+ self .leads_and_nodes = None
95+ self .substrate = None
96+ self .geometry = None
97+ self .radial = None
98+
6299
63100class LumpedDesign (FilterDesignBase ):
64101 """Provides the `FilterSolutions` application interface for lumped filter designs.
0 commit comments