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
Save and release AEDT#
Save and release AEDT.
[12]:
toolkit.release_aedt(True, True)
INFO - AEDT is released.
[12]:
True