Skip to content

Commit 141bf22

Browse files
Merge branch 'main' into feat/toolkit_installer
2 parents 10fd91c + 61f1bf2 commit 141bf22

File tree

4 files changed

+67
-20
lines changed

4 files changed

+67
-20
lines changed

_unittest/test_09_Primitives2D.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,14 @@ def test_06_create_region(self):
7474
if self.aedtapp.modeler["Region"]:
7575
self.aedtapp.modeler.delete("Region")
7676
assert "Region" not in self.aedtapp.modeler.object_names
77-
assert self.aedtapp.modeler.create_region([20, "50", "100mm", 20], False)
77+
assert self.aedtapp.modeler.create_region([20, "50", "100mm", 20], "Absolute Offset")
7878
self.aedtapp.modeler["Region"].delete()
79-
region = self.aedtapp.modeler.create_region("100", True)
79+
region = self.aedtapp.modeler.create_region("100", "Percentage Offset")
8080
region.delete()
81+
# test backward compatibility
82+
region = self.aedtapp.modeler.create_region(pad_percent=[100, 10, 5, 2], pad_type=True)
83+
region.delete()
84+
#
8185
region = self.aedtapp.modeler.create_region([100, 100, 100, 100])
8286
assert region.solve_inside
8387
assert region.model

pyaedt/generic/configurations.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,7 +1673,7 @@ def _export_objects_properties(self, dict_out):
16731673
def _export_mesh_operations(self, dict_out):
16741674
dict_out["mesh"] = {}
16751675
args = ["NAME:Settings"]
1676-
args += self._app.mesh.global_mesh_region.settings.parse_settings()
1676+
args += self._app.mesh.global_mesh_region.settings.parse_settings_as_args()
16771677
mop = OrderedDict({})
16781678
_arg2dict(args, mop)
16791679
dict_out["mesh"]["Settings"] = mop["Settings"]
@@ -1683,7 +1683,7 @@ def _export_mesh_operations(self, dict_out):
16831683
args = ["NAME:Settings"]
16841684
else:
16851685
args = ["NAME:" + mesh.name, "Enable:=", mesh.Enable]
1686-
args += mesh.settings.parse_settings()
1686+
args += mesh.settings.parse_settings_as_args()
16871687
args += getattr(mesh, "_parse_assignment_value")()
16881688
args += ["UserSpecifiedSettings:=", not mesh.manual_settings]
16891689
mop = OrderedDict({})

