Skip to content

Commit 2e3fecd

Browse files
committed
Named selections are now preserved by the "set axes from curvature" tool.
1 parent 5c7841a commit 2e3fecd

File tree

4 files changed

+54
-7
lines changed

4 files changed

+54
-7
lines changed

MeshLib/FEMesh.cpp

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3012,7 +3012,7 @@ int FSMesh::FindFaceIndex(FSFace& face)
30123012
return -1;
30133013
}
30143014

3015-
void FSMesh::CopyFENodeSets(FSMesh* pm)
3015+
void FSMesh::MapFENodeSets(FSMesh* pm)
30163016
{
30173017
int imin = -1;
30183018
int imax = -1;
@@ -3068,7 +3068,7 @@ void FSMesh::CopyFENodeSets(FSMesh* pm)
30683068
}
30693069
}
30703070

3071-
void FSMesh::CopyFEElemSets(FSMesh* pm)
3071+
void FSMesh::MapFEElemSets(FSMesh* pm)
30723072
{
30733073
int imin = -1;
30743074
int imax = -1;
@@ -3124,7 +3124,7 @@ void FSMesh::CopyFEElemSets(FSMesh* pm)
31243124
}
31253125
}
31263126

3127-
void FSMesh::CopyFESurfaces(FSMesh* pm)
3127+
void FSMesh::MapFESurfaces(FSMesh* pm)
31283128
{
31293129
int imin = -1;
31303130
int imax = -1;
@@ -3190,3 +3190,42 @@ void FSMesh::CopyFESurfaces(FSMesh* pm)
31903190
}
31913191
}
31923192
}
3193+
3194+
void FSMesh::CopyFENodeSets(FSMesh* pm)
3195+
{
3196+
for (int i = 0; i < pm->FENodeSets(); ++i)
3197+
{
3198+
FSNodeSet& nset = *pm->GetFENodeSet(i);
3199+
std::vector<int> nodeList = nset.CopyItems();
3200+
FSNodeSet* newset = new FSNodeSet(this);
3201+
newset->add(nodeList);
3202+
newset->SetName(nset.GetName());
3203+
AddFENodeSet(newset);
3204+
}
3205+
}
3206+
3207+
void FSMesh::CopyFEElemSets(FSMesh* pm)
3208+
{
3209+
for (int i = 0; i < pm->FEElemSets(); ++i)
3210+
{
3211+
FSElemSet& eset = *pm->GetFEElemSet(i);
3212+
std::vector<int> elemList = eset.CopyItems();
3213+
FSElemSet* newset = new FSElemSet(this);
3214+
newset->add(elemList);
3215+
newset->SetName(eset.GetName());
3216+
AddFEElemSet(newset);
3217+
}
3218+
}
3219+
3220+
void FSMesh::CopyFESurfaces(FSMesh* pm)
3221+
{
3222+
for (int i = 0; i < pm->FESurfaces(); ++i)
3223+
{
3224+
FSSurface& surf = *pm->GetFESurface(i);
3225+
std::vector<int> faceList = surf.CopyItems();
3226+
FSSurface* newsurf = new FSSurface(this);
3227+
newsurf->add(faceList);
3228+
newsurf->SetName(surf.GetName());
3229+
AddFESurface(newsurf);
3230+
}
3231+
}

MeshLib/FEMesh.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,11 @@ class FSMesh : public FSCoreMesh
238238
int FindFaceIndex(FSFace& face);
239239

240240
public:
241+
// these functions attempt to map user selections from pm onto this mesh
242+
void MapFENodeSets(FSMesh* pm);
243+
void MapFEElemSets(FSMesh* pm);
244+
void MapFESurfaces(FSMesh* pm);
245+
241246
void CopyFENodeSets(FSMesh* pm);
242247
void CopyFEElemSets(FSMesh* pm);
243248
void CopyFESurfaces(FSMesh* pm);

MeshTools/FEAxesCurvature.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ void FEAxesCurvature::clearData()
7878
FSMesh* FEAxesCurvature::Apply(FSMesh* pm)
7979
{
8080
FSMesh* pnm = new FSMesh(*pm);
81+
pnm->CopyFENodeSets(pm);
82+
pnm->CopyFESurfaces(pm);
83+
pnm->CopyFEElemSets(pm);
8184

8285
bool apply = GetBoolValue(1);
8386
bool part = GetBoolValue(2);

MeshTools/FEExtrudeFaces.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,10 @@ FSMesh* FEExtrudeFaces::Apply(FSGroup* pg)
9494
FSMesh* pnm = new FSMesh(*pm);
9595
Extrude(pnm, faceList);
9696

97-
// let's copy lists
98-
pnm->CopyFENodeSets(pm);
99-
pnm->CopyFEElemSets(pm);
100-
pnm->CopyFESurfaces(pm);
97+
// let's try to map the user selections
98+
pnm->MapFENodeSets(pm);
99+
pnm->MapFEElemSets(pm);
100+
pnm->MapFESurfaces(pm);
101101

102102
return pnm;
103103
}

0 commit comments

Comments
 (0)