Skip to content

Commit cd267ca

Browse files
committed
Revert "- test new split"
This reverts commit d2265aa.
1 parent d2cf536 commit cd267ca

File tree

5 files changed

+8
-138
lines changed

5 files changed

+8
-138
lines changed

src/Core/Topo/CoFace.cpp

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,7 +1230,7 @@ split3(eDirOnCoFace dir, std::vector<Edge*>& edges1, std::vector<Edge*>& edges3,
12301230

12311231
}
12321232
/*----------------------------------------------------------------------------*/
1233-
std::vector<Edge*> CoFace::
1233+
void CoFace::
12341234
splitOgrid(eDirOnCoFace dir,
12351235
std::vector<Edge*>& edges0,
12361236
std::vector<Edge*>& edges1,
@@ -1270,8 +1270,6 @@ splitOgrid(eDirOnCoFace dir,
12701270
std::cout<<"edges1 disc en "<<edges1[0]->getNbMeshingEdges()<<" et "<<edges1[1]->getNbMeshingEdges()<<std::endl;
12711271
#endif
12721272

1273-
std::vector<Edge*> splitingEdges;
1274-
12751273
if (edges1.size() == 2){
12761274
// cas de la création de 3 faces en Ogrid
12771275

@@ -1474,9 +1472,6 @@ splitOgrid(eDirOnCoFace dir,
14741472
coface2->add(gr);
14751473
}
14761474

1477-
splitingEdges.push_back(newEdge0);
1478-
splitingEdges.push_back(newEdge1);
1479-
splitingEdges.push_back(newEdge2);
14801475

14811476
} else if (edges1.size() == 3){
14821477
// cas de la création de 4 faces en Ogrid
@@ -1696,17 +1691,10 @@ splitOgrid(eDirOnCoFace dir,
16961691
}
16971692

16981693

1699-
splitingEdges.push_back(newEdge1);
1700-
splitingEdges.push_back(newEdge2);
1701-
splitingEdges.push_back(newEdge3);
1702-
splitingEdges.push_back(newEdge4);
1703-
splitingEdges.push_back(newEdge5);
1704-
splitingEdges.push_back(newEdge6);
17051694
} // end else if (edges1.size() == 3)
17061695

17071696
// destruction de la face commune actuelle
17081697
free(icmd);
1709-
return splitingEdges;
17101698
}
17111699
/*----------------------------------------------------------------------------*/
17121700
uint CoFace::getNbVertices() const

src/Core/Topo/CommandSplitFaces.cpp

Lines changed: 3 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -318,85 +318,12 @@ internalExecute()
318318
throw TkUtil::Exception (TkUtil::UTF8String ("L'arête sélectionnée doit appartenir à l'une des faces topologiques", TkUtil::Charset::UTF_8));
319319

320320

321-
uint nb_faces_dep = m_cofaces.size();
322-
uint nb_faces_split = 0;
323-
324-
std::set<Vertex*> filtre_vertices;
325-
std::set<CoFace*> filtre_faces;
326-
327-
std::vector<Edge*> splitingEdges;
328-
329-
try {
330-
do {
331-
Vertex* sommet = 0;
332-
CoFace* coface = 0;
333-
334-
std::vector<Edge* > current_splitingEdge;
335-
std::vector<CoFace*> coface_vec;
336-
337-
if (nb_faces_split){
338-
339-
// recherche d'un bloc suivant avec une arête
340-
if(findFaceUnmarkedWithVertexMarked(filtre_faces, filtre_vertices, coface, sommet)) {
341-
coface_vec = {coface};
342-
343-
std::vector<CoEdge *> coedges;
344-
coface->getCoEdges(coedges);
345-
346-
CoEdge *coedge = 0;
347-
for (std::vector<Topo::CoEdge *>::iterator iter = coedges.begin();
348-
iter != coedges.end(); ++iter)
349-
if ((*iter)->find(sommet))
350-
coedge = *iter;
351-
352-
if (coedge->getVertex(0) == sommet)
353-
TopoHelper::splitFaces(coface_vec, coedge, 0, m_ratio_ogrid, false, false, current_splitingEdge,
354-
&getInfoCommand());
355-
else if (coedge->getVertex(1) == sommet)
356-
TopoHelper::splitFaces(coface_vec, coedge, 1, m_ratio_ogrid, false, false, current_splitingEdge,
357-
&getInfoCommand());
358-
359-
filtre_faces.insert(coface);
360-
}
361-
}
362-
else{
363-
std::vector<CoFace*> arete_cofaces;
364-
m_arete->getCoFaces(arete_cofaces);
365-
366-
for (std::vector<Topo::CoFace* >::iterator iter = arete_cofaces.begin();
367-
iter != arete_cofaces.end(); ++iter)
368-
if (std::find(m_cofaces.begin(), m_cofaces.end(),*iter) != m_cofaces.end())
369-
coface = *iter;
370-
371-
coface_vec = {coface};
372-
373-
TopoHelper::splitFaces(coface_vec, m_arete, m_ratio_dec, m_ratio_ogrid, false, false, current_splitingEdge, &getInfoCommand());
374-
375-
filtre_faces.insert(coface);
376-
}
377-
378-
nb_faces_split+=1;
379-
380-
for(auto e : current_splitingEdge){
381-
splitingEdges.push_back(e);
382-
filtre_vertices.insert(e->getVertex(0));
383-
filtre_vertices.insert(e->getVertex(1));
384-
}
385-
386-
} while (nb_faces_dep != nb_faces_split);
387-
}
388-
catch (const TkUtil::Exception& exc){
389-
throw TkUtil::Exception(exc);
390-
}
391-
392-
393-
394321
// les Edges qui coupent les faces en deux
395-
//std::vector<Edge* > splitingEdges;
322+
std::vector<Edge* > splitingEdges;
396323
// découpage des faces sans chercher à boucler
397-
//TopoHelper::splitFaces(m_cofaces, m_arete, m_ratio_dec, m_ratio_ogrid, false, false, splitingEdges, &getInfoCommand());
324+
TopoHelper::splitFaces(m_cofaces, m_arete, m_ratio_dec, m_ratio_ogrid, false, true, splitingEdges, &getInfoCommand());
398325

399-
// on replace les sommets en fonction de m_ratio_dec
326+
// on replace les sommets en fonction de m_ratio_dec
400327
if (!m_project_on_meshing_edges)
401328
for (uint i=0; i<splitingEdges.size(); i++){
402329
Edge* edge = splitingEdges[i];
@@ -483,30 +410,6 @@ internalExecute()
483410
log (TkUtil::TraceLog (message, TkUtil::Log::TRACE_1));
484411
}
485412
/*----------------------------------------------------------------------------*/
486-
bool CommandSplitFaces::
487-
findFaceUnmarkedWithVertexMarked(std::set<CoFace*>& filtre_faces,
488-
std::set<Vertex*>& filtre_vertices, CoFace* &face, Vertex* &noeud)
489-
{
490-
//std::cout<<"findBlockUnmarkedWithCoEdgeMarked ..."<<std::endl;
491-
for (std::vector<CoFace*>::iterator iter1 = m_cofaces.begin(); iter1 != m_cofaces.end(); ++iter1){
492-
// le bloc est-il marqué ?
493-
if (filtre_faces.find(*iter1) == filtre_faces.end()){
494-
CoFace* cf = *iter1;
495-
// possède-t-il une arête marquée ?
496-
std::vector<Vertex* > vertices;
497-
cf->getAllVertices(vertices);
498-
for (std::vector<Vertex*>::iterator iter2 = vertices.begin(); iter2 != vertices.end(); ++iter2){
499-
if (filtre_vertices.find(*iter2) != filtre_vertices.end()){
500-
noeud = *iter2;
501-
face = cf;
502-
return true;
503-
}
504-
}
505-
}
506-
}
507-
return false;
508-
}
509-
/*----------------------------------------------------------------------------*/
510413
void CommandSplitFaces::
511414
countNbCoEdgesByVertices(std::map<Topo::Vertex*, uint> &nb_coedges_by_vertex)
512415
{

src/Core/Topo/TopoHelper.cpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -804,10 +804,8 @@ void TopoHelper::splitFaces(std::vector<CoFace* > cofaces,
804804
else {
805805
// cas 2D
806806
edge_ar = 0;
807-
if (ind_edge_dep == 0)
808-
edge_ar = coface->getEdge(2);
809-
else if (ind_edge_dep == 2)
810-
edge_ar = coface->getEdge(0);
807+
if (ind_edge_dep != 1)
808+
reprendreCetteFace = true;
811809

812810
// on test pour détecter le cas d'une zone avec 1 seul sommet sur l'axe
813811
uint nb_sur_axe = 0;
@@ -859,7 +857,6 @@ void TopoHelper::splitFaces(std::vector<CoFace* > cofaces,
859857
InfoSplit* is = cofaceInfoSplit[coface->getUniqueId()];
860858

861859
if (is == 0){
862-
std::cout<<"name = "<<coface->getName()<<std::endl;
863860
if (coface->getNbEdges() == 3 && ind_edge_dep != 1 && !boucleDemandee){
864861
// cas où on arrive sur face dégénérée par un côté autre que celui qui fait face à la dégénérescence
865862
#ifdef _DEBUG_SPLIT
@@ -876,17 +873,6 @@ void TopoHelper::splitFaces(std::vector<CoFace* > cofaces,
876873
#ifdef _DEBUG_SPLIT
877874
std::cout<<" => nbMeshingEdges_edge = "<<nbMeshingEdges_edge<<std::endl;
878875
#endif
879-
is = new InfoSplit();
880-
is->dirCoFaceSplit = dirCoFaceSplit;
881-
is->coedge_dep.push_back(coedge_dep);
882-
is->edge_dep = edge_dep;
883-
is->coedge_ar.push_back(coedge_ar);
884-
is->edge_ar = edge_ar;
885-
is->nbMeshingEdges_dep.push_back(nbMeshingEdges_dep);
886-
is->nbMeshingEdges_ar.push_back(nbMeshingEdges_ar);
887-
888-
cofaceInfoSplit[coface->getUniqueId()] = is;
889-
id2coface[coface->getUniqueId()] = coface;
890876
}
891877
else {
892878
#ifdef _DEBUG_SPLIT
@@ -1458,7 +1444,7 @@ void TopoHelper::splitFaces(std::vector<CoFace* > cofaces,
14581444
Edge* oldEdge0 = coface->getEdge(0);
14591445
Edge* oldEdge2 = coface->getEdge(2);
14601446

1461-
std::vector<Edge*> newEdges = coface->splitOgrid((CoFace::eDirOnCoFace)is->dirCoFaceSplit,
1447+
coface->splitOgrid((CoFace::eDirOnCoFace)is->dirCoFaceSplit,
14621448
old2newEdges[oldEdge0],
14631449
newEdges_dep,
14641450
old2newEdges[oldEdge2],
@@ -1468,8 +1454,6 @@ void TopoHelper::splitFaces(std::vector<CoFace* > cofaces,
14681454
ratio_ogrid,
14691455
icmd);
14701456

1471-
splitingEdges.insert(splitingEdges.begin(), newEdges.begin(), newEdges.end());
1472-
14731457
// Destruction des arêtes inutiles (celles sans relation vers une CoFace)
14741458
if (oldEdge0->getNbCoFaces() == 0)
14751459
oldEdge0->free(icmd);

src/Core/protected/Topo/CoFace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ class CoFace : public TopoEntity {
203203
* Sont données les nouvelles arêtes et les sommets le long de la coupe
204204
*/
205205

206-
std::vector<Edge*> splitOgrid(eDirOnCoFace dir,
206+
void splitOgrid(eDirOnCoFace dir,
207207
std::vector<Edge*>& edges0,
208208
std::vector<Edge*>& edges1,
209209
std::vector<Edge*>& edges2,

src/Core/protected/Topo/CommandSplitFaces.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,6 @@ class CommandSplitFaces: public Topo::CommandEditTopo {
125125

126126
/// activation ou non de la projection des sommets créés sur la discrétisation initiale
127127
bool m_project_on_meshing_edges;
128-
129-
bool
130-
findFaceUnmarkedWithVertexMarked(std::set<CoFace *> &filtre_faces, std::set<Vertex *> &filtre_vertices,
131-
CoFace *&face,
132-
Vertex *&noeud);
133128
};
134129
/*----------------------------------------------------------------------------*/
135130
} // end namespace Topo

0 commit comments

Comments
 (0)