pyaedt/modeler/cad/Primitives2D.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,8 @@ def create_region(self, pad_value=300, pad_type="Percentage Offset", name="Regio
287287
Padding values to apply. If a list is not provided, the same
288288
value is applied to all padding directions. If a list of floats
289289
or strings is provided, the values are
290-
interpreted as padding for ``["+X", "-X", "+Y", "-Y", "+Z", "-Z"]``.
290+
interpreted as padding for ``["+X", "-X", "+Y", "-Y"]`` for XY geometry mode,
291+
and ``["+R", "+Z", "-Z"]`` for RZ geometry mode.
291292
pad_type : str, optional
292293
Padding definition. The default is ``"Percentage Offset"``.
293294
Options are ``"Absolute Offset"``,
@@ -318,24 +319,26 @@ def create_region(self, pad_value=300, pad_type="Percentage Offset", name="Regio
318319
if kwarg.get("pad_percent", False):
319320
pad_percent = kwarg["pad_percent"]
320321
pad_value = pad_percent
321-
if isinstance(pad_value, list) and len(pad_value) < 6:
322-
pad_value = [pad_value[i // 2 + 3 * (i % 2)] for i in range(6)]
322+
if isinstance(pad_value, list) and len(pad_value) == 4:
323+
pad_value = [pad_value[i // 2 + 2 * (i % 2)] for i in range(4)]
323324
pad_type = ["Absolute Offset", "Percentage Offset"][int(is_percentage)]
324325

325326
if isinstance(pad_type, bool):
326327
pad_type = ["Absolute Offset", "Percentage Offset"][int(pad_type)]
327328

328-
if not isinstance(pad_value, list):
329-
pad_value = [pad_value] * 4
330329
if self._app.design_type == "2D Extractor" or (
331330
self._app.design_type == "Maxwell 2D" and self._app.odesign.GetGeometryMode() == "XY"
332331
):
332+
if not isinstance(pad_value, list):
333+
pad_value = [pad_value] * 4
333334
if len(pad_value) != 4:
334335
self.logger.error("Wrong padding list provided. Four values have to be provided.")
335336
return False
336337
pad_value = [pad_value[0], pad_value[2], pad_value[1], pad_value[3], 0, 0]
337338
else:
338-
if len(pad_value) < 3:
339+
if not isinstance(pad_value, list):
340+
pad_value = [pad_value] * 3
341+
if len(pad_value) != 3:
339342
self.logger.error("Wrong padding list provided. Three values have to be provided for RZ geometry.")
340343
return False
341344
pad_value = [pad_value[0], 0, 0, 0, pad_value[1], pad_value[2]]

pyaedt/modules/MeshIcepak.py

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ def name(self):
274274
@name.setter
275275
def name(self, value):
276276
try:
277-
self._app.modeler.objects_by_name[self._name].name = value
277+
if self._app.modeler.objects_by_name[self._name].name != value:
278+
self._app.modeler.objects_by_name[self._name].name = value
278279
except KeyError:
279280
if self._app.modeler.objects_by_name[value].history().command == "CreateSubRegion":
280281
self._name = value
@@ -408,6 +409,13 @@ def parts(self, parts):
408409

409410

410411
class MeshSettings(object):
412+
"""
413+
Class for managing mesh settings.
414+
415+
It can be used like a dictionary. Available keys change according
416+
to the type of settings chosen (manual or automatic).
417+
"""
418+
411419
_automatic_mesh_settings = {"MeshRegionResolution": 3} # min: 1, max: 5
412420
_common_mesh_settings = {
413421
"ProximitySizeFunction": True,
@@ -464,14 +472,14 @@ def _dim_arg(self, value):
464472
else:
465473
return _dim_arg(value, getattr(self._mesh_class, "_model_units"))
466474

467-
def parse_settings(self):
475+
def parse_settings_as_args(self):
468476
"""
469477
Parse mesh region settings.
470478
471479
Returns
472480
-------
473-
dict
474-
List of strings containing all the parts that must be included in the subregion.
481+
List
482+
Arguments to pass to native APIs.
475483
"""
476484
out = []
477485
for k, v in self._instance_settings.items():
@@ -481,6 +489,22 @@ def parse_settings(self):
481489
out.append(v)
482490
return out
483491

492+
def parse_settings_as_dictionary(self):
493+
"""
494+
Parse mesh region settings.
495+
496+
Returns
497+
-------
498+
dict
499+
Settings of the subregion.
500+
"""
501+
out = {}
502+
for k, v in self._instance_settings.items():
503+
if k in ["MaxElementSizeX", "MaxElementSizeY", "MaxElementSizeZ", "MinGapX", "MinGapY", "MinGapZ"]:
504+
v = self._dim_arg(v)
505+
out[k] = v
506+
return out
507+
484508
def _key_in_dict(self, key):
485509
if self._mesh_class.manual_settings:
486510
ref_dict = self._manual_mesh_settings
@@ -489,13 +513,29 @@ def _key_in_dict(self, key):
489513
return key in ref_dict or key in self._common_mesh_settings
490514

491515
def keys(self):
492-
return self.parse_settings().keys()
516+
"""
517+
Get mesh region settings keys.
518+
519+
Returns
520+
-------
521+
dict_keys
522+
Available settings keys.
523+
"""
524+
return self.parse_settings_as_dictionary().keys()
493525

494526
def values(self):
495-
return self.parse_settings().values()
527+
"""
528+
Get mesh region settings values.
529+
530+
Returns
531+
-------
532+
dict_values
533+
Settings values.
534+
"""
535+
return self.parse_settings_as_dictionary().values()
496536

497537
def __repr__(self):
498-
return repr(self.parse_settings())
538+
return repr(self.parse_settings_as_dictionary())
499539

500540
def __getitem__(self, key):
501541
if key == "Level":
@@ -628,7 +668,7 @@ def update(self):
628668
>>> oModule.EditGlobalMeshRegion
629669
"""
630670
args = ["NAME:Settings"]
631-
args += self.settings.parse_settings()
671+
args += self.settings.parse_settings_as_args()
632672
args += ["UserSpecifiedSettings:=", self.manual_settings]
633673
try:
634674
self._app.omeshmodule.EditGlobalMeshRegion(args)
@@ -754,7 +794,7 @@ def update(self):
754794
>>> oModule.EditMeshRegion
755795
"""
756796
args = ["NAME:" + self.name, "Enable:=", self.enable]
757-
args += self.settings.parse_settings()
797+
args += self.settings.parse_settings_as_args()
758798
args += self._parse_assignment_value()
759799
args += ["UserSpecifiedSettings:=", self.manual_settings]
760800
try:
@@ -854,7 +894,7 @@ def create(self):
854894
self._app.logger.error("Cannot create a new mesh region with this Name")
855895
return False
856896
args = ["NAME:" + self.name, "Enable:=", self.enable]
857-
args += self.settings.parse_settings()
897+
args += self.settings.parse_settings_as_args()
858898
args += ["UserSpecifiedSettings:=", not self.manual_settings]
859899
args += self._parse_assignment_value()
860900
self._app.omeshmodule.AssignMeshRegion(args)

0 commit comments

Comments
 (0)