Skip to content

Commit 5de2aae

Browse files
Move Faces method. From an specific object move selected faces (#1067)
* Move Faces method. From an specific object move selected faces * Method simplified * Applying Massimo's changes * Update pyaedt/modeler/Modeler.py Co-authored-by: Maxime Rey <[email protected]> Co-authored-by: Maxime Rey <[email protected]>
1 parent 0efa905 commit 5de2aae

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

_unittest/test_02_3D_modeler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ def test_09_thicken_sheet(self):
118118
assert status
119119
status = self.aedtapp.modeler.automatic_thicken_sheets(id6, 3, False)
120120
assert status
121+
status = self.aedtapp.modeler.move_face([id6.faces[0].id, id6.faces[2]])
122+
assert status
123+
status = self.aedtapp.modeler.move_face([id6.faces[0].id, id5.faces[0]])
124+
assert status
121125

122126
@pyaedt_unittest_check_desktop_error
123127
def test_11_split(self):

pyaedt/modeler/Modeler.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4325,6 +4325,68 @@ def automatic_thicken_sheets(self, inputlist, value, internalExtr=True, internal
43254325
# self.modeler_oproject.ClearMessages()
43264326
return True
43274327

4328+
@pyaedt_function_handler()
4329+
def move_face(self, faces, offset=1.0):
4330+
"""Move an input face or a list of input faces of a specific object.
4331+
4332+
This method moves a face or a list of faces which belong to the same solid.
4333+
4334+
Parameters
4335+
----------
4336+
faces : list
4337+
List of Face ID or List of :class:`pyaedt.modeler.Object3d.FacePrimitive` object or mixed.
4338+
offset : float, optional
4339+
Offset to apply in model units. The default is ``1.0``.
4340+
4341+
Returns
4342+
-------
4343+
bool
4344+
``True`` when successful, ``False`` when failed.
4345+
4346+
References
4347+
----------
4348+
4349+
>>> oEditor.MoveFaces
4350+
4351+
"""
4352+
4353+
face_selection = self.convert_to_selections(faces, True)
4354+
selection = {}
4355+
for f in face_selection:
4356+
if self.oeditor.GetObjectNameByFaceID(f) in selection:
4357+
selection[self.oeditor.GetObjectNameByFaceID(f)].append(f)
4358+
else:
4359+
selection[self.oeditor.GetObjectNameByFaceID(f)] = [f]
4360+
4361+
arg1 = [
4362+
"NAME:Selections",
4363+
"Selections:=",
4364+
self.convert_to_selections(list(selection.keys()), False),
4365+
"NewPartsModelFlag:=",
4366+
"Model",
4367+
]
4368+
arg2 = ["NAME:Parameters"]
4369+
for el in list(selection.keys()):
4370+
arg2.append(
4371+
[
4372+
"NAME:MoveFacesParameters",
4373+
"MoveAlongNormalFlag:=",
4374+
True,
4375+
"OffsetDistance:=",
4376+
str(offset) + self.model_units,
4377+
"MoveVectorX:=",
4378+
"0mm",
4379+
"MoveVectorY:=",
4380+
"0mm",
4381+
"MoveVectorZ:=",
4382+
"0mm",
4383+
"FacesToMove:=",
4384+
selection[el],
4385+
]
4386+
)
4387+
self._oeditor.MoveFaces(arg1, arg2)
4388+
return True
4389+
43284390
def __get__(self, instance, owner):
43294391
self._app = instance
43304392
return self

0 commit comments

Comments
 (0)