@@ -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- /* ----------------------------------------------------------------------------*/
510413void CommandSplitFaces::
511414countNbCoEdgesByVertices (std::map<Topo::Vertex*, uint> &nb_coedges_by_vertex)
512415{
0 commit comments