AEDT connect session example#

This example shows how to use the Common AEDT API to connect to an existing AEDT session, create a HFSS design and create a waveguide.

Perform required imports#

Perform the required imports.

[1]:
import os
import sys
from ansys.aedt.toolkits.common.backend.api import AEDTCommon
import ansys.aedt.core

Initialize toolkit#

Initialize the toolkit.

[2]:
toolkit = AEDTCommon()

Get toolkit properties#

Get the toolkit properties, which contain the project information.

[3]:
properties_from_backend = toolkit.get_properties()
[4]:
# ## Initialize AEDT
#
# Initialize AEDT using PyAEDT and then release it.
ansys.aedt.core.settings.enable_logger = False
app = ansys.aedt.core.Desktop(version=properties_from_backend["aedt_version"],
                              non_graphical=properties_from_backend["non_graphical"])
app.release_desktop(close_projects=False, close_desktop=False)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
File C:\actions-runner\_work\pyaedt-toolkits-common\pyaedt-toolkits-common\.venv\Lib\site-packages\ansys\aedt\core\generic\general_methods.py:285, in deprecate_argument.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
    284 try:
--> 285     bound_args = sig.bind_partial(*args, **kwargs)
    286     bound_args.apply_defaults()

File C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\inspect.py:3287, in Signature.bind_partial(self, *args, **kwargs)
   3283 """Get a BoundArguments object, that partially maps the
   3284 passed `args` and `kwargs` to the function's signature.
   3285 Raises `TypeError` if the passed arguments can not be bound.
   3286 """
-> 3287 return self._bind(args, kwargs, partial=True)

File C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\inspect.py:3269, in Signature._bind(self, args, kwargs, partial)
   3268     else:
-> 3269         raise TypeError(
   3270             'got an unexpected keyword argument {arg!r}'.format(
   3271                 arg=next(iter(kwargs))))
   3273 return self._bound_arguments_cls(self, arguments)

TypeError: got an unexpected keyword argument 'close_desktop'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
Cell In[4], line 7
      4 ansys.aedt.core.settings.enable_logger = False
      5 app = ansys.aedt.core.Desktop(version=properties_from_backend["aedt_version"],
      6                               non_graphical=properties_from_backend["non_graphical"])
----> 7 app.release_desktop(close_projects=False, close_desktop=False)

File C:\actions-runner\_work\pyaedt-toolkits-common\pyaedt-toolkits-common\.venv\Lib\site-packages\ansys\aedt\core\generic\general_methods.py:246, in _function_handler_wrapper.<locals>.wrapper(*args, **kwargs)
    244     msg = msg.capitalize()
    245 _exception(sys.exc_info(), user_function, args, kwargs, msg)
--> 246 return raise_exception_or_return_false(e)

File C:\actions-runner\_work\pyaedt-toolkits-common\pyaedt-toolkits-common\.venv\Lib\site-packages\ansys\aedt\core\generic\general_methods.py:208, in raise_exception_or_return_false(e)
    205         for v in list(_desktop_sessions.values())[:]:
    206             v.release_desktop(close_projects=v.close_on_exit, close_on_exit=v.close_on_exit)
--> 208     raise e
    209 elif "__init__" in str(e):  # pragma: no cover
    210     return

File C:\actions-runner\_work\pyaedt-toolkits-common\pyaedt-toolkits-common\.venv\Lib\site-packages\ansys\aedt\core\generic\general_methods.py:221, in _function_handler_wrapper.<locals>.wrapper(*args, **kwargs)
    219 try:
    220     settings.time_tick = time.time()
--> 221     out = user_function(*args, **kwargs)
    222     _log_method(user_function, args, kwargs)
    223     return out

File C:\actions-runner\_work\pyaedt-toolkits-common\pyaedt-toolkits-common\.venv\Lib\site-packages\ansys\aedt\core\generic\general_methods.py:289, in deprecate_argument.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
    286     bound_args.apply_defaults()
    287 except TypeError:
    288     # In case of incomplete binding (e.g. missing required args), skip
--> 289     return func(*args, **kwargs)
    291 if arg_name in bound_args.arguments:
    292     msg_version = ""

TypeError: Desktop.release_desktop() got an unexpected keyword argument 'close_desktop'

Get AEDT sessions#

Get AEDT sessions and select the first one.

[5]:
sessions = toolkit.aedt_sessions()
first_key, first_value = next(iter(sessions.items()))
if first_value == -1:
    use_grpc = False
    selected_process = first_key
else:
    use_grpc = True
    selected_process = first_value
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
Cell In[5], line 2
      1 sessions = toolkit.aedt_sessions()
----> 2 first_key, first_value = next(iter(sessions.items()))
      3 if first_value == -1:
      4     use_grpc = False

StopIteration:

Set properties#

Specify the AEDT session selection.

[6]:
new_properties = {"selected_process": selected_process, "use_grpc": use_grpc}
flag, msg = toolkit.set_properties(new_properties)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[6], line 1
----> 1 new_properties = {"selected_process": selected_process, "use_grpc": use_grpc}
      2 flag, msg = toolkit.set_properties(new_properties)

NameError: name 'selected_process' is not defined

Initialize AEDT#

Launch a new AEDT session in a thread.

[7]:
thread_msg = toolkit.launch_thread(toolkit.launch_aedt)

Wait for the toolkit thread to be idle#

Wait for the toolkit thread to be idle and ready to accept a new task.

[8]:
idle = toolkit.wait_to_be_idle()
if not idle:
    print("AEDT not initialized.")
    sys.exit()
INFO - AEDT is released.

Connect design#

Connect or create a new design.

[9]:
toolkit.connect_design("HFSS")
INFO - Updating internal properties.
INFO - Toolkit is connected to AEDT design.
[9]:
True

Get toolkit properties#

Get the toolkit properties, which contain the project information.

[10]:
new_properties = toolkit.get_properties()

Create a waveguide#

Create a waveguide in the design.

[11]:
wg = toolkit.aedtapp.modeler.create_waveguide([0, 0, 0], 1)
model = toolkit.aedtapp.plot(show=True)
C:\actions-runner\_work\pyaedt-toolkits-common\pyaedt-toolkits-common\.venv\Lib\site-packages\ansys\aedt\core\visualization\plot\pyvista.py:1402: UserWarning: Failed to use notebook backend:

Please install `nest_asyncio2` to automagically launch the trame server without await. Or, to avoid `nest_asyncio2` run:

from pyvista.trame.jupyter import launch_server
await launch_server().ready

Falling back to a static output.
  self.pv.show(auto_close=False, jupyter_backend=self.jupyter_backend)  # pragma: no cover
../../_images/examples_aedt_common_api_aedt_connect_session_21_1.png

Save and release AEDT#

Save and release AEDT.

[12]:
toolkit.release_aedt(True, True)
INFO - AEDT is released.
[12]:
True