Skip to content

Commit 36526e7

Browse files
authored
Fix Create region method (#4461)
Co-authored-by: maxcapodi78 <Shark78>
1 parent 225652e commit 36526e7

File tree

3 files changed

+42
-18
lines changed

3 files changed

+42
-18
lines changed

examples/02-HFSS/Probe_Fed_Patch.py

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
solution_type="Terminal",
6565
designname="patch",
6666
non_graphical=non_graphical,
67+
new_desktop_session=True,
6768
specified_version=aedt_version)
6869

6970
hfss.modeler.model_units = length_units

pyaedt/modeler/cad/Primitives.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -6233,10 +6233,8 @@ def create_region(self, pad_value=300, pad_type="Percentage Offset", region_name
62336233
is_percentage = True
62346234
if kwarg.get("pad_percent", False):
62356235
pad_percent = kwarg["pad_percent"]
6236-
else:
6237-
pad_percent = 300
6238-
pad_value = pad_percent
6239-
if isinstance(pad_value, list):
6236+
pad_value = pad_percent
6237+
if isinstance(pad_value, list) and len(pad_value) < 6:
62406238
pad_value = [pad_value[i // 2 + 3 * (i % 2)] for i in range(6)]
62416239
pad_type = ["Absolute Offset", "Percentage Offset"][int(is_percentage)]
62426240

pyaedt/modeler/cad/Primitives2D.py

+39-14
Original file line numberDiff line numberDiff line change
@@ -281,17 +281,26 @@ def create_regular_polygon(
281281
return self._create_object(new_object_name, **kwargs)
282282

283283
@pyaedt_function_handler()
284-
def create_region(self, pad_percent=300, is_percentage=True):
284+
def create_region(self, pad_value=300, pad_type="Percentage Offset", region_name="Region", **kwarg):
285285
"""Create an air region.
286286
287287
Parameters
288288
----------
289-
pad_percent : float, str, list of floats or list of str, optional
290-
Same padding is applied if not a list. The default is ``300``.
291-
If a list of floats or strings, interpret as adding ``["+X", "+Y", "-X", "-Y"]`` for XY geometry mode,
292-
and ``["+R", "+Z", "-Z"]`` for RZ geometry mode.
293-
is_percentage : bool, optional
294-
Whether the region definition is a percentage or absolute value. The default is `True``.
289+
pad_value : float, str, list of floats or list of str, optional
290+
Padding values to apply. If a list is not provided, the same
291+
value is applied to all padding directions. If a list of floats
292+
or strings is provided, the values are
293+
interpreted as padding for ``["+X", "-X", "+Y", "-Y", "+Z", "-Z"]``.
294+
pad_type : str, optional
295+
Padding definition. The default is ``"Percentage Offset"``.
296+
Options are ``"Absolute Offset"``,
297+
``"Absolute Position"``, ``"Percentage Offset"``, and
298+
``"Transverse Percentage Offset"``. When using a list,
299+
different padding types can be provided for different
300+
directions.
301+
region_name : str, optional
302+
Region name. The default is ``None``, in which case the name
303+
is generated automatically.
295304
296305
Returns
297306
-------
@@ -303,19 +312,35 @@ def create_region(self, pad_percent=300, is_percentage=True):
303312
304313
>>> oEditor.CreateRegion
305314
"""
306-
if not isinstance(pad_percent, list):
307-
pad_percent = [pad_percent] * 4
315+
# backward compatibility
316+
if kwarg:
317+
if "is_percentage" in kwarg.keys():
318+
is_percentage = kwarg["is_percentage"]
319+
else:
320+
is_percentage = True
321+
if kwarg.get("pad_percent", False):
322+
pad_percent = kwarg["pad_percent"]
323+
pad_value = pad_percent
324+
if isinstance(pad_value, list) and len(pad_value) < 6:
325+
pad_value = [pad_value[i // 2 + 3 * (i % 2)] for i in range(6)]
326+
pad_type = ["Absolute Offset", "Percentage Offset"][int(is_percentage)]
327+
328+
if isinstance(pad_type, bool):
329+
pad_type = ["Absolute Offset", "Percentage Offset"][int(pad_type)]
330+
331+
if not isinstance(pad_value, list):
332+
pad_value = [pad_value] * 4
308333
if self._app.design_type == "2D Extractor" or (
309334
self._app.design_type == "Maxwell 2D" and self._app.odesign.GetGeometryMode() == "XY"
310335
):
311-
if len(pad_percent) != 4:
336+
if len(pad_value) != 4:
312337
self.logger.error("Wrong padding list provided. Four values have to be provided.")
313338
return False
314-
pad_percent = [pad_percent[0], pad_percent[2], pad_percent[1], pad_percent[3], 0, 0]
339+
pad_value = [pad_value[0], pad_value[2], pad_value[1], pad_value[3], 0, 0]
315340
else:
316-
if len(pad_percent) < 3:
341+
if len(pad_value) < 3:
317342
self.logger.error("Wrong padding list provided. Three values have to be provided for RZ geometry.")
318343
return False
319-
pad_percent = [pad_percent[0], 0, 0, 0, pad_percent[1], pad_percent[2]]
344+
pad_value = [pad_value[0], 0, 0, 0, pad_value[1], pad_value[2]]
320345

321-
return self._create_region(pad_percent, ["Absolute Offset", "Percentage Offset"][int(is_percentage)])
346+
return self._create_region(pad_value, pad_type, region_name, region_type="Region")

0 commit comments

Comments
 (0)